ich bin gerade dabei eine Textdatei mit TStringList zu "beackern". Die Datei (zum Testen abgespeckt) sieht so aus:
Code: Alles auswählen
DATRKAKT-START
DATRKAFH-START
KAFH_HST_BENN_K "Mercedes-Benz"
DATRKAFH-END
DATRKTBA-START
KTBA_NAME "VIN_DATEN "
DATRKTBA-END
DATRKAKT-END
Ziel ist, das "Mercedes-Benz" "heraus zu schneiden" und in eine extra Textadtei wegzuschreiben, aber nur dann, wenn bei KTBA_NAME auch VIN-Daten eingetragen ist.
Code: Alles auswählen
procedure TForm1.Button1Click(Sender: TObject);
var offen: Boolean; Datei: TStringList; wo: Integer;
const Anf_1: String = 'DATRKAKT-START'; END_1: String = 'DATRKAKT-END';
Anf_2: String = 'DATRKAFH-START'; END_2: String = 'DATRKAFH-END';
Anf_3: String = 'DATRKTBA-START'; END_3: String = 'DATRKTBA-END';
Herst: String = 'KAFH_HST_BENN_K'; VIN: String = 'KTBA_NAME';
begin
offen := OpenDialog1.Execute;
Datei := TStringList.Create;
Datei.LoadFromFile(UTF8ToSys(OpenDialog1.FileName));
Memo1.Lines := Datei;
//Datei.Find(Anf_1,wo);
//label1.Caption := IntToStr(wo);
label1.Caption := IntToStr(Datei.IndexOf(Anf_1));
Datei.Free;
end;
Bearbeite ich die Datei von Hand und richte alles linksbündig aus, dann findet "IndexOf" die entsprechenden Zeilen, bis auf die Beiden wo "Mercedes-Benz" bzw "VIN-Daten" hinter steht.
Um die Einrückungen herauszubekommen dachte ich an Trim(Datei) bzw TrimLeft(Datei). Das funzt aber nicht, da kommt die Meldung dass die Trim-Befehle nur mit UnicodeString arbeiten. Ein TypCasting auf UnicodeString Trim(UnicodeString(Datei)) liefert während des Programmlaufes eine Zugriffsverletzung.
Hat von Euch jemand eine Idee?
Vielen Dank vorab.
Grüße
Volker