![]() |
Eine Webseite laden mit Indy
Sorry, bin eher noch Delphi-Anfänger...
Ich möchte einfach nur eine Webseite laden und habe folgenden Code:
Delphi-Quellcode:
Das Problem ist, dass es bei manchen Seiten funktioniert und mir den Quelltext schön zurückgibt.
function TSDIAppForm.ReadSite(URI: string): string;
var idClient: TIdHTTP; msData: TMemoryStream; ResultString: String; begin begin idClient := TIdHTTP.Create(Application); msData := TMemoryStream.Create; try idClient.Get(URI, msData); msData.Seek(0, soFromBeginning); ResultString := StreamToString(msData); except //nix end; idClient.Free; msData.Free; result := ResultString; end; end; Nur bei Seiten wie Google.de oder ähnlichen wirft mir Delphi eine Exception mit der Klasse ERangeError mit der Meldung "Range check error" aus und bleibt in der Zeile
Delphi-Quellcode:
hängen. Was kann ich tun, um das zu verhindern? Im Web habe ich nichts dazu gefunden...
msData.Seek(0, soFromBeginning);
|
Re: Eine Webseite laden mit Indy
Zitat:
Meine :glaskugel: hätte da noch 'nen Verdacht: Wie sieht denn dein StreamToString aus?
Delphi-Quellcode:
Wieso nix?
except
//nix end; |
Re: Eine Webseite laden mit Indy
Ich wollte, dass er die Exception ignoriert. Funktioniert auch, wenn ich die .exe von Hand starte.
StreamToString ist folgende:
Delphi-Quellcode:
Scheint zu funktionieren...
Function TSDIAppForm.StreamToString(AStream: TStream): String;
Begin SetLength(Result, AStream.Size); AStream.Position := 0; AStream.ReadBuffer(Result[1], AStream.Size); End; |
Re: Eine Webseite laden mit Indy
Hi,
es gibt auch neine Überladung von TIdHTTP.Get, welche dir den String direkt zurückliefert. Und verwende mal try-finally. Gruß FAlter |
Re: Eine Webseite laden mit Indy
Zitat:
Ab D2009 wird es Probleme geben (das nette Unicode halt). Zitat:
|
Re: Eine Webseite laden mit Indy
Ich verwende Delphi 2007.
Die Überladung scheint's bei mir nicht zu geben. Ich kann nur die mit dem Stream finden... Das mit dem finally hatte ich schon, so habe ich neulich die Funktion übernommen. Macht aber leider keinen Unterschied. Kann ich denn nichts mehr tun? |
Re: Eine Webseite laden mit Indy
.. kann es sein, dass Du bei redirected Seiten
kein Ergebnis bekommst? Wenn das der Fall sein sollte,
Delphi-Quellcode:
Grüße
idHttp1.HandleRedirects := true;
Klaus |
Re: Eine Webseite laden mit Indy
Zitat:
|
Re: Eine Webseite laden mit Indy
Das klingt doch etwas ungenau für einen Anfänger. Kannst du das etwas ausführen?
Ganz nebenbei: Wie kann ich einen String auf eine bestimmte Länge "padden". Also wenn ich jetzt eine bestimmte Anzahl von Leerzeichen kreiiren wollte, wie heisst da die funktion? |
Re: Eine Webseite laden mit Indy
Zitat:
Ganz nebenbei: eine Frage pro Thread ("auf bestimmte Länge" = ![]() ![]() |
Alle Zeitangaben in WEZ +1. Es ist jetzt 22:46 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz