![]() |
Zugriffsverletzung. Doch warum ?
Delphi-Quellcode:
Ich bekomme bei .ResetClick und bei Form1.OnDestroy.
procedure TForm1.StartClick(Sender: TObject);
var i,k: Integer; begin k:= SpinEdit1.value; Setlength(Balken,k); For i:= low(Balken)+1 to high(balken)+1 do begin Balken[i]:=TBalken.Create(); Balken[i].Create; Balken[i].Wert:=Random(50)+1; Memo1.Lines.Add(IntToStr(i)+'. '+IntToStr(Balken[i].wert)); end; Canvas.Create; Form1.PaintBox1Paint(Start); SpinEdit1.Enabled:=false; Start.Enabled:=false; end; procedure TForm1.FormDestroy(Sender: TObject); var i: Integer; begin For i:= 1 to high(Balken) do Balken[i].Free; end; procedure TForm1.ResetClick(Sender: TObject); var i: Integer; begin PaintBox1.Invalidate; Start.Enabled:=True; SpinEdit1.Enabled:=True; For i:= 1 to high(balken) do begin Balken[i].free; end; end; end. Beides mal geht es nicht (zugriffsverletzung) Was mache ich denn falsch? LG |
AW: Zugriffsverletzung. Doch warum ?
low(Balken)+1 to high(balken)+1
lass die +1 weg uppss da sind noch mehr bugs drin Canvas.Create; erzeugt bei jedem Click auf Start neue Fonts, Pens und Brushes und macht so sicher nichts sinnvolles
Delphi-Quellcode:
Procedure TForm1.FreeBalken;
var i: Integer; begin // wenn es eine Liste und kein Array ist rückwärts löschen For i:= high(Balken) downto low(Balken) do Balken[i].Free; end; procedure TForm1.FormDestroy(Sender: TObject); begin FreeBalken; end; procedure TForm1.ResetClick(Sender: TObject); var i: Integer; begin PaintBox1.Invalidate; Start.Enabled:=True; FreeBalken; end; |
AW: Zugriffsverletzung. Doch warum ?
Zitat:
Ich muss mich echt nochmal in die Arrays einlesen. Grundlage >.< Peinlich :S
Delphi-Quellcode:
procedure TForm1.BubbleSortClick(Sender: TObject);
var i: Integer; done: boolean; temp: integer; begin repeat done:= True; For i:= 1 to high(Balken) do begin If Balken[i].Wert > Balken[i+1].Wert then begin temp := Balken[i].wert; Balken[i].Wert := Balken[i+1].Wert; Balken[i+1].Wert := temp; done := false; end; end; until done; Memo1.Lines.clear; For i:= 1 to high(Balken) do Memo1.Lines.add(IntToStr(Balken[i].wert)); Form1.PaintBox1.Invalidate; Form1.PaintBox1Paint(BubbleSort); end; |
AW: Zugriffsverletzung. Doch warum ?
Delphi-Quellcode:
repeat
done:= True; For i:= 1 to high(Balken) do begin If Balken[i-1] > Balken[i].Wert then begin temp := Balken[i-1].Wert; Balken[i-1].Wert := Balken[i].Wert; Balken[i].Wert := temp; done := false; end; end; until done; |
AW: Zugriffsverletzung. Doch warum ?
Danke jetzt funktioniert alles ! :D
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 00:52 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz