![]() |
Zugriffsverletzung??
Hallo!
Ich habe ein Problem. Ich programmiere gerade ein Spiel, in dem eine Spielfigur Sterne einsammeln muss. Für die Sterne habe ich eine Klasse aufgemacht: TStar.
Code:
Wenn das Level lädt möchte ich jedem Stern seine Position zuweisen (PosX und PosY), die im Memo-Feld MemoLoadPos steht.
TStar = class
Found : Boolean; PosX, PosY : integer; procedure Shine; ... var Star : Array[1..20] of TStar; //es gibt in jedem Level 20 Sterne
Code:
Delphi sagt, das sei eine Zugriffsverletzung, aber ich bin mir nicht bewusst, irgendjemanden verletzt zu haben.
Star[1].PosX := StrToInt(MemoLoadPos.Lines[2]);
Star[1].PosY := StrToInt(MemoLoadPos.Lines[3]); Vielen Dank im Voraus für eure Antworten! Ich hoffe, die Frage ist nicht zu dämlich, aber ich habe echt keine Ahnung! |
AW: Zugriffsverletzung??
Wieviel Zeilen hat das Memo? (.Lines ist 0-indiziert)
|
AW: Zugriffsverletzung??
Das Memo-Feld hat 22 Zeilen. Vorher lade ich eine txt-Datei in das Memo-Feld, in dem die Positionen der Spielfigur und der Sterne stehen.
|
AW: Zugriffsverletzung??
Hast du die Instanzen der Klasse auch erzeugt?
Delphi-Quellcode:
Star[1] := TStar.Create;
|
AW: Zugriffsverletzung??
Das habe ich auch schon versucht. Ich rufe die Prozedure StarCreate in FormCreate auf
Ich habe eine Prozedur "FormCreate", während der ich die Prozedur StarCreate aufrufe. (In StarCreate macht er die Instanzen
Code:
procedure TFormLvl.StarCreate;
var i : integer; begin for i := 1 to 20 do Star[i].Create; Star[1].PosX := ... //wie oben beschrieben ImgStar1.Left := Star[1].PosX; ImgStag1.Top := Star[1].PosY; end; Wie gesagt rufe ich die Prozedur in procedure FormCreate auf. Das macht er auch alles, aber die nächste ZEile im FormCreate wird als Fehler angezeigt. Dabei ist es egal, welche Zeile als nächstes im FormCreate steht. Delphi meldet immer noch eine Zugriffsverletzung und die nächste Zeile wird blau hinterlegt. |
AW: Zugriffsverletzung??
Füge mal begin..end ein
Delphi-Quellcode:
for i := 1 to 20 do Star[i].Create;
begin Star[1].PosX := ... //wie oben beschrieben ImgStar1.Left := Star[1].PosX ImgStag1.Top := Star[1].PosY; end; |
AW: Zugriffsverletzung??
Aber ich will doch nur das Star[i].Create 20 mal wiederholen. Das andere tipp ich 20 mal ein, weil ich ja jedes einzelne Bild verschieben will und ich keinen Array of Image habe sondern nur 20 einzelne Bilder ImgStar1, ImgStar2, ... Außerdem verwirrt mich diese komische Zugriffsverletzung. Delphi hat irgendein Problem mit meinem TStar bzw. den Instanzen Star[i]. Ich habe schon viel mit denen probiert aber immer gab es eine Zugriffsverletzung. Habe ich vielleicht im Aufbau etwas falsch gemacht oder muss man bei dem Create irgendetwas beachten?
|
AW: Zugriffsverletzung??
Ist das Memo zu dieser Zeit schon gefüllt?
|
AW: Zugriffsverletzung??
Ja, ist es. Zu dem Zeitpunkt stehen 22 verschiedene ganzzahlige Werte im MemoFeld.
|
AW: Zugriffsverletzung??
Poste mal den ganzen Quelltext
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 16:26 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