Delphi-PRAXiS
Seite 1 von 3  1 23      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Delphi Txt datei in Paradox einlesen (https://www.delphipraxis.net/5293-txt-datei-paradox-einlesen.html)

Bedrock 31. Mai 2003 14:48


Txt datei in Paradox einlesen
 
Txt datei in Paradox einlesen.

Wie geht das??
:oops:

MrSpock 1. Jun 2003 09:48

Hallo Bedrock,

dazu liest du die Textdatei mit Readln zeilenweise ein, zerlegst die Zeile in die einzelnen Feldinhalte und weist diese den Tabelle wieder zu, etwa so:

Delphi-Quellcode:
  Readln(d, zeile);
  myTable.Append;
  { angenommen du hast 10 Felder }
  for i := 1 to 10 do
    myTable.Fields[i-1].AsString := ZerlegeZeile(zeile, i);
  myTable.Post;
Dabei benutzt du eine Prozedur "ZerlegeZeile", die dir aus der übergebenen Zeile den i-ten Feldinhalt liefert.

Grundsätzlich ist auch die Komponente BatchMove geeignet, wenn die Struktur der Textdatei eine eindeutige Trennung der Felder erlaubt.

Bedrock 1. Jun 2003 17:07

zeile und Zerlegezeile bring mir eine Fehlermeldung.
Was meinst du damit.

Mein Textfile siegt so aus.
T 100 5 110 2 M1 Synpol Störung 0 0
alles dur Tab getrennt.

r_kerber 1. Jun 2003 17:13

Ich vermute MrSpock meinte, Du sollst eine entsprechende Prozedur schreiben, die genau diese Funktion hat. Und Zeile, denke ich, ist eine String-Variable, in die Du mit ReadLn jeweils eine Zeile Deines Textfiles einliest.

Bedrock 1. Jun 2003 17:33

etwa so??

Delphi-Quellcode:
procedure TForm2.Button1Click(Sender: TObject);
var d:textfile;
var i:integer;
var zeile:string;
begin
AssignFile(d, 'c:\sms\sat.txt');
  Readln(d, zeile);
  Table2.Append;
  { angenommen du hast 10 Felder }
  for i := 1 to 10 do
    Table2.Fields[i-1].AsString := (zeile);
  Table2.Post;
end;
ZerlegeZeile(zeile, i);??
versteh ich leider auch nicht :oops:

r_kerber 1. Jun 2003 17:50

Fast. Für (zeile) solltest Du einen Ausdruck oder eine Prozedur einsetzen, die Dir das i-te Element (Feld) der Textzeile liefert!

Bedrock 1. Jun 2003 18:17

oh mann ich versteh nur Bahnhof.

Kannst du mir das bite ein wenig genauer beschreiben??

eddy 1. Jun 2003 20:30

Hallo Bedrock,

eigentlich hat MrSpock Deine Frage beantwortet. Wenn Du damit nichts anfangen kannst - "ich verstehe nur Bahnhof" - dann solltest Du das, was Du eigentlich willst, etwas genauer formulieren, damit man Dir helfen kann.

Dazu mußt Du also mal schildern, was in Deiner Textdatei steht, und welche Informationen daraus Du in welche Felder Deiner Paradox-Datenbank übertragen willst.

Hilfreich wäre Deine Text-Datei oder ein Ausschnitt daraus (z.B. als Download).

mfg
eddy

Bedrock 1. Jun 2003 21:03

OK also dann.

Habe follgende Text Datei mit vollgenden vortlaufenden Zeilen.

T 100 5 110 0 M1 Automatenfall 0 1 0 0 0
T 100 5 110 1 M1 Not Aus 0 1 0 0 0
T 100 5 110 2 M1 Synpol Störung 0 1 0 0 0
T 100 5 110 15 M1 - M3 Brandalarm 0 1 0 0 0
.
.
.

Diese einzelnen Zeilen sollten nun jeweils in 10 Spalten in eine Datenbank geschriben werden.
das heist für die erste Zeile:
Spalte 1: T
Spalte 2: 100
Spalte 3: 5
Spalte 4: 0
Spalte 5: M1 Automatenfall
Spalte 6: 0
Spalte 7: 1
Spalte 8: 0
Spalte 9: 0
Spalte 10: 0

danach neu Datenbankzeile mit der 2. Zeile der Textdatei.

Hoffe es ist nun verständtlich.
Die aufgliderung der Textdatei ist mit einem Tabulator getrennt.
T ->Tab 100 ->Tab 5 ->Tab 110 ->Tab 0 ->Tab M1 Automatenfall-> Tab 0 ->Tab 1 ->Tab 0 ->Tab 0 ->Tab 0

r_kerber 2. Jun 2003 08:08

Zitat:

Zitat von Bedrock
T 100 5 110 0 M1 Automatenfall 0 1 0 0 0
T 100 5 110 1 M1 Not Aus 0 1 0 0 0
T 100 5 110 2 M1 Synpol Störung 0 1 0 0 0
T 100 5 110 15 M1 - M3 Brandalarm 0 1 0 0 0
.
.
.

Sind die einzelnen Spalten durch einen Tabulator getrennt? Falls nicht, dann könnte es ein Problem mit den unterschiedlich langen Texte (M1...) geben.


Alle Zeitangaben in WEZ +1. Es ist jetzt 11:38 Uhr.
Seite 1 von 3  1 23      

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