Registriert seit: 3. Jan 2013
199 Beiträge
Delphi 10.4 Sydney
|
Text (Strings) Zeilenumbrüche einfügen aufgrund von Satzzeichen.!?
30. Jun 2022, 14:07
Hallo alle zusammen.
Ich habe längere Texte wo ich automatisch Zeilen Umbrüche einfügen möchte.
Es funktioniert zwar schon +/- so wie ich das will aber ich weiss nicht wie ich es machen kann dass mehrere Zeichen (also nicht nur der "." sondern auch "!?" gleichzeitig beachtet werden.
Habe es so versucht aber das geht nicht:
Pos1 := Pos('.'or'!'or'?', stextformatierung);
Beispiel Text
1111111.
22222!
ERSTER UMBRUCH SOLL nach 2 "Sonderzeichen" HIER REIN <--
333333?
44444.
55555!
ZWEITER UMBRUCH SOLL nach weiteren 3 "Sonderzeichen" HIER REIN <--
6666.
7777.
8888?
Dritter UMBRUCH SOLL nach weiteren 3 "Sonderzeichen" HIER REIN <--
usw
usw
Im Moment mache ich das so:
Delphi-Quellcode:
procedure TForm1.Timer1Timer(Sender: TObject);
var
s,ZahlResultat: string;
pos1, zahllänge, pos2, pos3, pos4, pos5, pos6, pos7,pos8,pos9, pos10, pos11, pos12,i: integer;
Anzahl : Integer;
begin
memo1.Clear;
memo1.PasteFromClipboard;
if form1.Memo1.GetTextLen>250 then begin
// Text formatierung abschnitt
pos1:=-1;
pos2:=-1;
pos3:=-1;
pos4:=-1;
pos5:=-1;
pos6:=-1;
pos7:=-1;
pos8:=-1;
pos9:=-1;
pos10:=-1;
pos11:=-1;
pos12:=-1;
//Damit es nicht das resultat wieder und wieder formatiert.
if memo1.Text=stextformatierung then abort;
stextformatierung:=memo1.Text;
//2 Sätze für den Anfang
Pos1 := Pos('.', stextformatierung);
if Pos1 <> 0 then begin
Pos2 := PosEx('.', stextformatierung, Pos1 + 1);
end;
if Pos2 <> 0 then begin
Insert(#13#10+#13#10, stextformatierung, pos2+2)
end;
//3 Sätze
pos4 := PosEx('.', stextformatierung, Pos2 + 1);
if Pos4 <> 0 then begin
Pos5 := PosEx('.', stextformatierung, Pos4 + 1);
end;
pos5 := PosEx('.', stextformatierung, Pos4 + 1);
if Pos5 <> 0 then begin
Pos6 := PosEx('.', stextformatierung, Pos5 + 1);
end;
if Pos5 <> 0 then begin
Insert(#13#10+#13#10, stextformatierung, pos6+2)
end;
//3 Sätze
pos7 := PosEx('.', stextformatierung, Pos6 + 1);
if Pos7 <> 0 then begin
Pos8 := PosEx('.', stextformatierung, Pos7 + 1);
end;
pos8 := PosEx('.', stextformatierung, Pos7 + 1);
if Pos8 <> 0 then begin
Pos9 := PosEx('.', stextformatierung, Pos8 + 1);
end;
if Pos8 <> 0 then begin
Insert(#13#10+#13#10, stextformatierung, pos9+2)
end;
//3 Sätze
pos10 := PosEx('.', stextformatierung, Pos9 + 1);
if Pos10 <> 0 then begin
Pos11 := PosEx('.', stextformatierung, Pos10 + 1);
end;
pos11 := PosEx('.', stextformatierung, Pos10 + 1);
if Pos11 <> 0 then begin
Pos12 := PosEx('.', stextformatierung, Pos11 + 1);
end;
if Pos11 <> 0 then begin
Insert(#13#10+#13#10, stextformatierung, pos12+2)
end;
Clipboard.AsText := stextformatierung;
TrayIcon1.BalloonHint := 'TEXT Formatierung';
TrayIcon1.ShowBalloonHint;
end;
end;
Gruss Robert
Robert
|