![]() |
TXT einlesen und in DB speichern, funzt nicht, weil _ als de
Hallo,
ich habe ein kleines Problem! ich lese eine txt ein und will die daten anschließen in eine DB speichern. das funktioniert auch alles so ganz gut. eine zeile in meiner txt sieht so aus: 1;2;3;Das ist ein Text hier einmal mein code:
Delphi-Quellcode:
So und jetzt mein Problem
procedure TFMain.Button1Click(Sender: TObject);
var open1 : TOpenDialog; s : String; l : TStringList; f : TextFile; begin open1:=TOpenDialog.Create(self); l:=TStringList.Create(); // Kapitel einlesen if open1.Execute then begin AssignFile(f, open1.FileName); Reset(f); while not Eof(f) do begin Readln(f, s); l.Delimiter:=';'; l.DelimitedText:=s; TKapitel.Append; TKapitelAmtlicherOPS.AsString:=l[0]; TKapitelKapitelnummer.AsString:=l[1]; TKapitelKapiteltitel.AsString:=l[2]; TKapitel.Post; end; CloseFile(f); end; end; das leerzeichen, das zwischen den wörtern "das" und "ist", ist erkennt meine Programmroutine als ein Delimiter. wie kann ich das verhintern??? das programm soll einfach nur das ";" als Delimiter erkennen. PS: Kann mir jemand weiterhelfen??? Mit freundlichen Grüßen Christian18 |
Re: TXT einlesen und in DB speichern, funzt nicht, weil _ al
Mit den CSV Hilfsfunktionen aus der Code-Library (
![]() Du solltest dich übrigens nicht darauf verlassen, dass immer 3 Felder vorhanden sind, deshalb:
Delphi-Quellcode:
Reset(f);
while not Eof(f) do begin Readln(f, s); l.Clear; ParseCSVLine(s, l, ';', '"'); while l.count < 3 do l.Add('???'); // auf 3 Felder auffüllen TKapitel.Append; TKapitelAmtlicherOPS.AsString:=l[0]; TKapitelKapitelnummer.AsString:=l[1]; TKapitelKapiteltitel.AsString:=l[2]; TKapitel.Post; end; |
Re: TXT einlesen und in DB speichern, funzt nicht, weil _ al
Hallo,
ich würde einfach die folgende Funktion benutzen:
Delphi-Quellcode:
Für StringReplace muss noch die Unit SysUtils eingebunden werden ;)
//...
l.Delimiter:=';'; l.DelimitedText:='"'+StringReplace(s,';','";"',[rfReplaceAll])+'"'; //... MfG Delphi Apostel |
Re: TXT einlesen und in DB speichern, funzt nicht, weil _ al
Zitat:
Beispiel mit 3 Datenfeldern:
Code:
Das 2. Feld enthält den Klartext:
12500;"Düse - Pumpe Vorrichtung; Status 9;""obsolete"";""Auslaufmodel"""; 01.11.1987
Code:
Und obwohl Anführungszeichen und Strichpunkte enthalten sind, ist es nur ein Feld.
Düse - Pumpe Vorrichtung; Status 9;"obsolete";"Auslaufmodel"
Also immer schön aufpassen mit CSV-Dateien ;-) |
Re: TXT einlesen und in DB speichern, funzt nicht, weil _ al
es gibt auch fertige CSV-Kompos, die eine CSV-Datei in eine DataSet kapseln. Z.B. als teil der JVCL.
|
Re: TXT einlesen und in DB speichern, funzt nicht, weil _ al
Hallo,
ganz einfach: vor der Zuweisung von DelimetedText noch diese Zeile:
Delphi-Quellcode:
Noch kurz der Hilfetext dazu:
l.StrictDelimiter := TRUE;
Mit dieser Eigenschaft legen Sie fest, ob Delimiter der einzige in der Eigenschaft DelimitedText verwendete Wert ist. Bei True werden die einzelnen Strings in DelimitedText nur durch das in Delimiter angegebene Zeichen getrennt. Bei False können die einzelnen Strings in DelimitedText durch ein Leerzeichen, ein nicht druckbares Zeichen oder dem in Delimiter angegebenen Zeichen getrennt werden. Gruß, Chris |
AW: TXT einlesen und in DB speichern, funzt nicht, weil _ als de
Jetzt habe ich eine Frage zu Delphi 2010:
Ich habe diesen Text: 'Info: Datei§[17:11:56.498] Berechnung wurde abgeschlossen'
Delphi-Quellcode:
Nun wird der Text aber trotzdem bei jedem Leerzeichen getrennt und es entstehen 6 Strings!?!
fLogLines := TStringList.Create;
fLogLines.StrictDelimiter := True; fLogLines.Delimiter := '§'; |
AW: TXT einlesen und in DB speichern, funzt nicht, weil _ als de
Dreh die Zuweisung mal testweise um:
Delphi-Quellcode:
fLogLines.Delimiter := '§';
fLogLines.StrictDelimiter := True; |
AW: TXT einlesen und in DB speichern, funzt nicht, weil _ als de
Delphi-Quellcode:
sl.StrictDelimiter:= true;
sl.Delimiter:='§'; sl.DelimitedText:=( 'Info: Datei§[17:11:56.498] Berechnung wurde abgeschlossen'); |
AW: TXT einlesen und in DB speichern, funzt nicht, weil _ als de
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 21:49 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