![]() |
AW: Ungeheure Speichernutzung des TWebrowsers beim Laden einer XML
Hi,
Gute Neuigkeiten ! Ich habe die Browser-Komponente entfernt und wie von himitsu vorgeschlagen idHTTP genommen:
Delphi-Quellcode:
Die Ladezeit ist die selbe, aber diese Aktion "kostet" gerade mal 15MB !
function URLEncode(const ASrc: string): string;
var i: Integer; const UnsafeChars = ['*', '#', '%', '<', '>', ' ','[',']']; {do not localize} begin Result := ''; {Do not Localize} for i := 1 to Length(ASrc) do begin if (ASrc[i] in UnsafeChars) or (not (ord(ASrc[i])in [33..128])) then begin {do not localize} Result := Result + '%' + IntToHex(Ord(ASrc[i]), 2); {do not localize} end else begin Result := Result + ASrc[i]; end; end; end; procedure TForm4.Button1Click(Sender: TObject); var aStream: TMemoryStream; Params: TStringStream; begin button1.Caption:='please wait'; aStream := TMemoryStream.create; Params := TStringStream.create(''); try with IdHTTP1 do begin //Params.WriteString(URLEncode('user=' + Edit1.Text + '&')); //Params.WriteString(URLEncode('pass=' + Edit2.Text)); // You can change headers like this: Request.ContentType := 'application/x-www-form-urlencoded'; try Response.KeepAlive := False; Post('http://www.dragonlords.info/dev/big.xml', Params, aStream); except on E: Exception do showmessage('Error encountered during POST: ' + E.Message); end; end; aStream.WriteBuffer(#0' ', 1); aStream.Position := 0; Memo1.Lines.LoadFromStream(aStream); button1.Caption:='done'; except aStream.Free; Params.Free; end; end; |
AW: Ungeheure Speichernutzung des TWebrowsers beim Laden einer XML
Es kommt immer darauf an, was man machen will und welche Funktionen man nutzt.
Wenn man viele Knoten sequentiell verarbeiten will, dann wäre das Mittel der Wahl ein SAXParser/SAXWriter. Und wnen man die XML-Datei nur runterladen will, dann nimmt man natprlich nur eine "Download"-Komponente und nicht gleich einen kompletten Browser. |
AW: Ungeheure Speichernutzung des TWebrowsers beim Laden einer XML
Zitat:
Sherlock |
AW: Ungeheure Speichernutzung des TWebrowsers beim Laden einer XML
Zitat:
Mike |
AW: Ungeheure Speichernutzung des TWebrowsers beim Laden einer XML
Du Schelm, Du! Kannst doch nem alten Mann nicht so einen Schrecken einjagen.
Sherlock |
AW: Ungeheure Speichernutzung des TWebrowsers beim Laden einer XML
Hi nochmal,
Wie setzt man denn mit idHTTP einen Post Befehl mit mehreren Parametern ab ? Muss eigens dafür eine for - Schleife geschrieben werden um jeden Parameter einzeln:
Delphi-Quellcode:
zu encoden ?
Params.WriteString(URLEncode(KEY + VALUE + '&'));
Meine Parameter kommen in einer Zeile wie z.B. username=Rolf&pass=Geheim&Anzug=Gruen&Ort=SanktAug ustin Muss eine Prozedur geschrieben werden um die einzelnen Wertepaare zu ermitteln?
Delphi-Quellcode:
{++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
//submit_post +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++} Procedure submit_post(url_string,parameter:string;amemo:TMemo); var aStream: TMemoryStream; Params: TStringStream; begin aStream := TMemoryStream.create; Params := TStringStream.create(''); try with Fmain.IdHTTP1 do begin //Params.WriteString(URLEncode('user=' + Edit1.Text + '&')); //Params.WriteString(URLEncode('pass=' + Edit2.Text)); Request.ContentType := 'application/x-www-form-urlencoded'; try Response.KeepAlive := False; Post(url_string, Params, aStream); except on E: Exception do showmessage('Error encountered during POST: ' + E.Message); end; end; aStream.WriteBuffer(#0' ', 1); aStream.Position := 0; amemo.Lines.LoadFromStream(aStream); except aStream.Free; Params.Free; end; end; |
AW: Ungeheure Speichernutzung des TWebrowsers beim Laden einer XML
#11 ist "umständlich"...
Besser so:
Delphi-Quellcode:
procedure TForm4.Button2Click(Sender: TObject); //SAVE XML
var fs: TFileStream; XMLadress: String; begin fs := TFileStream.Create('D:\big.xml', fmCreate); XMLadress:='http://www.dragonlords.info/dev/big.xml'; try IdHTTP1.Get(XMLadress, fs); finally fs.Free; end; end; procedure TForm4.Button3Click(Sender: TObject); //LOAD XML begin Memo1.Lines.LoadFromFile('D:\big.xml'); end; |
AW: Ungeheure Speichernutzung des TWebrowsers beim Laden einer XML
Danke für deinen Beitrag hathor, aber ich bekomme die xml nur durch POST und einen Schwall an Parametern.
|
AW: Ungeheure Speichernutzung des TWebrowsers beim Laden einer XML
Zitat:
![]()
Delphi-Quellcode:
Den Zeichensatz sollte man vor dem Post auch noch setzen:
var
Server: TIdHttp; Parameters,Response: TStringStream; begin Response := TStringStream.Create; Parameters := TStringStream.Create('param1=Value1¶m2=عربي/عرب¶m3=Value3', TEncoding.UTF8); Server.Post('http://www.example.com/page.php', Parameters, Response); end;
Delphi-Quellcode:
Server.Request.Charset := 'utf-8';
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 10: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 by Thomas Breitkreuz