AGB  ·  Datenschutz  ·  Impressum  







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

Einfache array sortier routine

Ein Thema von EWeiss · begonnen am 2. Nov 2006 · letzter Beitrag vom 3. Nov 2006
Antwort Antwort
EWeiss
(Gast)

n/a Beiträge
 
#1

Einfache array sortier routine

  Alt 2. Nov 2006, 02:10
Welche Sortier Routine könnte man nutzen um ein Array
mit einträgen in der ComboBox zu vergleichen und zu sortieren.

Mein problem habe die ComboBox auf Sort = true gestellt
jetzt stimmen logischerweise die Arrays zu den Einträgen nicht mehr.

Jemand ein kleines Beispiel ?

EDIT:
Oder stellt die ComboBox etwas ähliches wie in VB zur verfügung?
Combo1.ItemData(Combo1.NewIndex) Leider habe ich da nichts gefunden.
gruß
  Mit Zitat antworten Zitat
Benutzerbild von Sunlight7
Sunlight7

Registriert seit: 17. Sep 2006
Ort: Sonnensystem, Zentral
1.522 Beiträge
 
Delphi 5 Standard
 
#2

Re: Einfache array sortier routine

  Alt 2. Nov 2006, 04:26
Auch schon so früh Unterweges?

Du könntest mit Hier im Forum suchenAddObject Pointer mit Mini-Klassen hinzufügen, um die Daten synchron zu halten, wenn es das ist, was Du möchtest.
Windows: Ja - Microsoft: Nein -> www.ReactOS.org
  Mit Zitat antworten Zitat
EWeiss
(Gast)

n/a Beiträge
 
#3

Re: Einfache array sortier routine

  Alt 2. Nov 2006, 06:26
Zitat von Sunlight7:
Auch schon so früh Unterweges?

Du könntest mit Hier im Forum suchenAddObject Pointer mit Mini-Klassen hinzufügen, um die Daten synchron zu halten, wenn es das ist, was Du möchtest.
Hab den Quelltext mal hochgeladen..
Kann dann ein anderer machen

gruß
  Mit Zitat antworten Zitat
Benutzerbild von Sunlight7
Sunlight7

Registriert seit: 17. Sep 2006
Ort: Sonnensystem, Zentral
1.522 Beiträge
 
Delphi 5 Standard
 
#4

Re: Einfache array sortier routine

  Alt 2. Nov 2006, 06:39
Welchen Quellcode hochgeladen?
Meinst du das? Fremde Menüs steuern
Das mußt Du aber auch dazu sagen
Windows: Ja - Microsoft: Nein -> www.ReactOS.org
  Mit Zitat antworten Zitat
EWeiss
(Gast)

n/a Beiträge
 
#5

Re: Einfache array sortier routine

  Alt 2. Nov 2006, 06:54
Zitat von Sunlight7:
Welchen Quellcode hochgeladen?
Meinst du das? Fremde Menüs steuern
Das mußt Du aber auch dazu sagen
Jaaaa bin langsam müd da macht man schon mal Fehler

greets
  Mit Zitat antworten Zitat
Der_Unwissende

Registriert seit: 13. Dez 2003
Ort: Berlin
1.756 Beiträge
 
#6

Re: Einfache array sortier routine

  Alt 2. Nov 2006, 09:29
Zitat von Sunlight7:
Du könntest mit Hier im Forum suchenAddObject Pointer mit Mini-Klassen hinzufügen, um die Daten synchron zu halten, wenn es das ist, was Du möchtest.
Hi,
eigentlich solltest du eher nach Hier im Forum suchenAddItem suchen. Das du etwas hochgeladen hast und nicht weiter drüber sprichst ist natürlich durch die Uhrzeit zu rechtfertigen, aber da auch andere in diesem Thread landen könnten, die ein Ähnliches Problem haben, wäre es doch nett hier auch etwas genaueres zu sagen.

Was das Problem ganz allgemein angeht, so kennt Delphi einen recht schönen Weg. Eine ComboBox greift auf ein TStrings-Objekt zurück, dieses Objekt verwaltet dabei eine Liste von Strings. Zu jedem Eintrag (String) kann eine Referenz auf ein beliebiges Objekt (hier wirklich Instanz einer Klasse) übergeben werden. Ein Array ist somit nicht nötig. Diese Zuordnung (String, Objekt) bleibt auch beim Sortieren erhalten. Genau genommen wird auch nur das TStrings-objekt sortiert.
Dieser Ansatz ist übrigens ein sehr Objekt-Orientierter, da das TStrings-Objekt all diese Eigenschaften schön kapselt und wiederverwendet werden kann (und wird, u.A. in der TListView), aber auch dir zur Verfügung steht (TStringList, THashedStringList, eigene Nachfahren der abstrakten Klasse TStrings).

Gruß Der Unwissende
  Mit Zitat antworten Zitat
EWeiss
(Gast)

n/a Beiträge
 
#7

Re: Einfache array sortier routine

  Alt 2. Nov 2006, 18:43
Zitat von Der_Unwissende:
Zitat von Sunlight7:
Du könntest mit Hier im Forum suchenAddObject Pointer mit Mini-Klassen hinzufügen, um die Daten synchron zu halten, wenn es das ist, was Du möchtest.
Hi,
eigentlich solltest du eher nach Hier im Forum suchenAddItem suchen. Das du etwas hochgeladen hast und nicht weiter drüber sprichst ist natürlich durch die Uhrzeit zu rechtfertigen, aber da auch andere in diesem Thread landen könnten, die ein Ähnliches Problem haben, wäre es doch nett hier auch etwas genaueres zu sagen.

Was das Problem ganz allgemein angeht, so kennt Delphi einen recht schönen Weg. Eine ComboBox greift auf ein TStrings-Objekt zurück, dieses Objekt verwaltet dabei eine Liste von Strings. Zu jedem Eintrag (String) kann eine Referenz auf ein beliebiges Objekt (hier wirklich Instanz einer Klasse) übergeben werden. Ein Array ist somit nicht nötig. Diese Zuordnung (String, Objekt) bleibt auch beim Sortieren erhalten. Genau genommen wird auch nur das TStrings-objekt sortiert.
Dieser Ansatz ist übrigens ein sehr Objekt-Orientierter, da das TStrings-Objekt all diese Eigenschaften schön kapselt und wiederverwendet werden kann (und wird, u.A. in der TListView), aber auch dir zur Verfügung steht (TStringList, THashedStringList, eigene Nachfahren der abstrakten Klasse TStrings).

Gruß Der Unwissende
Danke werde ich in der nächsten zeit mal in Angriff nehmen
kenne mich mit dem TStrings-Object nicht aus muss mich also erst mal schlau machen.
Denke aber mal das diese zur selben zeit gefüllt werden muss sobald die einträge der Combo hinzugefügt werden.

gruß
  Mit Zitat antworten Zitat
Der_Unwissende

Registriert seit: 13. Dez 2003
Ort: Berlin
1.756 Beiträge
 
#8

Re: Einfache array sortier routine

  Alt 3. Nov 2006, 08:30
Zitat von EWeiss:
Denke aber mal das diese zur selben zeit gefüllt werden muss sobald die einträge der Combo hinzugefügt werden.
Hier findest du einfach die Trennung zwischen den Daten und der Repräsentation. Die Combobox zeigt einfach nur Strings auf eine bestimmte Art und Weise an, wo die herkommen / wo die gespeichert werden ist dabei nichts, was die Combobox selbst macht. Diese greift dafür einfach auf eine Struktur zurück, die eben nur diese Aufgabe hat. Da kommt dann die TStrings-Klasse ins Spiel. Dies ist eine abstrakte Klasse, hier kann also auch jede Instanz zugrunde liegen, die alle abstrakten Methoden dieser Klasse implementiert (und die anderen erbt).
Wenn du also der Combobox einen Eintrag hinzufügst, dann passiert (für dich transparent) nichts anderes, als dass dieser String in ein TStrings-Objekt abgelegt wird. Wie gesagt, für dich ist das zwar transparent, aber du hast auch die Möglichkeit direkt auf dieses TStrings-Objekt zuzugreifen. Diese Möglichkeit kannst du dann dazu nutzen, eine Referenz mit einem String zu verknüpfen (eine Verknüpfung, die dann immer aufrecht erhalten wird, auch beim Vertauschen einzelner Elemente in dem TStrings-Objekt).

Wenn du also sagst, dass das TStrings-Objekt zur selben Zeit wie die Combobox gefüllt werden muss, hast du natürlich recht, aber das ist eh die Aufgabe der Combobox, dafür zu sorgen. Diese verwaltet (komfortabler Weise) für dich ein eigenes TStrings Objekt. Nicht dass es falsch rüberkam und du denkst/dachtest, dass du zusätzlich ein TStrings-Objekt neben der Combobox bemühen solltest.

Gruß Der Unwissende
  Mit Zitat antworten Zitat
EWeiss
(Gast)

n/a Beiträge
 
#9

Re: Einfache array sortier routine

  Alt 3. Nov 2006, 09:32
Zitat:
Nicht dass es falsch rüberkam und du denkst/dachtest, dass du zusätzlich ein TStrings-Objekt neben der Combobox bemühen solltest.
Genau das habe ich gedacht!

gruß
  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 11:56 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