![]() |
Datenbank: Firebird • Version: 1.5 • Zugriff über: IBExpert und Delphi
kleines IO Problem
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:
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 :)
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;
Delphi-Quellcode:
hier ein kleiner auszug aus der textdatei:
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; 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 ... ... .. |
Re: kleines IO Problem
Zitat:
|
Re: kleines IO Problem
Eingerückt schaut es so aus:
Delphi-Quellcode:
Grüße
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; Klaus |
Alle Zeitangaben in WEZ +1. Es ist jetzt 21:55 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz