Avatar billede athlon-pascal Juniormester
07. november 2003 - 13:01 Der er 1 kommentar og
1 løsning

Indy's TIdHTTP og websider med #0 (null-tegnet)

Jeg henter koden til nogle websider med funktionen IdHTTP.Get(AURL: string): string; i Indy-komponenen TIdHTTP.

Mit problem er bare, at der på en af siderne er et null-tegn (#0) ret tidligt i koden.
Når jeg henter denne sides kode, får jeg kun koden indtil null-tegnet...

Jeg går ud fra, at det har noget med PChar at gøre, men hvad er løsningen?

Det drejer sig om denne side:
http://www.hostedstuff.com/services/forum/?id=1903&group=8&thread=10703

Jeg bruger Delphi 7 Personal under Windows XP Prof.

På forhånd tak :-)
Avatar billede dkn Nybegynder
07. november 2003 - 15:38 #1
en metode:


procedure TForm1.Button1Click(Sender: TObject);
var
  str              : string;
  i                : integer;
begin
  str := idhttp1.Get('http://www.hostedstuff.com/services/forum/?id=1903&group=8&thread=10703');

  for I := 1 to length(str) do
    if str[I] = #0 then
      str[I] := #255;

  memo1.Text := str;
end;
Avatar billede athlon-pascal Juniormester
07. november 2003 - 16:03 #2
Tak, du inspirrerede mig:

function TForm1.GetString(URL: String): String;
var
  MemStream: TMemoryStream;
  C: Char;
begin
  Result := '';
  MemStream := TMemoryStream.Create;
  try
    IdHTTP1.Get(URL, MemStream);
    MemStream.Position := 0;
    while MemStream.Position < MemStream.Size do
    begin
      MemStream.Read(C, 1);
      if C > #0 then
        Result := Result + C;
    end;
  finally
    FreeAndNil(MemStream);
  end;
end;
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester