Einzelnen Beitrag anzeigen

stifflersmom

Registriert seit: 8. Dez 2005
Ort: 24994 Holt
380 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#1

Zugriffsverletzung beim Freigeben von Objekten

  Alt 20. Feb 2018, 09:33
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
  Mit Zitat antworten Zitat