AGB  ·  Datenschutz  ·  Impressum  







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

TList.Sort

Ein Thema von Bjoerk · begonnen am 5. Sep 2011 · letzter Beitrag vom 5. Sep 2011
Antwort Antwort
Bjoerk

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

TList.Sort

  Alt 5. Sep 2011, 18:06
Delphi-Version: 5
Geht das nicht mehr mit dem as casten? Ich finde die richtige Syntax nicht (mehr).

TItem ist ein Record
Delphi-Quellcode:
type
  TItem = Record
    FileName: string;
    FileSize: integer;
  end;
Delphi-Quellcode:
function FileSizeCompare (Item1, Item2: Pointer): integer;
begin
  Result:= 0;
  if (Item1 as TItem).FileSize > (Item2 as TItem).FileSize then
    Result:= 1
  else
    if (Item1 as TItem).FileSize < (Item2 as TItem).FileSize then
      Result:= -1
end;


function FileNameCompare (Item1, Item2: Pointer): integer;
begin
  Result:= 0;
  if (Item1 as TItem).FileName > (Item2 as TItem).FileName then
    Result:= 1
  else
    if (Item1 as TItem).FileName < (Item2 as TItem).FileName then
      Result:= -1
end;
  List1.Sort(FileNameCompare);
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.548 Beiträge
 
Delphi 11 Alexandria
 
#2

AW: TList.Sort

  Alt 5. Sep 2011, 18:23
As funktioniert nur mit Klassen, weder mit Pointern noch mit Records.
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
Bjoerk

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

AW: TList.Sort

  Alt 5. Sep 2011, 18:28
Ok. Thanx.

Ist das korrekt?
TItem(Item1^).FileSize

BTW, schreibt man Sort(@FileNameCompare) oder Sort(FileNameCompare) ?
  Mit Zitat antworten Zitat
jbg

Registriert seit: 12. Jun 2002
3.483 Beiträge
 
Delphi 10.1 Berlin Professional
 
#4

AW: TList.Sort

  Alt 5. Sep 2011, 19:49
Ist das korrekt?
TItem(Item1^).FileSize
Nein. TItem(Item1).FileSize.

Zitat:
BTW, schreibt man Sort(@FileNameCompare) oder Sort(FileNameCompare) ?
Mit dem @ erlaubt der Compiler es dir, dass du statt "Pointer" direkt richtigen Typ in den Parametern nutzen kannst, da der Compiler die Typenprüfung weg lässt. Ohne das @ prüft der Compiler alle Typen.
  Mit Zitat antworten Zitat
Bjoerk

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

AW: TList.Sort

  Alt 5. Sep 2011, 20:52
Ui, da wäre ich nie draufgekommen (da TListSortCompare ja Items vom Typ Pointer benutzt). Many thanx Andreas. Für Sort(@FileNameCompare) kann ich also Items vom Typ TItem mitschicken.
  Mit Zitat antworten Zitat
jbg

Registriert seit: 12. Jun 2002
3.483 Beiträge
 
Delphi 10.1 Berlin Professional
 
#6

AW: TList.Sort

  Alt 5. Sep 2011, 21:15
mitschicken.
Wohl eher "uminterpretieren". Sollte sich aber mal die API von TList.Sort ändern, bekommst das erst mit wenn das Programm zu Laufzeit kracht.
  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 03:57 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz