AGB  ·  Datenschutz  ·  Impressum  







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

e-mail adressen ordnen im memo

Ein Thema von biby90 · begonnen am 12. Aug 2011 · letzter Beitrag vom 14. Aug 2011
Antwort Antwort
Bjoerk

Registriert seit: 28. Feb 2011
Ort: Mannheim
1.384 Beiträge
 
Delphi 10.4 Sydney
 
#1

AW: e-mail adressen ordnen im memo

  Alt 13. Aug 2011, 21:35
BTW: Gestern hast Du behauptet, ein Memo wäre so schnell wie eine StringList zu sortieren. Stimmt nicht. Heute sagst du, man könne hier eine Methode von StringList verwenden. Stimmt so auch nicht. Soweit die Fakten..
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.585 Beiträge
 
Delphi 12 Athens
 
#2

AW: e-mail adressen ordnen im memo

  Alt 14. Aug 2011, 06:13
CustomSort kann man eine Sortierfunktion übergeben, jeweils eine Andere, da braucht man keinen weiteren parameter.

Delphi-Quellcode:
if SortByProvider then
  TStringList(nil).CustomSort(function(List: TStringList; Index1, Index2: Integer): Integer
    begin
      Result := AnsiCompareText(GetDomainPart(Item1), GetDomainPart(Item2))
      if Result = 0 then
        Result := AnsiCompareText(GetNamePart(Item1), GetNamePart(Item2));
    end)
else
  //StringList.CustomSort(function(List: TStringList; Index1, Index2: Integer): Integer
  // begin
  // Result := AnsiCompareText(Item1, Item2);
  // end);
  StringList.Sort; // hat sich ja nix geändert
Bei wem es noch keine anonymen Methoden gibt, der nutzt halt eine "normale" Funktion dafür.

AnsiLowerCase und die If-Vergleiche sind in Delphi-Referenz durchsuchenAnsiCompareText schon eingebaut.
Und nicht über das Ansi wundern ... unter Unicode ist das urplötzlich eine Unicodefunktion, weil irgendwe dachte es wäre cool so.
Oder Delphi-Referenz durchsuchenAnsiComparestr ohne integriertem AnsiLowerCase.
und bei falscher Sortierreihenfolge einfach die Parameter tauschen.

PS: Sowas wie Folgendes würde ich hiebei nie nutzen, denn ein NOT kann man beim Lesen shcnell mal übersehn
und die beiden Then-Else-Zweige kann man ja uch problemlos tauschen.
Delphi-Quellcode:
if not ... then
begin

end
else
Ein Therapeut entspricht 1024 Gigapeut.

Geändert von himitsu (14. Aug 2011 um 06:18 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.667 Beiträge
 
Delphi 12 Athens
 
#3

AW: e-mail adressen ordnen im memo

  Alt 14. Aug 2011, 09:17
BTW: Gestern hast Du behauptet, ein Memo wäre so schnell wie eine StringList zu sortieren. Stimmt nicht. Heute sagst du, man könne hier eine Methode von StringList verwenden. Stimmt so auch nicht. Soweit die Fakten..
Wenn man sich natürlich entsprechenden Code zusammenbaut, dem man verschiedene Datentypen als Parameter übergibt, dann hat man auch die Fakten, die einem in den Kram passen. Wie ich schon sagte: Memo.Lines und TStringlist sind beide von TStrings abgeleitet, also sollte es letztendlich egal sein, welcher Abkömmling dahintersteckt, sobald man dann TStrings übergibt. Und will man dann den eingebauten Quicksort von TStringlist nutzen, dann weist man innerhalb der Sortier-Routine eben den Parameter einer internen TStringList zu und sortiert diese. Aber ich halte mich jetzt auch aus dem Thema raus, da sich mir der Sinn nicht erschließt. Wenn es Dir Spaß macht, kannst Du ja einen Sortieralgo für die Telefonnummern aller Meiers in Buxtehude unabhängig von der Schreibweise coden, mir ist das Wurscht.
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
Benutzerbild von Sir Rufo
Sir Rufo

Registriert seit: 5. Jan 2005
Ort: Stadthagen
9.454 Beiträge
 
Delphi 10 Seattle Enterprise
 
#4

AW: e-mail adressen ordnen im memo

  Alt 14. Aug 2011, 11:24
Wo hier schon die Übersichtlichkeit angesprochen wurde, dann sollte man doch auch bitte die Oberfläche von der Logik getrennt werden!
Dann wird und bleibt es übersichtlich und man bekommt wiederverwendbaren Code.

Hier mal der implementation-Teil des Formulars:
Delphi-Quellcode:
uses
  CodePart; // In dieser Unit haben wir die Logik

procedure TForm1.Button1Click( Sender : TObject );
  begin
    SortEmailAdressList( Memo1.Lines );
  end;
Delphi-Quellcode:
unit CodePart;

uses
  Classes;

interface

procedure SortEmailAdressList( const EmailAdressList : TStrings );

implementation

procedure SortEmailAdressList( const EmailAdressList : TStrings );
begin
  // Hier jetzt den Code für die Sortierung der Liste
end;
Kaum macht man's richtig - schon funktioniert's
Zertifikat: Sir Rufo (Fingerprint: ‎ea 0a 4c 14 0d b6 3a a4 c1 c5 b9 dc 90 9d f0 e9 de 13 da 60)
  Mit Zitat antworten Zitat
Antwort Antwort


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 06:44 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