Hi,
ich habe ein kleines Problem und zwar lasse ich eine Liste von Vereinen aus einer Textdatei lesen, um sie dann in eine
DB zu schreiben. Die Spieltage auszulesen und in eine Tabelle zu schreiben ist auch np und funktioniert (so lange die Textdatei einer strengen Struktur unterliegt) fehlerfrei. Allerdings möchte ich jetzt aus den eingelesenen Spieltagen in eine "Rank" Tabelle schreiben mit Punkten und geschossenen Toren etc. Und genau hier ist mein Problem, wenn ich die Daten in die League Tabelle schreibe scheint er die Vereine nicht zu erkennen... durch ausprobieren hab ich festgestellt, dass er die Strings nicht richtig erkennt und nicht immer in die If-Abfragen zu kommen scheint... Für Anregungen wie man den Datenaustausch optimieren könnte bin ich sehr dankbar.
Der Fehler wirkt sich so aus: das programm addiert, da es nicht immer erkennt wann die Vereine gespielt haben, nur einmal Punkte, Tore etc. korrekt.
hier der Code mit dem ich die .txt datei auslese
Delphi-Quellcode:
procedure TFormular1.ToolButton_openClick(Sender: TObject);
var
i,j,q,h,k, daycounter : Integer;
Spieltag, Spieltag1 : String;
begin
Assignfile(f1,'C...\Saison1.txt');
Reset(f1);
j:=1;
TBL_Match.Insert;
Spieltag := ('Spieltag');
daycounter := 0;
while not EOF(f1) do begin
readln(f1, Zeilen_String);
k:=length(Zeilen_String);
if k = 0 then else begin
if k >0 then if k < 20 then daycounter := daycounter+1 else begin
DBE_MatchID.Text := IntToStr(j);
j:=j+1;
DBE_Date.Text := Copy(Zeilen_String,1,8);
i := Pos(' ', Zeilen_String);
q := Pos (':', Zeilen_String);
DB_HTeam.Text :=Copy(Zeilen_String, i+1, (q-1)-i);
i := Pos (':', Zeilen_String);
DBE_ATeam.Text := Copy(Zeilen_String, i+2, (k-3)-(i+2));
DBE_HTeamGoals.Text := Copy(Zeilen_String, k-2, 1);
DBE_ATeamGoals.Text := Copy(Zeilen_String, k, 1);
TBL_Match.Insert;
end;
end;
end;
Navi_Match.BtnClick(nbRefresh);
Navi_Match.BtnClick(nbFirst);
Closefile(f1);
end;
Hier der Code mit dem ich dann in die andere Tabelle schreiben möchte, ich weiß alles noch recht suboptimal gelöst aber siehe mein name
Delphi-Quellcode:
procedure TFormular1.ToolButton6Click(Sender: TObject);
var Vereine : array of String;
hteam, ateam,hcheckteam, teama, teamb, checkteam : String;
playedhome, playedout : boolean;
r,k,q,i,v,s,u, points, numberofmatches, countergoals,goals : Integer;
t, ateamgoals, hteamgoals: Integer;
begin
points :=0;
setLength(Vereine,18);
numberofmatches := 0;
Navi_Match.BtnClick(nbFirst);
Navi_League.BtnClick(nbFirst);
Navi_League.BtnClick(nbInsert);
for r := 0 to 8 do begin
Vereine[r] := TBL_Match.FieldByName('H-TEAM').AsString;
Vereine[r+9] := TBL_Match.FieldByName('A-Team').AsString;
DEL_Team.Text := Vereine[r];
Navi_League.BtnClick(nbInsert);
DEL_Team.Text := Vereine[r+9];
Navi_League.BtnClick(nbInsert);
Navi_Match.BtnClick(nbNext);
end;
s := TBL_Match.IndexFieldCount;
Navi_League.BtnClick(nbFirst);
for r := 0 to 17 do begin
playedhome := false;
playedout := false;
points := 0;
goals := 0;
countergoals := 0;
hcheckteam := TBL_League.FieldByName('TEAM').AsString;
TBL_Match.First;
while not TBL_Match.Eof do begin
numberofmatches := numberofmatches +1;
hteam := TBL_Match.FieldByName('H-TEAM').AsString;
ateam := TBL_Match.FieldByName('A-TEAM').AsString;
hteamgoals := TBL_Match.FieldByName('H-TEAM-GOALS').AsInteger;
ateamgoals := TBL_Match.FieldByName('A-TEAM-GOALS').AsInteger;
if hteam = checkteam then begin
if hteamgoals > ateamgoals then begin
points := points+3;
end;
if hteamgoals = ateamgoals then begin
points := points +1;
end;
playedhome := true;
end;
if ateam = checkteam then begin
if ateamgoals > hteamgoals then begin
points := points+3;
end;
if ateamgoals = hteamgoals then begin
points := points +1;
end;
playedout := true;
end;
if playedhome = true then begin
goals := goals + hteamgoals;
countergoals := countergoals + ateamgoals;
playedhome := false;
end;
if playedout = true then begin
goals := goals + ateamgoals;
countergoals := countergoals + hteamgoals;
playedout := false;
end;
Navi_Match.BtnClick(nbNext);
end;
Navi_League.BtnClick(nbEdit);
DEL_Points.Text := IntToStr(points);
DEL_ATeamGoals.Text := IntToStr(goals);
DEL_ATeamCG.Text := IntToStr(countergoals);
Navi_League.BtnClick(nbPost);
//TBL_League.Insert;
Navi_League.BtnClick(nbNext);
end;
end;
hier ein kleiner auszug aus der textdatei:
1.Spieltag
10.08.07 VfB Stuttgart : FC Schalke 04 3:1
11.08.07 FC Bayern München : F.C. Hansa Rostock 3:0
11.08.07 VfL Bochum 1848 : Werder Bremen 2:2
11.08.07 Hannover 96 : Hamburger SV 0:1
...
...
..