Hallo Garfield,
ich teste gerade deine Komponente mit XE7 und muß feststellen, daß dabei ein paar Löcher im Speicher zurückbleiben:
An unexpected memory leak has occurred. The unexpected small block leaks are:
85 - 92 bytes: TStringList x 8
Meine Recherche ergab, daß fReceived daran schuld ist: Diese Stringliste wird in Zeile 2406 erzeugt, aber nicht wieder freigegeben:
Delphi-Quellcode:
constructor THTTPRequest.create;
{*******************************************************************************
* -1- Klasse erstellen.
}
begin
inherited;
fContent := '
';
fReceived := TStringList.Create;
fPort := 80;
fHTTPSend.Method := '
GET';
fHTTPSend.FileURL := '
';
fHTTPSend.Hostname := '
';
fHTTPSend.Accept := '
*/*';
fHTTPSend.ContentType := '
text/html, text/xml';
fHTTPSend.ContentLength := 0;
fHTTPSend.Soap.Namespace := '
';
fHTTPSend.Soap.Request := '
';
FillChar(fHTTPRcvd, SizeOf(fHTTPRcvd), 0);
end;
Durch Einfügen einer Zeile in die Destroy-Methode der Klasse THTTPRequest konnte der Fehler behoben werden:
Delphi-Quellcode:
{$IfDef DELPHI}
destructor THTTPRequest.destroy;
{*******************************************************************************
* -1- Klasse freigeben.
}
begin
if Assigned(fReceived) Then fReceived.Free; // meine Ergänzung
inherited;
end;
{$EndIf}