Entwickler-Ecke

Sonstiges (Delphi) - Fehler "invalid pointer operation"


Dark-§hadow - Mo 08.10.07 21:29
Titel: Fehler "invalid pointer operation"
Hallo zusammen.
Ich habe gerade angefangen, ein werdenes Programm aufzusetzen. Ich arbeite das erste Mal mit dynamischen Arrays. Ich habe euch den Source und alles mal mit dazu gepackt.

Hoffe, dass bald jemand Zeit findet und dort mal ein Auge drauf wirft, ich denke nicht, dass es für euch weiter schwierig sein wird.


Narses - Mo 08.10.07 21:50

Moin!

Meinst du nicht, es reichte aus, uns die Fehlerstelle zu zeigen? :? Du gibst ja nichtmal eine (ausführliche) Fehlerbeschreibung oder eine Reproduktionsanleitung mit. :| Etwas "unhöflich", uns den Source hinzuklatschen und suchen zu lassen, hm? :shock:

cu
Narses


Sinspin - Mo 08.10.07 21:58


Delphi-Quelltext
1:
2:
3:
4:
5:
procedure TForm1.FormDestroy(Sender: TObject);
begin
  FreeMem(arr); // <-- und da ist der fehler denn auch schon!
  FreeMem(parr);
end;

Du brauchst ein dynamisches Array nicht frei zu geben. Das erledigt Delphi für dich. Wenn du unbedingt was schreiben willst dann tut es das:

Delphi-Quelltext
1:
2:
3:
4:
5:
procedure TForm1.FormDestroy(Sender: TObject);
begin
  Finalize(arr);
  Finalize(parr);
end;

Dein Quelltext sieht nicht so sonderlich toll aus. Ich würde sowas eher als Quähltext bezeichnen :wink:

@user profile iconNarses: Du hast recht. Ich denke mal, wenn du den Quelltext siehst, weist du auch warum es ist wies ist!


Dark-§hadow - Mo 08.10.07 21:58

Tut mir Leid, Narses ;_________________;

Also, ich starte des Programm...Klick auf den Button...


Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
procedure TForm1.Button1Click(Sender: TObject);

var
  Itemcounta, a :string;
  i  :integer;
begin
a:='';
Itemcounta :=Inputbox('Warenanzahl',
               'Bitte geben Sie die Anzahl der Waren an', Itemcounta);
Itemcount := StrtoInt (Itemcounta);
SetLength(arr, ItemCount);
SetLength(parr, ItemCount);
for i:=0 to Itemcount-1 do
begin
Arr[i]:=Inputbox(''+Inttostr(i+1)+'ter Wert',
             'Bitte geben Sie den '+Inttostr(i+1)+'ten Wert an',a);
parr[i]:=Copy(arr[i],
                                 Pos(',', arr[i]) +2,Pos(',', arr[i]) +2 );

end;
end;


will dann das Programm beenden (Button application.terminate), dann kommt der Fehler.
Wenn Narses noch weitere Fragen hat, sag bescheid :P

Moderiert von user profile iconNarses: Delphi-Tags hinzugefügt