Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Загрузка стримом

330
09 декабря 2007 года
kastron
215 / / 17.09.2006
Здравствуйте.У меня такая проблемка.
Имеется листбокс,в нем адреса страниц в интернете.
При нажатии на кнопку нужно пройтись по списку и по очереди загрузить в memo указанную страницу.

Код:
var
sk:Tstream;
begin
 for i:=0 to htmllist.Count-1 do
begin
  application.ProcessMessages;
  htmllist.ItemIndex:=i;
  sk:=Tstream.Create;
  sk := Download2Stream(htmllist.Items.Strings);
if sk <> nil then
  sk.position := 0;
  dtext.Lines.LoadFromStream(sk);
  sk.Free;
end;
end;


Код:
function Download2Stream(const URL: WideString): TStream;
var
  dwBytesRead: DWORD;
  hService: HINTERNET;
  hSession: HINTERNET;
  lpBuffer: array[0..1024 + 1] of Char;
begin
  Result := nil;
  hSession := InternetOpenW('AIMP2', INTERNET_OPEN_TYPE_PRECONFIG, nil, nil, 0);
  try
    if Assigned(hSession) then
    begin
      hService := InternetOpenUrlW(hSession, PWideChar(URL), nil, 0, 0, 0);
      if Assigned(hService) then
        try
          Result := TMemoryStream.Create;
           while True do
            begin
               dwBytesRead := 1024;
               InternetReadFile(hService, @lpBuffer, 1024, dwBytesRead);
               if dwBytesRead = 0 then break;
               Result.Write(lpBuffer, dwBytesRead);
            end;
        finally
          InternetCloseHandle(hService);
        end;
    end;
  finally
    InternetCloseHandle(hSession);
  end;
end;


Проблема в том,что прога вылетает на sk.free;
Помогите решить проблему пожалуйста
С уважением.
20K
09 декабря 2007 года
yager84
37 / / 15.05.2007
Не уверен, но...

 
Код:
function Download2Stream(const URL: WideString): TStream;
{----------------------------------------------------------}
          Result := TMemoryStream.Create;
{----------------------------------------------------------}
end;


Если процедура компилится с предупреждениями, то стоит попробовать так...

 
Код:
function Download2Stream(const URL: WideString): TStream;
var
  TempMemStream: TMemoryStream;
begin
{----------------------------------------------------------}
  TempMemStream:= TMemoryStream.Create;
{----------------------------------------------------------}
  TempMemStream.SaveToStream(Result);
{----------------------------------------------------------}


Прочерком обозначен остальной код.
330
09 декабря 2007 года
kastron
215 / / 17.09.2006
yager84,Попробовал как ты предложил
Не получается:((((((((((((((
Прога уже не вылетает,цикл проходится по списку но в memo ничего не грузит
Помогите кто-нибудь решить проблему
С уважением...
20K
10 декабря 2007 года
yager84
37 / / 15.05.2007
Цитата: kastron
Проблема в том,что прога вылетает на sk.free;


Вы просили об этом, собсно...
Вылетало потому, что TStream не есть TMemoryStream.

Цитата: kastron
yager84,Попробовал как ты предложил
Не получается:((((((((((((((
Прога уже не вылетает,цикл проходится по списку но в memo ничего не грузит
Помогите кто-нибудь решить проблему
С уважением...



Извините, а нельзя использовать компонент, более подходящий для загрузки страницы, нежеди TMemo. Или может я не понял сути вопроса?

Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог