![]() |
Zugriffsverletzung - warum?
Hi, DP:
In menem Projekt bekomme ich immer wenn ich diesen Button klicke eine Zugriffsverletzung, und ich verstehe einfach nicht warum :wall: . kann mir einer sagen was da falsch ist? wenn ihr mehr code braucht dann sagt mir was genau, ich will ja kein OS - Projekt machen :mrgreen:
Delphi-Quellcode:
Vielen Dank im Voraus,
procedure TForm1.FunktionClick(Sender: TObject);
var i, a: integer; x: string; begin case funktionen.ItemIndex of 0: begin a := luafile.IndexOf('function Mission_InitMerchants()'); for i := 0 to 6 do begin a := luafile.IndexOf('function Mission_InitMerchants()'); if handel[i].handelt then begin luafile.Insert(a+1,' local PlayerID = '+inttostr(i)); luafile.Insert(a+2,' local traderId = Logic.GetStoreHouse('+inttostr(i)+')'); if handel[i].hg1 <> 35 then begin x := Ware(handel[i].hg1); luafile.Insert(a+3,'AddOffer( traderId, '+inttostr(handel[i].hg1m)+', '+x+' )'); end; end; end; end; end; end; function TForm1.Ware; begin case index of // Alle möglichen Zahlen werden erkannt... für euch nicht weiter wichtig -> Platz sparen else result := ''; end; end; Flo |
Re: Zugriffsverletzung - warum?
In welcher Zeile tritt der Fehler auf? (Mit F5 Breakpoint auf die erste Zeile der Funktion setzen und dann mit F7 Schritt für Schritt durchgehen)
Ich schätze mal nach dem ersten Überfliegen, dass die AV bei dem Zugriff auf Handel[i] auftritt, Handel, was auch immer das ist, könnte zu klein sein. Achja, nenn uns mal die Speicheradresse, bei der der Fehler auftritt, das könnte evtl. helfen. Gruß |
Re: Zugriffsverletzung - warum?
Zitat:
|
Re: Zugriffsverletzung - warum?
[OT]
Zitat:
Zitat:
|
Re: Zugriffsverletzung - warum?
ok:
Zitat:
Zitat:
Zitat:
Delphi-Quellcode:
Handel: Array[2..8] of THandler;
Delphi-Quellcode:
THandler = record
Handelt: Boolean; Handelsgute: Integer; //ich weiß, Güter aber ü.... Hg1: Integer; Hg2: Integer; Hg3: Integer; Hg4: Integer; HG1M: Integer; HG2M: Integer; HG3M: Integer; HG4M: Integer; |
Re: Zugriffsverletzung - warum?
Dein Array geht von 2 bis 8, Deine Laufvariable von 0 bis 6. Und eine Funktion ohne Rückgabewert lässt der Compiler nicht zu.
|
Re: Zugriffsverletzung - warum?
Zitat:
Delphi-Quellcode:
[Edit]Quatsch, musst du nicht überprüfen. i ist auf jeden Fall zu klein, da es von 0 bis 6 geht. (nein, ich habe nicht bei Detlef abgeguckt :mrgreen: ).
if not (i in [2..8]) then
ShowMessage('i ist zu groß oder zu klein!'); |
Re: Zugriffsverletzung - warum?
Nicht zu klein, aber falsch indiziert (siehe oben) ;)
|
Re: Zugriffsverletzung - warum?
na hoppla!
so gehörts wirklich:
Delphi-Quellcode:
geht aber immernoch nicht...
//...
case funktionen.ItemIndex of 0: begin a := luafile.IndexOf('function Mission_InitMerchants()'); for y := 0 to 6 do begin i := y+2; a := luafile.IndexOf('function Mission_InitMerchants()'); if handel[i].handelt then begin luafile.Insert(a+1,' local PlayerID = '+inttostr(i)); luafile.Insert(a+2,' local traderId = Logic.GetStoreHouse('+inttostr(i)+')'); if handel[i].hg1 <> 35 then begin x := Ware(handel[i].hg1); luafile.Insert(a+3,'AddOffer( traderId, '+inttostr(handel[i].hg1m)+', '+x+' )'); end; end; end; end; end; //... |
Re: Zugriffsverletzung - warum?
Delphi-Quellcode:
Handel: Array[2..8] of THandler;
Delphi-Quellcode:
fällt dir da was auf?
for i := 0 to 6 do
... if handel[i] 0..6 <> 2..8 entweder
Delphi-Quellcode:
oder
for i := 2 to 8 do
... if handel[i]
Delphi-Quellcode:
[edit]
for i := 0 to 6 do
... if handel[i + 2] hmmm, keine RedBox? :shock: |
Alle Zeitangaben in WEZ +1. Es ist jetzt 11:09 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 by Thomas Breitkreuz