Type Thunter =record // das datenformat in dem gespeichert werden soll
Acc: String[40];
Bots: String[255];
Score: Integer;
end;
procedure Sortier(var A: array of Thunter); //sortieralgorythmus
var
i: Integer;
j: Integer;
tmp: Thunter;
begin
for i:= 1 to high(A) do
begin
j:= i;
tmp := A[i];
while (j > 0) and (A[j-1].Score > tmp.Score) do
begin
// Verschieben:
A[j]:= A[j-1];
Dec(j);
end;
A[j]:= tmp;
end;
end;
procedure TForm1.Button1Click(Sender: TObject);
Var users: file Of Thunter;
hilf: array of Thunter;
c:boolean;
i:integer;
s:string;
begin
i:=0; //loop Variable null setzen
c:=true; //abfrage Variable Falsch setzen
Assignfile(Users,'Hunter.dat'); //datei zuweisen
if Fileexists('Hunter.dat') then
Begin //falls existiert
Reset(users);
Setlength(hilf,Filesize(users)+1);
seek(users,0);
while not EOF(users) do
Begin
read(users,hilf[i]);
inc(i);
END;
closefile(users);
for i := 0 to high(hilf) do
Begin
if AnsiLowercase(hilf[i].Acc)=AnsiLowercase(Labelededit1.Text) then
Begin
c:=false; //auf gefunden setzen ;) wichtig für paar zeilen später
if pos(Ansilowercase(labelededit2.Text+' '+Labelededit3.text),Ansilowercase(hilf[i].Bots)+',')=0 then
Begin
s:=hilf[i].bots;
hilf[i].Bots:=s+', '+Labelededit2.text+' '+Labelededit3.text;
case strtoint(Labelededit3.Text) of
0..90: hilf[i].Score:=hilf[i].Score+1;
91..94:hilf[i].score:=hilf[i].score+2;
95..96:hilf[i].score:=hilf[i].score+4;
97:hilf[i].score:=hilf[i].score+6;
98:hilf[i].score:=hilf[i].score+10;
99:hilf[i].score:=hilf[i].score+20;
end;
END
Else Showmessage('bot wurde bereits vom entsprechenden Hunter erlegt');
end
ELSE
if (i=high(hilf)) AND c then //falls nicht gefunden dann Neunen 'acceinttrag' anlegen (das funktioniert soweit getestet auch sehr gut)
Begin
hilf[i].Acc:=Labelededit1.Text;
hilf[i].Bots:=labelededit2.Text+' '+Labelededit3.text;
case strtoint(Labelededit3.Text) 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;
CopyFile('hunter.dat','hunterbackup.dat',False);
Delay(20);
AssignFile(users,'hunter.dat');
Rewrite(users);
sortier(hilf);
i:=0; // loop wieder null setzen für das einspeichern der daten
while (i<sizeof(hilf)) And (hilf[i].acc<>'') do
Begin
Write(users,hilf[i]);
inc(i);
end;
closefile(users);
end //iwo hiervor muss der Fehler stecken aber wo???
ELSE
Begin
i:=0;
Rewrite(users);
setlength(hilf,1);
hilf[0].Acc:=labelededit1.Text;
hilf[0].Bots:=labelededit2.Text+ ' '+ Labelededit3.text;
case strtoint(Labelededit3.Text) of
0..90:hilf[i].Score:=1; //funktioniert einwandfrei
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;
Write(users,hilf[0]);
Closefile(users);
end;
end;