Einzelnen Beitrag anzeigen

PASST

Registriert seit: 30. Mär 2005
Ort: Krefeld
325 Beiträge
 
Delphi 7 Enterprise
 
#1

Dispose -> ungültige Zeigeroperation

  Alt 26. Mär 2008, 16:17
Hallo allerseits,

nachdem ich ein Programm von Delphi4 auf Delphi7 umgestellt (neu compiliert) habe, erhalte ich beim Dispose eine Exception der Klasse EInvalidPointer 'Ungültige Zeigeroperation'.

Ich verwende den Pointer, um in einer Combobox zu jedem Eintrag einen zweiten Wert speichern zu können.

Delphi-Quellcode:
// Data record
type
  TCodeRecord = Record
    Code: String;
  end;
  // Pointer to data record
  PLngMix = ^TCodeRecord;
  PArtikel = ^TCodeRecord;
  PLieferant = ^TCodeRecord;
  PSorte = ^TCodeRecord;

[...]

// Hier fülle ich die ComboBox, im Augenblick mit 18 Einträgen
    cboxArtikel.Items.clear;
    cboxArtikel.Text := '';
    new(Artikel);
    while not eof do
    begin
      If fieldbyname('PLUNR').asstring = 'then
        Artikel^.Code := ' '
      else
        Artikel^.Code := fieldbyname('PLUNR').asstring;
      cboxArtikel.Items.AddObject(fieldbyname('NAME').asstring, TObject(Artikel));
      next;
    end;
    close;

// Hier leere ich die ComboBox vom letzten bis zum ersten Eintrag wieder
// Der letzte 17. Eintrag lässt sich löschen,
// aber beim nächsten 16. Eintrag erhalte ich die Exception
  if cboxArtikel.Items.Count > 0 then
    for i := cboxArtikel.Items.Count - 1 downto 0 do
      Dispose(PArtikel(cboxArtikel.Items.Objects[i]));
Kann mir jemand helfen?

Gruß
Peter
  Mit Zitat antworten Zitat