Announcement

Collapse
No announcement yet.

Doppelte Einträge entfernen

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • Doppelte Einträge entfernen

    Liebe Kolleginnen und Kollegen,

    ich möchte mit dem C++ Builder ein Programm entwickeln
    welches eine Liste mit Emailadressen durcharbeitet und doppelte Einträge entfernt. Es sollte auch die Option geben, die nach doppelten Einträgen nach dem @ sucht.

    Was meint ihr, was wäre gut zu beachten, anzufangen, etc.

    Ich danke im Namen meiner Kollegen.

  • #2
    Nunja.. die Frage ist, in welcher Form die "Liste" vorliegt

    *.txt oder Office? etc...

    Ansonten seh ich hier nur Fleissarbeit..

    Comment


    • #3
      Liste in eine TStringList mit der Eigenschaft Sorted=true einlesen.
      Liste durcharbeiten, immer den zuletzt aktuellen Eintrag merken.
      Wenn der nächste identisch mit dem gemerkten ist, löschen.

      Mit der guten alten Funktion strrev (gibt es sowas nicht beim AnsiString?) alle Texte umdrehen
      Vergleichsschleife wiederholen, dabei aber nur die Zeichen bis zum @ auswerten
      Günther

      Comment


      • #4
        Herr Grams, Herr Weber,

        vielen Dank für erstmal für die Hilfe. Zum ersten, die Daten werden im *.txt Format vorliegen.

        Zum zweiten, Herr Weber, wärend er die Liste durcharbeitet und der jeweilig aktuelle Eintrag gemerkt wird und dann der nächste identisch mit dem gemerkten ist, werden doch immer nur die letzten mit den aktuellen verglichen und gfls. gelöscht, ist das richtig?

        Kurzes Beispiel:

        [email protected]
        [email protected]
        [email protected]
        [email protected]
        [email protected]
        [email protected]
        [email protected]
        [email protected]

        Nun ergäbe sich anhand der Liste folgende Möglichkeiten.

        a) Die Liste wird in eine TStringList geladen, anschließend wird Zeile für Zeile eingelesen und ab dem @ verglichen.

        Frage: Wie bzw. mit welchem Befehl kann man in diesem Fall ab dem @ suchen?

        b) Welche Möglichkeit gäbe es noch? Evtl. auch eine schnellere?

        Vielen Dank für Ihr entgegengebrachtes Interesse an meiner Frage

        Comment


        • #5
          Mit AnsiPos kann man nach dem @ suchen.
          .
          TStringList* slMals sei gegeben.
          int iPos;
          for (int i = 0; i <slMails->Count; i++)
          {
          iPos = slMails->Strings[i].AnsiPos("@"); // enthält 0, wenn @ nicht im String
          // irgendetwas machen...
          }
          In iPos steht nun die Position in der Zeile, in der das @-Zeichen ist.
          .
          Um doppelte Einträge in der StringList zu vermeiden, kann man diese auf Sorted = true und Duplicates = dupIgnore setzen. Somit werden identische Zeilen erst gar nicht eingefügt.
          .
          Ich hoffe das hilft dir (normalerweise duzen wir uns hier, ich hoffe das ist ok)
          .
          Grüße Joche

          Comment

          Working...
          X