Hallo!
Ich möchte eine Tabulator getrennte Datei, bestehend aus mehreren Datensätzen, in eine Datei mit fixer Zeilenlänge überführen.
Beispiel: Datensatzschema
Code:
AAAAA [Tab] BBBBBxBBBBBBxBBBBB [Zeilenende]
A ist der String vor dem Tabulator
[Tab] soll das Trennzeichen darstellen
B soll den kompletten String nach dem Trennzeichen darstellen
x stellt das Leerzeichen(Space) dar welches mit zum String B gehört
Zeilenende markiert das Datensatzende
Ziel ist:
Code:
AAAAA.....BBBBBxBBBBBBxBBBBB...............[Zeilenende]
wobei ... nur zur verdeutlichung der einzufügenden Leerzeichen stehen
mit folgendem Code aus der
DP
Delphi-Quellcode:
function PadR(aValue: string; aLen: byte; aFill: char): string;
//right pads a string with spaces
begin
Result := aValue + StringOfChar(aFill, aLen - Length(aValue));
end;
procedure TForm1.Button1Click(Sender: TObject);
var
sl1: TStringList;
sl2: TStringList;
ndx1: integer;
feld001: string;
feld002: string;
begin
sl1 := TStringList.Create;
sl2 := TStringList.Create;
try
sl2.Delimiter := #9;
sl1.LoadFromFile('kurz.txt');
for ndx1 := 0 to Pred(sl1.Count) do
begin
sl2.DelimitedText := sl1.Strings[ndx1];
feld001 := PadR(sl2.Strings[0], 20, ' ');
feld002 := PadR(sl2.Strings[1], 50, ' ');
Memo1.Lines.add(feld001 + feld002);
end;
finally
sl2.Free;
sl1.Free;
end;
end;
habe ich leider folgendes schematisches Ergebnis.
Code:
AAAAA.....BBBBB.................................
Offenbar schneidet Stringlist.string den gesamten String B an der Stelle des ersten Leerzeichens ab und überschreibt den Rest des Strings mit Leerzeichen.
Wie kann ich das Verhindern ?