Thema: Delphi CSV anpassen

Einzelnen Beitrag anzeigen

Delphi.Narium

Registriert seit: 27. Nov 2017
2.490 Beiträge
 
Delphi 7 Professional
 
#31

AW: CSV anpassen

  Alt 23. Jan 2021, 16:37
Just for fun mal ein Pascalscript zum Thema:
Delphi-Quellcode:
program JustForFun;
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;
  // Statt eine Datei zu lesen
  // sl.LoadFromFile('c:\temp\wie.auch.immer.txt');
  sl.Add('Herr Mustermann mit ABCDEFGHI/00A (1): Terminplan(08:00 Uhr)');
  sl.Add('Herr Mustermann, Max mit ABCDEFGHI/00A (1): Terminplan(08:00 Uhr)');
  sl.Add('Herr Dr. Mustermann mit ABCDEFGHI/00A (1): Terminplan(08:00 Uhr)');
  sl.Add('Herr Dr. Mustermann, Max mit ABCDEFGHI/00A (1): Terminplan(08:00 Uhr)');
  sl.Add('Herr Prof. Dr. Mustermann mit ABCDEFGHI/00A (1): Terminplan(08:00 Uhr)');
  sl.Add('Herr Prof. Dr. Mustermann, Max mit ABCDEFGHI/00A (1): Terminplan(08:00 Uhr)');
  sl.Add('Herr Prof. Dr. rer. nat. Mustermann, Max mit ABCDEFGHI/00A (1): Terminplan(08:00 Uhr)');
  sl.Add('Herr Prof. Dr. Dipl.-Ing. Hummel, Johann-Nepomuk mit ABCDEFGHI/00A (1): Terminplan(08:00 Uhr)');
  sl.Add('Frau Dr. Wespe, Natalie mit ABCDEFGHI/00A (1): Terminplan(08:00 Uhr)');
  sl.Add('Frau Dr. med. Müller-Lüdenscheid, Cleopatra mit Julius Cäsar/00A (1): Terminplan(08:00 Uhr)');
  sl.Add('Herr van Gogh, Vincent Willem mit Gustav Klimt/00A (1): Terminplan(08:00 Uhr)');
  sl.Add('Herr Wells, H. G. mit Böll, Heinrich/00A (1): Terminplan(08:00 Uhr)');
  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:\temp\wie.auch.immer.csv');
  sl.Free;
end.
Die Ausgabe dazu:
Code:
Quelle: Herr Mustermann mit ABCDEFGHI/00A (1): Terminplan(08:00 Uhr)
CSV  : Herr;;Mustermann;;mit ABCDEFGHI/00A (1): Terminplan(08:00 Uhr)
Quelle: Herr Mustermann, Max mit ABCDEFGHI/00A (1): Terminplan(08:00 Uhr)
CSV  : Herr;;Mustermann;Max;mit ABCDEFGHI/00A (1): Terminplan(08:00 Uhr)
Quelle: Herr Dr. Mustermann mit ABCDEFGHI/00A (1): Terminplan(08:00 Uhr)
CSV  : Herr;Dr.;Mustermann;;mit ABCDEFGHI/00A (1): Terminplan(08:00 Uhr)
Quelle: Herr Dr. Mustermann, Max mit ABCDEFGHI/00A (1): Terminplan(08:00 Uhr)
CSV  : Herr;Dr.;Mustermann;Max;mit ABCDEFGHI/00A (1): Terminplan(08:00 Uhr)
Quelle: Herr Prof. Dr. Mustermann mit ABCDEFGHI/00A (1): Terminplan(08:00 Uhr)
CSV  : Herr;Prof. Dr.;Mustermann;;mit ABCDEFGHI/00A (1): Terminplan(08:00 Uhr)
Quelle: Herr Prof. Dr. Mustermann, Max mit ABCDEFGHI/00A (1): Terminplan(08:00 Uhr)
CSV  : Herr;Prof. Dr.;Mustermann;Max;mit ABCDEFGHI/00A (1): Terminplan(08:00 Uhr)
Quelle: Herr Prof. Dr. rer. nat. Mustermann, Max mit ABCDEFGHI/00A (1): Terminplan(08:00 Uhr)
CSV  : Herr;Prof. Dr. rer. nat.;Mustermann;Max;mit ABCDEFGHI/00A (1): Terminplan(08:00 Uhr)
Quelle: Herr Prof. Dr. Dipl.-Ing. Hummel, Johann-Nepomuk mit ABCDEFGHI/00A (1): Terminplan(08:00 Uhr)
CSV  : Herr;Prof. Dr. Dipl.-Ing.;Hummel;Johann-Nepomuk;mit ABCDEFGHI/00A (1): Terminplan(08:00 Uhr)
Quelle: Frau Dr. Wespe, Natalie mit ABCDEFGHI/00A (1): Terminplan(08:00 Uhr)
CSV  : Frau;Dr.;Wespe;Natalie;mit ABCDEFGHI/00A (1): Terminplan(08:00 Uhr)
Quelle: Frau Dr. med. Müller-Lüdenscheid, Cleopatra mit Julius Cäsar/00A (1): Terminplan(08:00 Uhr)
CSV  : Frau;Dr. med.;Müller-Lüdenscheid;Cleopatra;mit Julius Cäsar/00A (1): Terminplan(08:00 Uhr)
Quelle: Herr van Gogh, Vincent Willem mit Gustav Klimt/00A (1): Terminplan(08:00 Uhr)
CSV  : Herr;;van Gogh;Vincent Willem;mit Gustav Klimt/00A (1): Terminplan(08:00 Uhr)
Quelle: Herr Wells, H. G. mit Böll, Heinrich/00A (1): Terminplan(08:00 Uhr)
CSV  : Herr;;Wells;H. G.;mit Böll, Heinrich/00A (1): Terminplan(08:00 Uhr)
  Mit Zitat antworten Zitat