Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi Dateien auslesen (https://www.delphipraxis.net/117112-dateien-auslesen.html)

delphi_noob666 11. Jul 2008 18:11


Dateien auslesen
 
Hallo,

hab probleme beim auslesen einer datei.
folgender code:

Delphi-Quellcode:
  While not EOF(f1) do begin
      Readln(f1,s);
      k := Length(s);
      Match_ID.Text := IntToStr(j);
      Matchdate.Text := Copy(s,1,8);
      i := Pos(' ', s);
      q := Pos(':', s);
      Home_Team.Text := Copy(s,i+1,(q-1)-i);
      i := Pos(':', s);
      Out_Team.Text := Copy(s,i+2,(k-3)-(i+2));
      Home_Goals.Text := Copy(s,k-3,1);
      Out_Goals.Text := Copy(s,k-1,1);
      DBNavigator1.BtnClick(nbInsert);
      j := j+1;
  end;
Problem: Die erste Zeile wird übersprungen.
Hinweis: Die Daten sollen an eine Datenbank übergeben werden...
hier noch ein kleiner auszug aus der datei

10.08.07 VfB Stuttgart : FC Schalke 04 2:2
11.08.07 FC Bayern München : F.C. Hansa Rostock 3:0
11.08.07 VfL Bochum 1848 : Werder Bremen 2:2

eintrag in die edit-felder 1.datensatz: 11.08.07 FC Bayern München : F.C. Hansa Rostock 3:0

Vielen Dank im voraus

DeddyH 11. Jul 2008 18:15

Re: Dateien auslesen
 
Zeig mal die ein oder zwei Zeilen vorher.

P.S.: Willkommen in der DP :dp:

delphi_noob666 11. Jul 2008 18:17

Re: Dateien auslesen
 
Code:
var f1 : Textfile;
    s : String;
    i, j, k, l, m, q, r : Integer;
    str : boolean;
begin
      r:=1;
     j := 0;
  AssignFile(f1,'..\Saison.txt');
  Reset(f1);
  if FileExists('..\Saison.txt') then begin
     While not EOF(f1) do begin
das sind die zeilen davor

DeddyH 11. Jul 2008 18:21

Re: Dateien auslesen
 
Außer einer fehlenden Fehlerbehandlung kann ich auf den ersten Blick nichts erkennen. Wie äußert sich das "Überspringen" denn genau?

delphi_noob666 11. Jul 2008 18:23

Re: Dateien auslesen
 
Alle Datensätze werden eingelesen, nur die erste Zeile eben nicht.
Ansonsten funktioniert die Schleife tadellos!

DeddyH 11. Jul 2008 18:25

Re: Dateien auslesen
 
Hast Du mal versucht, statt des Klicks auf einen Navigator-Button die Daten direkt einzutragen (z.B. über die Methode Insert von TDataset)?

delphi_noob666 11. Jul 2008 18:36

Re: Dateien auslesen
 
Leider ist es mir momentan noch nicht möglich mit diesen Befehlen zu arbeiten. Bis jetzt haben wir das
nur mit dieser Navileiste gemacht. einen tdataset habe ich nicht gefunden. und der tibdataset beinhaltet keinen insert befehl.
danke aber schonmal für die mühe

DeddyH 11. Jul 2008 18:38

Re: Dateien auslesen
 
Sonst setz doch mal einen Breakpoint auf die Zeile
Zitat:

Delphi-Quellcode:
DBNavigator1.BtnClick(nbInsert);

und sieh nach, was da passiert. Ich glaube nicht, dass es am Auslesen der Datei liegt.

delphi_noob666 11. Jul 2008 18:44

Re: Dateien auslesen
 
also ich weiß jetzt wo der fehler liegt, die datensätze werden erst beim zweiten aufruf von btnclick
eingetragen, den grund dafür weiß ich aber nicht.

die elemente sind alle vom typen tib...

gibt es eine möglichkeit ohne die dbedit felder direkt die daten in eine tabelle zu schreiben?
z.b. insert --> TABELLE.SPALTE(inhalt)

Hansa 11. Jul 2008 18:46

Re: Dateien auslesen
 
Du gehst ja auch falsch vor.

Richtig wäre es so (Pseudocode) :

Delphi-Quellcode:
assign...
reset...
// ioresult nicht vergessen !!
readln (f1...
while not EOF...
...// verarbeiten
  readln (f1...
end;
So, das wars dann für die Woche...

DeddyH 11. Jul 2008 18:49

Re: Dateien auslesen
 
readln vor der Abfrage auf EOF :shock:?

[edit] @delphi_noob666: Ja, das geht prinzipiell. Welche Datenbank ist es denn und wie greifst Du darauf zu? [/edit]

delphi_noob666 11. Jul 2008 18:50

Re: Dateien auslesen
 
soetwas hatte ich auch ausprobiert, es liegt definitv an der navigator leiste. wenn ich denn readln befehl
vor die while schleife setze werden nur 7 datensaätze von neun angezeigt. ohne den readln sind es 8

delphi_noob666 11. Jul 2008 18:55

Re: Dateien auslesen
 
Es ist eine von IBExpert erstellte DB mit der endung *.gdb (firebird 1.5)

zugriff auf die DB von delphi aus:
Database
DataTable
Transaction
DataSource

wie kann ich direkt auf die DB bzw Table zugreifen?

DeddyH 11. Jul 2008 18:57

Re: Dateien auslesen
 
Hier etwas Lesestoff für Dich. Was ist Datatable? Meinst Du TTable der BDE?

Die Muhkuh 11. Jul 2008 19:01

Re: Dateien auslesen
 
Ich schätze eine Tabelle der FireBird DB.

DeddyH 11. Jul 2008 19:02

Re: Dateien auslesen
 
Das glaube ich nicht, Tim :mrgreen:

delphi_noob666 11. Jul 2008 19:04

Re: Dateien auslesen
 
ja ich meine TIBTable von delphi, sry verschrieben

DeddyH 11. Jul 2008 19:06

Re: Dateien auslesen
 
Dann schau Dir mal die Methoden Insert und Post von TIBTable an. Falls Du noch eine Delphi-Version <= 7 hast, findest Du auch Beispiele dazu in der Hilfe.

delphi_noob666 11. Jul 2008 19:18

Re: Dateien auslesen
 
Also habe jetzt eine lösung gefunden:

tibtable.insert -> mit dieser werden alle edit felder hinzugefügt

der fehler mit der ersten zeile kann ich nur umgehen indem ich vor die while schleife tibtable.insert schreibe


Alle Zeitangaben in WEZ +1. Es ist jetzt 18:40 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