Thema: Delphi CSV anpassen

Einzelnen Beitrag anzeigen

Delphi.Narium

Registriert seit: 27. Nov 2017
2.415 Beiträge
 
Delphi 7 Professional
 
#33

AW: CSV anpassen

  Alt 24. Jan 2021, 15:58
Delphi-Quellcode:
// === verarbeitung ==============================================
procedure TForm1.Button2Click(Sender: TObject);
var
  i : Integer;
  sl : TStringList;
  sAnrede : String;
  sTitel : String;
  sNachname : String;
  sVorname : String;
  sABCD : String;
  sTermin : String;
  iPos : Integer;
  sTemp : String;
begin
  sl := TStringList.Create;
// Was mag hier wohl in sl sein?
// Ziemlich genau nichts.
// In meinem Beispiel waren die Daten per .Add in die Stringliste eingefügt worden.
// Hier müsstest Du sie daher aus dem Memo übernehmen.
// statt
// Memo1.Lines.AddStrings(sl);
// eher
  sl.AddStrings(Memo1.Lines);
  for i := 0 to sl.Count - 1 do begin
    sTemp := Trim(sl[i]);
    // Falls mal jemand 'ne Leerzeile einschmuggelt:
    if sTemp = 'then continue;
    // WriteLn('Quelle: ' + sl[i]); // Ausgabe nur zum Testen
    // Zuerst den Termin holen:
    iPos := Pos('Terminplan',sTemp);
    sTermin := Copy(sl[i],iPos,Length(sTemp));
    // Den Termin entfernen.
    sTemp := Copy(sTemp,1,iPos - 3);
    // Position von " mit " ermitteln
    iPos := Pos(' mit ',sTemp);
    // und alles hinter " mit " holen.
    sABCD := Copy(sTemp,iPos + 5,Length(sTemp));
    // Alles, einschließlich " mit " entfernen.
    sTemp := Copy(sTemp,1,iPos - 1);
    // Gibt es ein Komma, dann gibt es auch einen Vornamen.
    iPos := Pos(', ',sTemp);
    sVorname := '';
    if iPos > 0 then begin
      sVorname := Trim(Copy(sTemp,iPos + 1,Length(sTemp)));
      sTemp := Copy(sTemp,1,iPos - 1);
    end;
    // Erstes Leerzeichen suchen, davor steht die Anrede.
    iPos := Pos(' ',sTemp);
    sAnrede := Copy(sTemp,1,iPos - 1);
    // Anrede entfernen.
    sTemp := Copy(sTemp,iPos + 1,Length(sTemp));
    // Haben wir 'nen Punkt, so haben wir auch 'nen Titel:
    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);
    // Der verbliebene Rest entspricht dem Nachnamen:
    sNachname := sTemp;
    sl[i] := Format('%s;%s;%s;%s;mit %s: %s', [sAnrede, sTitel, sNachname, sVorname, sABCD, sTermin]);
// WriteLn('CSV : ' + sl[i]); // Ausgabe nur zum Testen
  end;
  sl.SaveToFile('c:\users\Julia\documents\stringlist.txt');
  sl.Free;
end;
  Mit Zitat antworten Zitat