Hallo,
wenn ich eine
WSDL Datei importieren lasse (Delphi XE) entsteht hierbei folgender Quellcode:
Delphi-Quellcode:
function GetUserService(UseWSDL: Boolean; Addr:
string; HTTPRIO: THTTPRIO): UserService;
const
defWSDL = '
http://172.20.40.132/userservice?wsdl';
defURL = '
http://172.20.40.132/userservice';
defSvc = '
UserServiceService';
defPrt = '
UserServicePort';
var
RIO: THTTPRIO;
begin
Result :=
nil;
if (Addr = '
')
then
begin
if UseWSDL
then
Addr := defWSDL
else
Addr := defURL;
end;
if HTTPRIO =
nil then
RIO := THTTPRIO.Create(
nil)
else
RIO := HTTPRIO;
try
Result := (RIO
as UserService);
if UseWSDL
then
begin
RIO.WSDLLocation := Addr;
RIO.Service := defSvc;
RIO.Port := defPrt;
end else
RIO.URL := Addr;
finally
if (Result =
nil)
and (HTTPRIO =
nil)
then
RIO.Free;
end;
end;
Ein Aufruf dieser Funktion zieht unter anderem den Aufruf der Delphi-Funktion TWSDLLookup.Create nach sich.
Delphi-Quellcode:
constructor TWSDLLookup.Create;
begin
FLookup := TDictionary<string, Variant>.Create;
end;
Die Variable "FLookup" wird an keinem Ort von Delphi mehr freigegeben. Im Destroy-Part der Klasse steht:
Delphi-Quellcode:
destructor TWSDLLookup.Destroy;
begin
ClearWSDLLookup;
inherited;
end;
procedure TWSDLLookup.ClearWSDLLookup;
begin
FLookup.Clear;
end;
FastMM sagt mir, dass diese Variable nicht mehr freigeben wird. Wenn ich die
Unit direkt ändere, wird die Änderung nicht in mein Programm übernommen.
Wie kann ich weiter vorgehen?
Viele Grüße,
Martin