Thema: Delphi CSV anpassen

Einzelnen Beitrag anzeigen

julchen

Registriert seit: 20. Mär 2008
115 Beiträge
 
Delphi 10.3 Rio
 
#32

AW: CSV anpassen

  Alt 24. Jan 2021, 15:48
Hallo,

warum funktioniert dein Code nicht?
Was mache ich da falsch?
Code:
// === laden ==============================================
procedure TForm1.Button1Click(Sender: TObject);
var str: TStringlist;
begin
     str := Tstringlist.Create;
     try
     str.LoadFromFile('c:\users\Julia\documents\stringlist.txt');
     Memo1.Lines.AddStrings(str);
     finally
     str.Free;
     end;
end;



// === 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;

  Memo1.Lines.AddStrings(sl);

  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;

// === speichern ==============================================
procedure TForm1.Button3Click(Sender: TObject);
var str: TStringlist;
i: integer;
begin
     str := tstringlist.Create;
     try
     Memo1.Lines.SaveToFile('c:\users\Julia\documents\stringlist.txt');
     finally
     str.Free;
     end;

end;
Kollegin: Am Wochenende wird mein PC immer langsamer! Liegt das am Strom?

Geändert von julchen (24. Jan 2021 um 15:50 Uhr)
  Mit Zitat antworten Zitat