Einzelnen Beitrag anzeigen

blutigerAnfänger

Registriert seit: 23. Mär 2010
82 Beiträge
 
#1

Stringlist und pad String

  Alt 25. Feb 2014, 14:43
Delphi-Version: 6
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 ?
  Mit Zitat antworten Zitat