Moin,
ich seh hier gerade meinen Fehler nicht, vielleicht schubst mich mal jemand in die richtige Richtung.
Ich fülle eine ComboBox mit einem erstellten Objekt und addObject. Das und der Zugriff darauf funktionieren, so weit ich das sehe, einwandfrei.
Aber in meiner Routine zum Freigeben des Speichers beim Schließen des Formulars knallts... aber warum?
Das Objekt:
Code:
type
TGenericArticleModule = class
private
fCaption: string;
fBg_Nr: Integer;
property caption: string read fCaption;
property Bg_nr: Integer read fBg_Nr;
constructor Create(const caption: string; const bg_nr: Integer);
end;
Das Hinzufügen zur Combobox:
Code:
procedure TfGenericArticle.GetModules;
var
gaModule: TGenericArticleModule;
sAssemblyGroup: string;
iBg_nr: Integer;
begin
if q_Work.Active then
q_work.Close;
q_work.SQL.Text := sSql_GenericArticleModule;
q_work.Open;
while not q_work.Eof do
begin
sAssemblyGroup := q_work.FieldByName('assembly_group_description').AsString;
iBg_nr := q_work.fieldByname('bg_nr').AsInteger;
gaModule := TGenericArticleModule.Create(sAssemblyGroup, iBg_nr);
cb_module.Items.AddObject(sAssemblyGroup, gaModule);
q_work.Next;
end;
if q_work.Active then
q_work.Free;
end;
Und hier die Routine zum Freigeben des Speichers, wird beim Close des Formulars aufgerufen:
Code:
procedure TfGenericArticle.FreeObjects(targetList: Tstrings);
var
I: Integer;
begin
for I := targetList.Count - 1 downto 0 do
targetList.Objects[i].Free;
end;
procedure TfGenericArticle.FormCloseQuery(Sender: TObject; var CanClose: Boolean);
begin
FreeObjects(cb_module.Items); // Hier kommt die Zugriffsverletzung
end;
Für einen kleinen Tipp wär ich dankbar