![]() |
AV in <TStringlist>.Count?!
Liste der Anhänge anzeigen (Anzahl: 1)
Moin DP,
wie ihr vllt. wisst arbeite ich im Moment an Snakey Fusion - da führen xZise, mr_emre_d und ich die snakes von emre und xZise / mir zusammen. nun bin ich auf ein äußerst merkwürdiges problem gestoßen: ich hab eine funktion geschrieben, die das spielfeld aus einem logfile ausliest. ich habe jetzt eine TStringlist und ein array of array of byte (naja eig. TStatus, aber was ändert das schon). nun will ich FMap (das ist das array) eine Größe zuweisen. dazu brauche ich mapp.count (mapp ist die stringlist) - aber das gibt mir ne AV! why? ich hab keine ahnung, und xZise hat den fehler auch nicht gefunden (vllt liegts auch an der uhrzeit?). hier die komplette funktion:
Delphi-Quellcode:
das komplette projekt findet ihr im anhang.
procedure TArena.LoadFromLog(const AFileName: string);
var i,j:integer; myLog: tlogreader; mapp: tstringlist; begin mapp := TStringlist.Create; myLog := TLogReader.Create(AFileName); myLog.Search('Arena'); myLog.ReadSearchedObject(mapp,0); FHeight := mapp.Count; FWidth := length(mapp[2]); SetLength(FMap,FHeight,FWidth); for i := 2 to mapp.count - 1 do begin for j := 1 to length(mapp[i]) do begin if mapp[i][j] = '/' then FMap[i,j] := stClear else if mapp[i][j] = '§' then FMap[i,j] := stWall else showmessage('Error: Undefined character: '+mapp[i][j]); end; end; mapp.Free; myLog.Free; end; edit: TLogReader ist in uLog definiert; die ReadFromLog Stelle ist aus uArena das mit TLogReader.Search sucht einen bestimmtem Abschnitt im Log, ist etwa so wie bei ner ini. readsearchedobject liest dann das gefundene und gibt es aus. aber ich geh jetzt schlafen... |
Re: AV in <TStringlist>.Count?!
kann es sein, dass .count < 0 ist?
|
Re: AV in <TStringlist>.Count?!
thx für die schnelle antwort! aber ich weiß es nicht - ich krieg da ja ne AV in der count funktion
|
Re: AV in <TStringlist>.Count?!
Das Problem ist nicht mapp.Count! Es ist FHeight!
Und wieso das? Weil FArena im Hauptmodul nicht erzeugt wurde! Und das könnt ihr wieder mal nicht sehen, weil ihr die Bereichsprüfung nicht aktiviert habt! Was mir noch aufgefallen ist...
Delphi-Quellcode:
und...
procedure TLogReader.Search(const AName: string);
var i, strLen: Integer; cnt : Integer; begin if FLog.Count > 2 then begin // <-- Einbauen! SetLength(FSearchPositions, FLog.Count - 2); // <-- böse, wenn FLog.Count = 0
Delphi-Quellcode:
Dann flackert die Anzege auch nicht mehr.
procedure TfrmMain.FormCreate(Sender: TObject);
begin Self.DoubleBuffered:=true; FArena wird in der Hauptform nur erzeugt, wenn ein Spiel gestartet wird. Es wird aber niemals freigeben! |
Re: AV in <TStringlist>.Count?!
wo kommt denn die fehlermeldung?
btw: solltet ihr euch angewöhnen, ressourcenschutzblöcke einzurichten und euere klassen auch wieder freizugeben... |
Re: AV in <TStringlist>.Count?!
Zitat:
Zitat:
MfG xZise |
Re: AV in <TStringlist>.Count?!
danke oamata!
aber das
Delphi-Quellcode:
in uMain schaltet meines Wissens nach die Bereichsprüfung ein...
{$R+}
|
Re: AV in <TStringlist>.Count?!
Zitat:
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 14:38 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