AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

kleines IO Problem

Ein Thema von delphi_noob666 · begonnen am 12. Jul 2008 · letzter Beitrag vom 12. Jul 2008
Antwort Antwort
delphi_noob666

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

kleines IO Problem

  Alt 12. Jul 2008, 17: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
Hansa

Registriert seit: 9. Jun 2002
Ort: Saarland
7.554 Beiträge
 
Delphi 8 Professional
 
#2

Re: kleines IO Problem

  Alt 12. Jul 2008, 18:17
Zitat von delphi_noob666:
..dass er die Strings nicht richtig erkennt und nicht immer in die If-Abfragen zu kommen scheint...
Formatiere das mal richtig (besser einrücken), dann fällt der Fehler wohl schnell auf.
  Mit Zitat antworten Zitat
Klaus01

Registriert seit: 30. Nov 2005
Ort: München
5.767 Beiträge
 
Delphi 10.4 Sydney
 
#3

Re: kleines IO Problem

  Alt 12. Jul 2008, 18:25
Eingerückt schaut es so aus:

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) and (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; // while end
  Navi_Match.BtnClick(nbRefresh);
  Navi_Match.BtnClick(nbFirst);
  Closefile(f1);

end;
Grüße
Klaus
Klaus
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 03:16 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