Einzelnen Beitrag anzeigen

Pitti911
(Gast)

n/a Beiträge
 
#1

Speichern von Daten in einen Array überschreibt vorherige

  Alt 16. Feb 2009, 19:23
Ich bins wieder

mancher mag sich vllt noch an mich erinnern

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
  Mit Zitat antworten Zitat