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