![]() |
Delphi Wert von Variable
Hallo ihr,
ich programmiere in Delphi 2007 und habe da heute ein extrem komisches Phänomen festgestellt. Hier nun erstmal der Quellcode oben in der Klassendeklaration:
Delphi-Quellcode:
private abstaendeHorizontal : array[0..10] of array[0..1] of integer
Delphi-Quellcode:
procedure TEinwirkungenSkizze.zeichneHorizontaleBemassung;
var x: integer; vertauscht: boolean; sortiertesArray: array[0..10] of array[0..1] of integer; temp: array[0..1] of integer; positionY: integer; positionX: integer; anzahlBemassungen: integer; bla :integer; begin // zeichnet die masslinien die horizontal verlaufen //zuerst array sortieren // array[laufendeNUmmer][0]= wert // array[laufendeNUmmer][1]=was fuer eine bemassung vertauscht := false; anzahlBemassungen:=0; bla:=0; for x := 0 to length(abstaendeHorizontal) do begin sortiertesArray[x][0] := abstaendeHorizontal[x][0]; sortiertesArray[x][1] := abstaendeHorizontal[x][1]; if (sortiertesArray[x][0] <> 0) then begin anzahlBemassungen := anzahlBemassungen + 1; // inc(bla); end; end; repeat vertauscht :=false; for x := 0 to length(sortiertesArray)-1 do begin if(sortiertesArray[x][0] > sortiertesArray[x+1][0]) then begin vertauscht:=true; temp[0]:=sortiertesArray[x][0]; temp[1]:=sortiertesArray[x][1]; sortiertesArray[x][0]:=sortiertesArray[x+1][0]; sortiertesArray[x][1]:=sortiertesArray[x+1][1]; sortiertesArray[x+1][0]:=temp[0]; sortiertesArray[x+1][1]:=temp[1]; end; end; until (vertauscht=false); // bemasungslinien zeichenn positionY := breiteGrundriss + ABSTAND_BEMASSUNG_ZU_ZEICHNUNG; positionX := STARTPUNKT_X - (schnabelLaenge - FA_3); adapter.moveTo(positionX, positionY); //linie bis ganz nach unten ziehen adapter.lineTo(positionX, (positionY + (ABSTAND_ZWISCHEN_BEMASSUNG * anzahlBemassungen))); end; So wenn mann nun bei der letzten Zeile:
Delphi-Quellcode:
einen Haltepunkt setzt hat bla einen Wert von 25700. Bevor ich das bla da einegfügt habe hatte anzahlBemassungen diesen Wert. Wenn ich bla auf Klassenebene deklariere dann hat ebenfalls anzahlBemassungen den Wert 25700.
adapter.lineTo(positionX, (positionY + (ABSTAND_ZWISCHEN_BEMASSUNG * anzahlBemassungen)));
Habt ihr eine Idee was da falsch ist? |
AW: Delphi Wert von Variable
Beim der ersten Schleife fehlt ein "-1"
Delphi-Quellcode:
.
for x := 0 to length(abstaendeHorizontal) -1 do begin
bei der zweiten Schleife hast Du es nicht vergessen. PS: Während der Entwicklungsphase in Projekt -> Optionen -> Laufzeitfehler: Bereichsprüfung und Überlaufprüfung einschalten. Es wird quasi im benachbarten Speicher des Array geschrieben, der zufällig nicht protected ist, weil er zu anderen Variablen gehört. So was gibt oft schwer zu findende Fehler, weil der Sideeffekt an ganz anderer Stelle auftritt. |
AW: Delphi Wert von Variable
man muß nicht mal außerhalb des Bereiches lesen, es langt wenn eine Stelle nicht beschrieben wurde, Stackvariablen sind nicht initialisiert.
Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
var sortiertesArray: array[0..10] of array[0..1] of integer; i:Integer; begin for I := 0 to 10 do begin Memo1.Lines.Add(IntToStr(sortiertesArray[i][0])) end; end; |
AW: Delphi Wert von Variable
Danke für eure Antworten :-)
Wie ihr schon geschrieben habt. Bei der ersten Schleife fehlte das -1 und bei der zweiten muss das -1 ne -2 sein. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 17:44 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