![]() |
Text File Einlesen und als Datenbank Datei ausgeben
hi,
ich brauch mal wieder eure hilfe... über ein Windows Script hol ich mir von einem ftp Server ein .txt file runter... diese .txt file muss ich anschließend als eine datenbankt datei ausgeben... ich hab jetzt leier ein paar probleme beim einlesen des text files, vielleicht kann mir hierbei jemand helfen... hier wäre mal die komplette procedure:
Delphi-Quellcode:
bei meinem readln bekomm ich immer einen fehler, weiss vielleicht jemand warum??? bzw. geht das überhaupt mit readln eine einzelne zeile meines .txt files einzulesen??? :wall:
procedure TMain_Form.bitbtn_createClick(Sender: TObject);
var File_ZPDM : File; Row_S : String; Row_R : TZPDM_Record; i : integer; begin ListBox_Msg.Items.Add('DB-Datei wird erstellt...'); bitbtn_exit.Enabled := False; i := 2; {$I-} AssignFile(File_ZPDM,'..\TXT_File\Datei.TXT'); Reset(File_ZPDM,i); SetLength(Row_S,261); ReadLn(File_ZPDM,Row_S,261); If IOResult <> 0 Then ShowMessage('Einlesen der Textzeile ist Fehlgeschlagen') Else AddDBFile(); CloseFile(File_ZPDM); {$I+} end; ich hoffe mir kann jemand helfen |
Re: Text File Einlesen und als Datenbank Datei ausgeben
Delphi-Quellcode:
hat keine 3 Parameter
ReadLn(File_ZPDM,Row_S,261);
ReadLn(fileName,string) also in Deinem Fall
Delphi-Quellcode:
und vielleicht den FileType
Readln(File_ZPDM,Row_S);
Delphi-Quellcode:
ändern.
File_ZPDM : File of Text;
was willst denn Du damit bezwecken?
Delphi-Quellcode:
Das FIle File_ZPM ist ein Textfile und besizt keine Recordstruktur, daher
i := 2;
Reset(File_ZPDM,i); ist es auch nicht notwendig im Reset eine RecordSize zu übergeben. Grüße Klaus [edit] Ergänzungen |
Re: Text File Einlesen und als Datenbank Datei ausgeben
hmm also wenn meine File Variable nicht als File of Text angegeben ist,
krieg ich beim kompilieren folgende fehlermeldung: Inkompatible Typen: 'procedure, untyped poniter or untyped parameter' und 'string' aber meine File Variable kann ich nicht als File of Text angeben... da krieg ich au ne Fehlermeldung: Konstante oder Typenbezeichner erwartet |
Re: Text File Einlesen und als Datenbank Datei ausgeben
Delphi-Quellcode:
und da ist ein Fehler drin?
procedure TMain_Form.bitbtn_createClick(Sender: TObject);
var File_ZPDM : TextFile; // geändert :o( Row_S : String; Row_R : TZPDM_Record; i : integer; begin ListBox_Msg.Items.Add('DB-Datei wird erstellt...'); bitbtn_exit.Enabled := False; i := 2; {$I-} AssignFile(File_ZPDM,'..\TXT_File\Datei.TXT'); //Reset(File_ZPDM,i); Reset(File_ZPDM); //SetLength(Row_S,261); //ReadLn(File_ZPDM,Row_S,261); while not eof(File_ZPDM) DO begin ReadLn(File_ZPDM,Row_S); If IOResult <> 0 Then ShowMessage('Einlesen der Textzeile ist Fehlgeschlagen') Else AddDBFile(); // vielleicht ist ja auch hier der Fehler? end; CloseFile(File_ZPDM); {$I+} end; Grüße Klaus |
Re: Text File Einlesen und als Datenbank Datei ausgeben
ja, leider, es kommen die beiden fehler die ich in meinem letzten beitrag aufgelistet hab...
|
Re: Text File Einlesen und als Datenbank Datei ausgeben
für welche Zeile kommen denn die Fehlermeldungen?
Bitte nicht die Zeilennummer, sondern die Zeile angeben. Grüße Klaus |
Re: Text File Einlesen und als Datenbank Datei ausgeben
Wieso nimmst du eigentlich keine TStringlist? Fänd ich jetzt einfacher.
|
Re: Text File Einlesen und als Datenbank Datei ausgeben
Ein kleiner Fehler: der Dateityp sollte TextFile oder Text sein, nicht file of Text.
Grüße vom marabu |
Re: Text File Einlesen und als Datenbank Datei ausgeben
Zitat:
Delphi-Quellcode:
@klaus01
procedure TMain_Form.bitbtn_createClick(Sender: TObject);
var File_ZPDM : TextFile; Row_S : String; Row_R : TZPDM_Record; i : integer; begin ListBox_Msg.Items.Add('LOGPFL wird erstellt...'); bitbtn_exit.Enabled := False; i := 2; {$I-} AssignFile(File_ZPDM,'..\SAP_File\ZPDMMCIDL_DEY1_20060130.TXT'); //Reset(File_ZPDM,i); SetLength(Row_S,261); ReadLn(File_ZPDM,Row_S); If IOResult <> 0 Then ShowMessage('Einlesen der Textzeile ist Fehlgeschlagen') Else AddLOGPFL(); CloseFile(File_ZPDM); {$I+} end; die fehlermeldungen kamen bei File_ZPDM : File of Text; und ReadLn(File_ZPDM,Row_S); aber jetzt wenn File_ZPDM : TextFile; kommt kein Fehler mehr |
Re: Text File Einlesen und als Datenbank Datei ausgeben
aehm,
Du solltest das File vielleicht noch zum Lesen öffnen, Dein Reset(..) ist auskommentiert. Den anderen Fehler habe ich oben korregiert. @marabu, danke, da hatte ich wohl ein Brett vor dem Kopf. es steht ja schon in der Überschrift "Text File" Grüße Klaus |
Re: Text File Einlesen und als Datenbank Datei ausgeben
Zitat:
ich hab halt von meinem kollegen halt den tipp bekommen es mit nem record zu machen, weil ich ein strukturierts txt file hab also wo ein wert immer an der gleichen stelle steht... kann ich des mit ner TStringList auch machen??? |
Re: Text File Einlesen und als Datenbank Datei ausgeben
jo,
Du mußt dann halt nur die Zeilen auch zerlegen wie Du es jetzt auch machst.
Delphi-Quellcode:
[edit = Ergänzung]
var
sl: TStringList; i: Integer; begin sl := TstringList.create; if FileExists('fileName') then sl.loadfromFile('fileName'); for i:=0 to sl.count -1 do begin //tu etwas mit sl.strings[i] end; sl.free; // [edit]freigeben vergessen end; Ein record ist in der Regel ein Datensatz wie hier zum Beispiel test = record zahl: Integer; name: String[20] end; Solch eine Recordstruktur kann mit einer Stringlist nicht eingelesen werden. Ein TextFile mit einer SatzStruktur wie hier 1 name1 2 name2 3 name3 kann mit einer Stringlist eingelesen werden, allerdings auch nur in Zeilen. Die Zeilen müssen dann zerlegt werden um in Datenfelder getrennt zu werden. Grüße Klaus |
Re: Text File Einlesen und als Datenbank Datei ausgeben
hmm da hab ich aber mit meinem record weniger aufwand???
denn muss ich ja nur einmal angeben, und später wenn ich die felder meiner db-datei füll, kann ich die felder vom record direkt in die db-datei übergeben.... also ungefähr so: Feld1DB := Record.Feld1; ich hab jetzt lediglich nur das problem wie ich meinen string in denn record bekommen :oops: |
Re: Text File Einlesen und als Datenbank Datei ausgeben
wenn die Zeile/String immer gleich unterteilt ist
sprich so z1 data11 data12 data13 z2 data21 data22 data23 z3 .. dann kannst Du eigentlich mit copy (siehe Delphi Hilfe) sehr gut den String auseinander nehmen und in Deine Recordstruktur oder gleich in de dbpacken. Grüße Klaus |
Re: Text File Einlesen und als Datenbank Datei ausgeben
Welches Verfahren das bessere für dich ist, hängt halt davon ab wie deine Eingabedatei ausschaut
|
Re: Text File Einlesen und als Datenbank Datei ausgeben
Zitat:
|
Re: Text File Einlesen und als Datenbank Datei ausgeben
also des mit dem copy hab ich nicht hinbekommen...
ist aber auch egal... werd jetzt meine string aus der .txt datei so auflösen... dazu hätte ich aber eine frage: ich komme ja von der as/400 programmierung (programmiersprache ile/rpg) im ile/rpg steht mir folgende möglichkeit zur verfügung einen string aufzuteilen
Code:
wenn jetzt in Feld2 "hallo du" stehen würde, dann würde ich im Feld1 also "hallo" als wert reingestellt bekommen...
Eval Feld1 = %Subst(Feld2,1,5);
nun zu meiner frage, gibt es so eine ähnliche möglichkeit auch in delphi??? bzw. gibt es hier auch eine substring methode??? bis jetzt hab ich mein problem wie folgt gelöst:
Delphi-Quellcode:
finde diese methode allerdings etwas unellegant :oops:
procedure TMain_Form.AddDBRecord(Parm : String);
var Feld1 : String; Feld2 : String; begin Feld1 := Parm; Feld2 := copy(Feld1,1,18); ShowMessage(Feld2); end; mir wäre lieber wenn ich des mit substring machen könnte, falls es das gibt |
Re: Text File Einlesen und als Datenbank Datei ausgeben
ich sehe da im Moment keinen Unterschied zwischen SubStr und copy.
Vielleicht bin ich ja auch auf dem Auge blind. Aus der Hilfe Zitat:
Grüße Klaus |
Re: Text File Einlesen und als Datenbank Datei ausgeben
ja in der funktionalität besteht wirklich kein unterschied...
mich hätte nur interessiert ob es für delphi auch ein funktion gibt die sich substring nennt... ^^ werd einfach ne funktion selber schreiben die Substring heißt ;) dann hab ichs auch... |
Alle Zeitangaben in WEZ +1. Es ist jetzt 07:35 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-2025 by Thomas Breitkreuz