Отправляет email-рассылки с помощью сервиса Sendsay
  Все выпуски  

RFpro.ru: Программирование на C / C++


Хостинг портала RFpro.ru:
Московский хостер
Профессиональный ХОСТИНГ на базе Linux x64 и Windows x64

РАССЫЛКИ ПОРТАЛА RFPRO.RU

Чемпионы рейтинга экспертов в этой рассылке

Гаряка Асмик
Статус: Профессионал
Рейтинг: 4521
∙ повысить рейтинг »
Boriss
Статус: Академик
Рейтинг: 2458
∙ повысить рейтинг »
Абаянцев Юрий Леонидович aka Ayl
Статус: Профессионал
Рейтинг: 1982
∙ повысить рейтинг »

/ КОМПЬЮТЕРЫ И ПО / Программирование / C/C++

Номер выпуска:1563
Дата выхода:29.08.2010, 12:30
Администратор рассылки:Verena, Профессионал
Подписчиков / экспертов:352 / 165
Вопросов / ответов:1 / 1
IRC-канал по теме:#C

Вопрос № 179772: Здравствуйте, уважаемые эксперты! Я пишу в Visual Studio 2008, MFC. Помогите пожалуйста, как мне загрузить txt файл из интернета (например http://mysite.ru/123.txt) в переменную CString? Нужен по возможности самый быстрый способ, чтобы можно...



Вопрос № 179772:

Здравствуйте, уважаемые эксперты!
Я пишу в Visual Studio 2008, MFC.
Помогите пожалуйста, как мне загрузить txt файл из интернета (например http://mysite.ru/123.txt) в переменную CString?
Нужен по возможности самый быстрый способ, чтобы можно было загружать несколько раз в секунду.

Отправлен: 24.08.2010, 12:02
Вопрос задал: Иванов Роман Витальевич, Посетитель
Всего ответов: 1
Страница вопроса »


Отвечает Evgenijm, 10-й класс :
Здравствуйте, Иванов Роман Витальевич.

Вот, как и обговорили в минифоруме, пример кода на C#. Здесь 2 функции:
GetTextFile возвращает весь текст в одной строке. Быстро, но не подходит для больших файлов и оставляет переносы строк без изменения. Юниксовые переносы в текстбоксе не обрабатываются.
GetTextStrings читает файл построчно. При этом юниксовые переносы распознаются тоже. Для обработки файла обычно используется такой код.
Как видно, у Экслера есть оба типа переносов.

Для примера добавьте на форму 2 кнопки и текстбокс. Щелкните 2 раза по обеим кнопкам, а потом замените код формы на нижеследующий. Установка свойств в конструкторе только для примера, это все легко делается в редакторе формы. Первая кнопка загружает файл целиком, а вторая - построчно.

Код:
using System;
using System.Text;
using System.Windows.Forms;
using System.Net;
using System.IO;
using System.Collections.Generic;


namespace WindowsFormsApplication1
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
button1.Dock = DockStyle.Bottom;
button2.Dock = DockStyle.Bottom;

textBox1.Multiline = true;
textBox1.Dock = DockStyle.Fill;
textBox1.WordWrap = false;
textBox1.ScrollBars = ScrollBars.Both;
}

private void button1_Click(object sender, EventArgs e)
{
textBox1.Text = GetTextFile("http://exler.ru", Encoding.GetEncoding("Windows-1251"));
}

//Возвращаем текст целиком
private static String GetTextFile(String Link, Encoding Encoding)
{
WebRequest Request = WebRequest.Create(Link);
WebResponse Response = Request.GetResponse();
StreamReader SR = new StreamReader(Response.GetResponseStream(), Encoding);
return SR.ReadToEnd();
}

private void button2_Click(object sender, EventArgs e)
{
List<String> Strings = GetTextStrings("http://exler.ru", Encoding.GetEncoding("Windows-1251"));
textBox1.Lines = Strings.ToArray();
}

//Возвращаем список строк
private static List<String> GetTextStrings(String Link, Encoding Encoding)
{
WebRequest Request = WebRequest.Create(Link);
WebResponse Response = Request.GetResponse();
StreamReader SR = new StreamReader(Response.GetResponseStream(), Encoding) ;

List<String> Strings = new List<String>();
String S;
while ((S = SR.ReadLine()) != null)
Strings.Add(S);

return Strings;
}
}
}

Ответ отправил: Evgenijm, 10-й класс
Ответ отправлен: 26.08.2010, 13:57
Номер ответа: 262888

Оценка ответа: 5

Вам помог ответ? Пожалуйста, поблагодарите эксперта за это!
Как сказать этому эксперту "спасибо"?
  • Отправить SMS #thank 262888 на номер 1151 (Россия) | Еще номера »
  • Отправить WebMoney:

  • Оценить выпуск »
    Нам очень важно Ваше мнение об этом выпуске рассылки!

    Задать вопрос экспертам этой рассылки »

    Скажите "спасибо" эксперту, который помог Вам!

    Отправьте СМС-сообщение с тестом #thank НОМЕР_ОТВЕТА
    на короткий номер 1151 (Россия)

    Номер ответа и конкретный текст СМС указан внизу каждого ответа.

    Полный список номеров »

    * Стоимость одного СМС-сообщения от 7.15 руб. и зависит от оператора сотовой связи. (полный список тарифов)
    ** При ошибочном вводе номера ответа или текста #thank услуга считается оказанной, денежные средства не возвращаются.
    *** Сумма выплаты эксперту-автору ответа расчитывается из суммы перечислений на портал от биллинговой компании.


    © 2001-2010, Портал RFpro.ru, Россия
    Авторское право: ООО "Мастер-Эксперт Про"
    Автор: Калашников О.А. | Программирование: Гладенюк А.Г.
    Хостинг: Компания "Московский хостер"
    Версия системы: 2010.6.17 от 28.08.2010

    В избранное