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
 
Bjoerk

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

AW: e-mail adressen ordnen im memo

  Alt 13. Aug 2011, 20:21
Japp, Funzt, Danke Kumpel, hätte ich nicht gedacht, mich hat das <= *** verunsichert.


Delphi-Quellcode:
type
  TQCompare = function (Item1, Item2: string; const SortByProvider: boolean): integer;
Delphi-Quellcode:
function QCompare(Item1, Item2: string; const SortByProvider: boolean): integer;
var
  Provider1, Provider2, Name1, Name2 : string;
begin
  Item1:= AnsiLowerCase(Trim(Item1));
  Item2:= AnsiLowerCase(Trim(Item2));

  Result:= 0;
  if not SortByProvider then
  begin
    if Item1 > Item2 then
      Result:= 1
    else
      if Item1 < Item2 then
        Result:= -1;
  end
  else
  begin
    Provider1:= GetDomainPart(Item1);
    Provider2:= GetDomainPart(Item2);

    Name1:= GetNamePart(Item1);
    Name2:= GetNamePart(Item2);

    if Provider1 > Provider2 then
      Result:= 1
    else
      if Provider1 < Provider2 then
        Result:= -1
      else
        if Name1 > Name2 then
          Result:= 1
        else
          if Name1 < Name2 then
            Result:= -1;
  end;
end;

procedure QuickSort
  (const Strings: TStrings; L, R: integer;
    const QCompare: TQCompare; const SortByProvider: boolean);
var
  I, J, K: integer;
  P: string;
begin
  repeat
    I:= L;
    J:= R;
    K:= (L + R) shr 1;
    P:= Strings[K];
    repeat
      while QCompare(Strings[I], P, SortByProvider) < 0 do Inc(I);
      while QCompare(Strings[J], P, SortByProvider) > 0 do Dec(J);
      if I <= J then // **********************************************************************
      begin
        Strings.Exchange(I, J);
        Inc(I);
        Dec(J);
      end;
    until I > J;
    if L < J then QuickSort(Strings, L, J, QCompare, SortByProvider);
    L:= I;
  until I >= R;
end;


procedure TForm1.Button2Click(Sender: TObject);
var
  SL: TStringList;
begin
  SL:= TStringList.Create;
  SL.Assign(Memo1.Lines);
  SL.BeginUpDate;
  QuickSort(SL, 0, SL.Count-1, @QCompare, true);
  SL.EndUpDate;
  Memo1.Lines.Assign(SL);
  SL.Free;
end;
  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 00:03 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