2011-04-08 2 views
2

나는 인디에게 문제가 생기기 시작했다. 이상한 이유로이 아주 기본적인 절차조차도 작동하지 않습니다.TIdHTTP.Get 후에 LoadFromStream에 아무 것도 표시되지 않는 이유는 무엇입니까?

procedure TForm1.Button1Click(Sender: TObject); 
var ID: TIdHTTP; 
    ms: TMemoryStream; 
begin 
    ID:=TIdHTTP.Create(); 
    ms:=TMemoryStream.Create; 

    ID.HandleRedirects:=true; 

    ID.Get('http://www.google.com',ms); 
    Memo1.Lines.LoadFromStream(ms); 
end; 

Memo1에 아무 것도 추가되지 않습니다. SizeOf (ms)는 4를 반환합니다.

심지어 Indy를 재설치했습니다. 내 프로젝트는 전에는 분명히 작동했지만 지금은 아무 페이지에서나 다운로드하지 않습니다. 나는 무엇이 문제인지 궁금하다.

+0

'TIdHTTP.Create()'가 컴파일되지 않기 때문에 이것은 실제 코드가 아닙니다. 코드에 문제가있는 경우 실제 코드를 게시하십시오. 사용자가 작성한 코드가 아닌 가까운 코드를 게시하십시오. –

+0

@ ken이 코드를 테스트하면 작동합니다 !! 및 ms.Position : = 0; 문제를 풀다. – Najem

+0

죄송합니다 - 실수. 그것은 'TIdInitializerComponent'에서 매개 변수를 받아들이지 않는 오버 라이딩 된 생성자를 가지고 있습니다. 다행히 문제가 해결되었습니다. –

답변

13

Memo1.Lines.LoadFromStream(ms); 

전에

MS.Position := 0; 

호출하려고 스트림의 크기가 홀수 그래서

ShowMessage('size of stream = ' + IntToStr(ms.size) + ' bytes'); 
0

처럼 "크기"속성을 호출하여 발견 할 수있다, 이전에 비슷한 코드가 사용되었다고 가정하면 해당 코드가 작동해야합니다.

는 미안하지만, 내가 물어이 :

  1. 당신은 확인했다고 브라우저 내에서 바로 그 동일한 사용자 계정의 작품에서 바로 그 동일한 시스템에서 바로 그 같은 URL에 액세스? IE뿐만 아니라 타사 브라우저를 사용해보십시오. Indy가 WinHTTP를 사용하는지 여부는 알 수 없지만 WinHTTP 또는 BHO와 같은 WinHTTP에 영향을 미치는 문제는 IE에는 영향을 미치지 만 Firefox, Chrome 또는 Opera에는 영향을 미치지 않습니다.

  2. 바이러스 백신 시스템 및/또는 방화벽을 끄려고 했습니까? (기본 제공 방화벽을 사용해야합니까?) 많은 바이러스 백신 패키지에는 실시간 네트워크 트래픽 검색을위한 Winsock LSP 또는 NDIS 인터셉터가 포함되어있어 간섭 할 수 있습니다.

  3. 마지막으로, 그 중 하나라도 실패하면 Windows 포트가 wget 또는 인 매우 동일한 URL을 가져 와서 다른 비 브라우저 HTTP 클라이언트에서도 문제가 발생하는지 확인할 수 있습니까?

+2

으로 표시해야합니다. 코드가 제대로 작동하지 않습니다. - LoadFromStream이 현재 위치에서 시작됩니다. –

+1

MemoryStream.Position에 문제가 있습니다. 나는 이미 하나의 프로젝트를 진행하고 있지만,이 코드 부분을 단순히 관측하고 싶습니다. –

관련 문제