Registriert seit: 27. Nov 2017
2.490 Beiträge
Delphi 7 Professional
|
AW: Compare String Funktion
29. Jan 2021, 11:00
Irgendwie sieht das doch schwer nach 'nem Folgeproblem von CSV anpassen aus:
Delphi-Quellcode:
procedure TForm1.Button2Click(Sender: TObject);
var
i : Integer;
sl : TStringList;
slNeu : TStringList;
sAnrede : String;
sTitel : String;
sNachname : String;
sVorname : String;
sABCD : String;
sTermin : String;
iPos : Integer;
sTemp : String;
sNameAlt : String;
sNameNeu : String;
begin
sl := TStringList.Create;
slNeu := TStringList.Create;
sl.AddStrings(Memo1.Lines);
sNameAlt := '';
sNameNeu := '';
try
for i := 0 to sl.Count - 1 do begin
sTemp := Trim(sl[i]);
if sTemp = '' then continue;
iPos := Pos(' mit',sTemp);
sABCD := Copy(sTemp,iPos + 5,Length(sTemp));
sTemp := Copy(sTemp,1,iPos - 1);
iPos := Pos(', ',sTemp);
sVorname := '';
if iPos > 0 then begin
sVorname := Trim(Copy(sTemp,iPos + 1,Length(sTemp)));
sTemp := Copy(sTemp,1,iPos - 1);
end;
iPos := Pos(' ',sTemp);
sAnrede := Copy(sTemp,1,iPos - 1);
sTemp := Copy(sTemp,iPos + 1,Length(sTemp));
sTitel := '';
iPos := Pos('. ',sTemp);
while iPos > 0 do begin
sTitel := Format('%s %s',[sTitel,Copy(sTemp,1,iPos)]);
sTemp := Trim(Copy(sTemp,iPos + 1,Length(sTemp)));
iPos := Pos('. ',sTemp);
end;
sTitel := Trim(sTitel);
sNachname := sTemp;
// Zwischen Zeilen unterschiedlicher Personen soll eine Leerzeile eingefügt werden:
slNameNeu := Format('%s;%s;%s;%s;',[sAnrede, sTitel, sNachname, sVorname]);
if sNameNeu <> sNameAlt then begin // Hat sich der Name geändert?
slNeu.Add(''); // Leerzeile einfügen
sNameAlt := sNameNeu; // und aktuellen Namen merken.
end;
slNeu.Add(Format('%s;%s;%s;%s;mit %s: %s', [sAnrede, sTitel, sNachname, sVorname, sABCD, sTermin]));
end;
// Am Anfang von slNeu ist jetzt (höchstwahrscheinlich) eine überflüssige Leerzeile:
if slNeu.Count > 0 then while (slNeu.Count > 0) and (slNeu[0] = '') do slNeu.Delete(0);
Memo2.Lines.assign(slNeu);
finally
slNeu.Free;
sl.Free;
end;
|
|
Zitat
|