Thema: Delphi kleines IO Problem

Einzelnen Beitrag anzeigen

delphi_noob666

Registriert seit: 11. Jul 2008
11 Beiträge
 
#1

kleines IO Problem

  Alt 12. Jul 2008, 16:27
Datenbank: Firebird • Version: 1.5 • Zugriff über: IBExpert und Delphi
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
...
...
..
  Mit Zitat antworten Zitat