AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

CSV anpassen

Ein Thema von julchen · begonnen am 15. Jan 2021 · letzter Beitrag vom 26. Jan 2021
 
Benutzerbild von bernau
bernau

Registriert seit: 1. Dez 2004
Ort: Köln
1.305 Beiträge
 
Delphi 12 Athens
 
#13

AW: CSV anpassen

  Alt 17. Jan 2021, 12:23
Probier es mal damit. BtnStartClick muss du dir entsprechend anpassen:

Delphi-Quellcode:
Procedure SplitAtPosAndTrim(const aSource: String; const aPosOfRightPart: Integer; var aLeftPart: string; var aRightPart: String);
begin
  aRightPart := Trim(copy(aSource, aPosOfRightPart, length(aSource) - aPosOfRightPart+1));
  aLeftPart := Trim(copy(aSource, 1, aPosOfRightPart-1));
end;

Function KonvertToCsvString(aSourceString: String): String;
const
  lTitelVorgaben: array [0 .. 2] of string = ('Dr.', 'Prof.', 'Dipl.-Ing.');
var
  lAnrede: String;
  lTitel1: String;
  lTitel2: String;
  lNachname: String;
  lVorname: String;
  lMit: string;
var
  lpos: Integer;
  a: Integer;
begin
  //*************************************************************
  // Vorsorglich Sonderzeichnen und Leerzeichen am Anfang und Ende ntfernen
  aSourceString := Trim(aSourceString);
  //*************************************************************
  // "mit" ist immer vorhanden und muss extrahiert werden
  SplitAtPosAndTrim(aSourceString, length(aSourceString) - 3, aSourceString, lMit);
  // Hier ggf kontrollieren, ob Source tatsächlich mit dem Wort "Mit" endete. > "if not SameText(lmit,'mit') then"
  //*************************************************************
  // Anrede ist immer als erstes vorhanden. Bis zum ersten Leerzeichen.
  lpos := PosEx(' ', aSourceString);
  SplitAtPosAndTrim(aSourceString, lpos, lAnrede, aSourceString);
  //*************************************************************
  // Anrede 1 filtern
  for a := low(lTitelVorgaben) to high(lTitelVorgaben) do
    if StartsText(lTitelVorgaben[a], aSourceString) then
      begin
        SplitAtPosAndTrim(aSourceString, length(lTitelVorgaben[a]) + 1, lTitel1, aSourceString);
        Break;
      end;
  //*************************************************************
  // Anrede 2 filtern
  for a := low(lTitelVorgaben) to high(lTitelVorgaben) do
    if StartsText(lTitelVorgaben[a], aSourceString) then
      begin
        SplitAtPosAndTrim(aSourceString, length(lTitelVorgaben[a]) + 1, lTitel2, aSourceString);
        Break;
      end;
  //***************************************************************************************
  // Nachname und Vorname ermitteln
  lpos := pos(',', aSourceString);
  if lpos = 0 then
    lNachname := aSourceString
  else
    begin
      SplitAtPosAndTrim(aSourceString, lpos + 1, lNachname, lVorname);
      // abschliessendes Komma entfernen
      lNachname := copy(lNachname, 1, length(lNachname) - 1);
    end;

  Result := lAnrede + ';' + lTitel1 + ';' + lTitel2 + ';' + lNachname + ';' + lVorname + ';' + lMit;
end;

procedure TForm1.BtnStartClick(Sender: TObject);
var
  a:Integer;
begin
  for a:=0 to MemoSource.lines.count-1 do
    MemoDest.lines.add(KonvertToCsvString(MemoSource.Lines[a]));
end;
Gerd
Kölner Delphi Usergroup: http://wiki.delphitreff.de
  Mit Zitat antworten Zitat
 


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 05:56 Uhr.
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz