Einzelnen Beitrag anzeigen

DieDolly

Registriert seit: 22. Jun 2018
2.175 Beiträge
 
#17

AW: StringList Textblöcke verschieben

  Alt 22. Mai 2019, 12:30
So funktioniert es bei mir. Alle Leerzeichen werden auch richtig gesetzt. Anders schaffe ich das nicht. Und selbst dann ist es n9icht zuverlässig.

Ich möchte ja keine Zeilen vertauschen sondern nur einen Block von oben irgendwo ganz nach unten verschieben.

Delphi-Quellcode:
var
 sl, slTemp: TStringList;
 i, LineStart, LineEnd, LineTarget: Integer;
begin
 sl := TStringList.Create;
 slTemp := TStringList.Create;
 try
  sl.Add('0 [');
  sl.Add('1');
  sl.Add('2');
  sl.Add('3');
  sl.Add('4');
  sl.Add(']');

  sl.Add('');

  sl.Add('5 [');
  sl.Add('6');
  sl.Add('7');
  sl.Add('8');
  sl.Add('9');
  sl.Add(']');

  sl.Add('');

  sl.Add('10 [');
  sl.Add('11');
  sl.Add('12');
  sl.Add('13');
  sl.Add('14');
  sl.Add(']');

  sl.Add('');

  sl.Add('15 {');
  sl.Add('16');
  sl.Add('17');
  sl.Add('18');
  sl.Add('19');
  sl.Add('}');

 // hier hin soll die 5-9

  sl.Add('');

  sl.Add('A');
  sl.Add('B');
  sl.Add('C');

  LineStart := sl.IndexOf('0 [');
  for i := LineStart to sl.Count - 1 do
   begin
    if sl.Strings[i] = ']then
     begin
      LineEnd := i + 2;
      Break;
     end;
   end;

  LineTarget := sl.IndexOf('15 [');
  for i := LineTarget to sl.Count - 1 do
   begin
    if sl.Strings[i] = ']then
     begin
      LineTarget := i + 2;
      Break;
     end;
   end;

  sl.SaveToFile('output1.txt');

  VerschiebeZeilen(sl, LineStart, LineEnd, LineTarget);

  sl.SaveToFile('output2.txt');
 finally
  slTemp.Free;
  sl.Free;
 end;
end;

Geändert von DieDolly (22. Mai 2019 um 12:36 Uhr)
  Mit Zitat antworten Zitat