![]() |
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: |
Re: Zugriffsverletzung - warum?
da hast du was übersehen...
|
Re: Zugriffsverletzung - warum?
Was heißt "geht nicht"? Immer noch eine AV oder etwas anderes?
|
Re: Zugriffsverletzung - warum?
Zitat:
|
Re: Zugriffsverletzung - warum?
sorry, ist immernoch eine Zugriffsverletzung...
|
Re: Zugriffsverletzung - warum?
Und in welcher Zeile?
|
Re: Zugriffsverletzung - warum?
Zitat:
|
Re: Zugriffsverletzung - warum?
Breakpoint setzen und mit F8 durchsteppen.
|
Re: Zugriffsverletzung - warum?
Zitat:
![]() |
Re: Zugriffsverletzung - warum?
das hab ich gemacht, sowohl jetzt als auch schon früher :angel: , aber so (mit F8 ) bekomm ich keine Fehlermeldung... :wall:
|
Re: Zugriffsverletzung - warum?
Bist Du die Schleife komplett durchgesteppt?
|
Re: Zugriffsverletzung - warum?
ja, ich denke schon... :stupid:
|
Re: Zugriffsverletzung - warum?
könnt ihr mir nicht helfen? ich könnte ja die unit anhängen wenn das hilft....
|
Re: Zugriffsverletzung - warum?
Liste der Anhänge anzeigen (Anzahl: 1)
ich häng jetzt mal die unit an, bitte anschauen, ob ihr einen fehler seht!!!
|
Re: Zugriffsverletzung - warum?
Sei mir nicht böse, wenn ich die hier mal 2 Tutorials verlinke:
![]() ![]() Mit der Bitte, wenigstens eines der beiden durchzulesen ;) |
Re: Zugriffsverletzung - warum?
Zitat:
Zitat:
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 22:00 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