Hallo!
Du solltest Deine Objekte grundsätzlich nicht über Destroy sondern über Free zerstören. Free gibt nämlich auch den Speicher wieder frei.
Außerdem hast Du StrGr_Aenderung nicht zerstört.
Anbei nochmal Dein Code, mit Free. Ich habe außerdem das try-finally-Konstruct umgebaut, damit auch wirklich alles freigegeben wird.
Delphi-Quellcode:
library Aenderungsinfo;
uses
ShareMem,
SysUtils,
Dialogs,
StdCtrls,
Forms,
Classes,
Grids,
kbmMemTable,
uSOAPClient,
QGraphics,
Controls;
{$R *.res}
procedure benutzerdetails_anzeigen(provider,eindeutiges_feld,aktueller_eintrag,aktueller_eintrag_detail:string);stdcall; export;
var
Form1:TForm;
StrGr_Aenderung:TStringgrid;
SoapManager:TSoapManager;
SMT_Table:TSoapMemTable;
begin
Form1:=TForm.Create(nil);
SoapManager:=TSoapManager.Create(nil);
SMT_Table:=TSoapMemTable.Create(nil);
StrGr_Aenderung:=TStringgrid.Create(nil);
try
Form1.Caption:='Datensatzdetails: '+aktueller_eintrag+' - '+aktueller_eintrag_detail;
Form1.Position:=poScreenCenter;
Form1.BorderStyle:=bsdialog;
SoapManager.Active:=True;
SMT_Table.SOAPManager:=SoapManager;
SMT_Table.ProviderName:=provider;
SMT_Table.Active:=True;
SMT_Table.Filtered:=True;
SMT_Table.Filter:=eindeutiges_feld+'='''+aktueller_eintrag+'''';
SMT_Table.Refresh;
Form1.Height:=80;
Form1.Width:=410;
with StrGr_Aenderung do
begin
Parent:=Form1;
DefaultRowHeight:=20;
Align:=alClient;
if Form1.Height - Form1.ClientHeight > 28 then Form1.ClientHeight:=40 else Form1.ClientHeight:=45;//Form1.ClientHeight - (ClientHeight - Height);
Form1.Width:=410;
ColCount:=4;
ColWidths[1]:=110;
ColWidths[2]:=100;
ColWidths[3]:=110;
ColWidths[0]:=Width - ColWidths[1] - ColWidths[2] - ColWidths[3] - 7;
RowCount:=2;
FixedCols:=0;
Cells[0,0]:=' Anlage von:';
Cells[1,0]:=' Anlagedatum:';
Cells[2,0]:=' Änderung von:';
Cells[3,0]:=' Änderungsdatum:';
Cells[0,1]:=SMT_Table.FieldbyName('benutzer_neu').asstring;
Cells[1,1]:=SMT_Table.FieldbyName('datum_neu').asstring;
Cells[2,1]:=SMT_Table.FieldbyName('benutzer_aend').asstring;
Cells[3,1]:=SMT_Table.FieldbyName('datum_aend').asstring;
StrGr_Aenderung.Options:= [goFixedHorzLine, goFixedVertLine, goHorzLine, goVertLine];
end;
Form1.Update;
Form1.ShowModal;
finally
StrGr_Aenderung.Free; // fehlte ganz
SMT_Table.Free;
SoapManager.Free;
Form1.Free;
end;
end;
exports
benutzerdetails_anzeigen;
Code ist ungetestet, da mir einige Units fehlen.
Hope it helps
onlinekater