Speichern von Daten in einen Array überschreibt vorherige
Ich bins wieder :hi:
mancher mag sich vllt noch an mich erinnern :D Es ist wieder relativ viel Quellcode aber ich bemühe mich nur das wichtigste zu schreiben den rest werd ich mit ... "rauskommentieren" und kurz schreiben was das macht ;) Das Problem ist das in der Datei 'hunter.dat' am ende immer nur der zuletzt eingefügte Datensatz steht und ich nicht weiß warum :(
Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
Var users: file Of Thunter; hilf: array of Thunter; Bots: file of Tbot; bot:array of Tbot; tmpbot: Tbot; acc: string[40]; c,fa,fb:boolean; i,k,j,p,l:integer; hs,hs2:string; begin Button1.Enabled:=false; i:=0; c:=true; if Fileexists(ExtractFilePath(ParamStr(0))+'bots.dat') then Begin // ... einlesen der vorhandenen Daten aus den Files das sollte eigentlich stimmen drum lass ich das hier weg ;) anzahl der Einträge in den Botlisten in k gespeichert Try If memo1.Lines.Count=2 then //Beginn einlese algorythmus aus dem Memo Begin hs:=memo1.lines[0]; hs:=trim(hs); Acc:=hs; hs:=memo1.Lines[1]; hs:=trim(hs); if hs[length(hs)]<>';' then hs:=hs+';'; fa:=true; repeat // ... Die im Memo stehenden Daten werden zerlegt und in tmpbot abgespeichert for I := 0 to high(hilf) do Begin if ansilowercase(hilf[i].Acc)=ansilowercase(acc) then Begin fa:=false; hilf[i].Score:=hilf[i].Score+haddbot(tmpbot,hilf[i].botl); end ELSE Begin if (i=high(hilf)) and fa then Begin setlength(hilf,high(hilf)+2); fa:=false; hilf[i].Acc:=acc; hilf[i].Botl[0]:=tmpbot; case hilf[i].Botl[0].Botlvl of 0..90:hilf[i].Score:=1; 91..94:hilf[i].Score:=2; 95..96:hilf[i].Score:=4; 97:hilf[i].Score:=6; 98:hilf[i].Score:=10; 99:hilf[i].Score:=20; end; end; end; end; c:=addbot(tmpbot,bot); I:=0; if c then inc(k); until hs=''; end; //ende des einlese algorythmus in Botlisten assignfile(bots,ExtractFilePath(ParamStr(0))+'bots.dat'); Sortierb(bot); rewrite(bots); i:=0; while (i<=high(bot)) do Begin //hier is dann halt das speichern der Daten die in den Arrays stecken in die Dateien if bot[i].botname<>'' then Write(bots,bot[i]); inc(i); end; Closefile(bots); //ende Botliste AssignFile(users,ExtractFilePath(ParamStr(0))+'hunter.dat'); Rewrite(users); sortierH(hilf); i:=0; while (i<=high(hilf)) do Begin if hilf[i].Acc<>'' then Write(users,hilf[i]); inc(i); end; closefile(users); Memo1.Text:=''; Button1.Enabled:= true; Except //Fehlerbehandlung (bei exceptions) die klappt auch ganz gut :D end; end; Bitte schimpft nicht zu sehr mit mir weil das schon wieder so viel Quelltext ist aber die Liste der Hunter will einfach immer nur den zuletzt gespeicherten behalten :( und das Forum is einfach SUPI :love: |
Re: Speichern von Daten in einen Array überschreibt vorherig
Hast du mal im Debugger geprüft, wie oft "write" aufgerufen wird?
|
Re: Speichern von Daten in einen Array überschreibt vorherig
ich habs grad ausprobiert (wenn alles laufen sollte wie ich will sollte es zwei mal ausgeführt werden)
aber das Programm hat die Anweisung nur ein mal ausgeführt :( €DIT: Kann man das auch anders überprüfen als jede Zeile einzeln ausführen zu lassen und zu zählen? |
Re: Speichern von Daten in einen Array überschreibt vorherig
über debugger so:
Du setzt ein breakpoint an die stelle (F5) |
Re: Speichern von Daten in einen Array überschreibt vorherig
ja ok so hab ich das ja auch gemacht ;) aber hat jemand eine Ahnung warum Write nur ein mal ausgeführt wird? und kann ich mir die Datensätze iwie Anzeigen lassen so wie sie in dem Array stehen?
|
Re: Speichern von Daten in einen Array überschreibt vorherig
Schua mal im Menu Start, da gibt es so sachen, wie "Ausdruck hinzufügen" [Strg][F5], "Auswerten/ändern" [Strg][F7] .... Damit kannst du alle Werte überwachen.
|
Re: Speichern von Daten in einen Array überschreibt vorherig
das mit dem Werte überwachen hab ich nicht gemacht aber mir ist aufgefallen dass ich beim einlesen 'Hunter.dat' und bei der Ausgabe 'hunter.dat' geschrieben hatte :wall: das problem ist jetzt behoben allerdings wird jetzt immer der Wert der schon in der Datei stand einfach nur dupliziert :wall:
ich hab also nicht wirklich was verändert nur stimmen jetzt die Dateibezeichnungen auch überein :dancer2: Edit: Ich depp man sollte doch das überprüfen was in den Dateien steht^^ da wird jetzt wenigstens alles korrekt gespeichert also muss der Fehler wohl oder übel in der Ausgabe liegen. Allerdings werde ich mich damit erstmal selber befassen |
Alle Zeitangaben in WEZ +1. Es ist jetzt 23:44 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz