AGB  ·  Datenschutz  ·  Impressum  







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

String in TObjectList suchen

Ein Thema von StepByStep · begonnen am 12. Nov 2014 · letzter Beitrag vom 13. Nov 2014
Antwort Antwort
StepByStep

Registriert seit: 12. Nov 2014
Ort: Schleswig-Holstein
61 Beiträge
 
Delphi 7 Professional
 
#1

AW: String in TObjectList suchen

  Alt 12. Nov 2014, 11:50
Ja das ist richtig, iAnzahl ist ein Integer. Ich wollte aber gar nicht den Maximalwert der Integers wiedergeben, sondern den der TOjectList.
Ich hatte mir jetzt mal, die Sortierfunktion der TObjectList angeschaut, diese ist aber gar nicht anders als meine, kann das sein?

Mein Problem liegt daran, dass ich nicht genau weiß, wie ich auf die Richtige "Spalte" der TObjectList zugreife, also auf iAnzahl und danach sortiere und das richtig ausgebe...
Jan
  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
 
#2

AW: String in TObjectList suchen

  Alt 12. Nov 2014, 12:19
Warum nicht einfach einen IComparer<T> Delphi-Referenz durchsuchenSystem.Generics.Defaults.IComparer der Liste übergeben?

Dann kann man ganz simpel mit Delphi-Referenz durchsuchenSystem.Generics.Collections.TList.Contains abfragen ob eine gleiche Instanz schon in der Liste enthalten ist.

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)

Geändert von Sir Rufo (12. Nov 2014 um 12:37 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

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

AW: String in TObjectList suchen

  Alt 12. Nov 2014, 12:36
Die Sortierung an sich übernimmt die Liste selbst, Du musst nur die Vergleichsfunktion schreiben, die festlegt, wann ein Item "kleiner" als das andere ist. Diese Vergleichsfunktion kannst Du sogar beim Aufruf als anonyme Methode übergeben. Ungetestet:
Delphi-Quellcode:
List.Sort(TComparer<TWort>.Construct(
  function(const Left, Right: TWort): integer
  begin
    Result := Left.iAnzahl - Right.iAnzahl;
  end));
Für TComparer musst Du noch die Unit Generics.Defaults einbinden.
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
StepByStep

Registriert seit: 12. Nov 2014
Ort: Schleswig-Holstein
61 Beiträge
 
Delphi 7 Professional
 
#4

AW: String in TObjectList suchen

  Alt 12. Nov 2014, 12:56
Also das Vergleichen habe ich ja bereits mit DeddyH's Methode erfolgreich lösen können, die habe ich für meine Belange umgewandelt und integriert.
Einzig diese Sortierfunktion steht mir im Wege. Wobei ich glaube, dass es weniger die Funktion, als mein Verständnis dafür ist.

Zitat:
Die Sortierung an sich übernimmt die Liste selbst, Du musst nur die Vergleichsfunktion schreiben, die festlegt, wann ein Item "kleiner" als das andere ist. Diese Vergleichsfunktion kannst Du sogar beim Aufruf als anonyme Methode übergeben. Ungetestet:
markieren
Delphi-Quellcode:
List.Sort(TComparer<TWort>.Construct(
function(const Left, Right: TWort): integer
begin
Result := Left.iAnzahl - Right.iAnzahl;
end));
Für TComparer musst Du noch die Unit Generics.Defaults einbinden.
Wenn ich mir das so anschaue, würde ich gerne mal meine Gedanken dazu mitteilen und es wäre nett, wenn ihr sie ggf. berichtigt.
Ich habe eine Funktion mit zwei Variablen? des Typs TWort. Der Rückgabewert ist ein Integer.
Die Rechnung besagt: Links weniger rechts. Bsp.: 4, 9 - Dann sollte jetzt 9 mit 4 getauscht werden. Result = 5.

Aber was bringt mir dieses Result? Ich möchte im Enddefekt die nach der Anzahl sortierte Liste in einem weiteren Memofeld ausgeben.
Jan
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

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

AW: String in TObjectList suchen

  Alt 12. Nov 2014, 13:16
Die Vergleichsfunktion ist ein TComparison. Leider ist dieser in der Hilfe nicht sonderlich detailliert erklärt, aber Du kannst Dir auch TListSortCompare anschauen, die Funktionsweise ist ja die Gleiche, wenn mich nicht alles täuscht.
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
StepByStep

Registriert seit: 12. Nov 2014
Ort: Schleswig-Holstein
61 Beiträge
 
Delphi 7 Professional
 
#6

AW: String in TObjectList suchen

  Alt 12. Nov 2014, 14:04
Also, nach wie vor verstehe ich das nicht ganz. Weder das eine, noch das andere haben mir dabei geholfen.
Ich weiß nicht, wie ich das in meine Code einbinden muss... und je mehr ich mir durchlese, umso verwirrter bin ich.

Die dazugehörige Funktion muss ich doch irgendwo niederschreiben, erfolgt das in der class?
Jan
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

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

AW: String in TObjectList suchen

  Alt 12. Nov 2014, 14:29
Die Funktion steht doch schon in #19.
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
StepByStep

Registriert seit: 12. Nov 2014
Ort: Schleswig-Holstein
61 Beiträge
 
Delphi 7 Professional
 
#8

AW: String in TObjectList suchen

  Alt 12. Nov 2014, 14:41
Ja ich weiß, ich hatte dazu ja auch was geschrieben. Mein Problem ist einfach das Verständnis dafür.
Es wäre gut, wenn du mir vielleicht das ganze mal an einem Beispiel erklärst, weil ich stehe momentan echt auf dem Schlauch.

Ich habe also eine Liste mit zwei Elementen. Das erste hat einen Integerwert von 4 und das zweite Element hat einen Integerwert von 9.

Nach deinem Beispiel rechne ich jetzt '9-4' und das Ergebnis ist 5. Was genau bringt mir das aber jetzt? Was sagt diese 5 aus?
Diese Funktion muss ich aber doch gewiss irgendwo definieren/hinschreiben in meine Klasse oder nicht?

Entschuldigung... Ich bin gerade ziemlich begriffsstuzig.

Gruß
Jan
Jan
  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 20:19 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