Avatar billede justincase1089 Nybegynder
08. maj 2002 - 08:37 Der er 14 kommentarer og
1 løsning

Find i TObjectlist

Hej

Jeg har den her TObjectList der indeholder objekter af denne slags:

  TUWCBasicItem = class
  private
    FItemID : String;
    ...
    ...
    ...
  public
    property ItemID : String read FItemID write FItemID;
    ...
    ...
    ...
  end;

TObjectlisten er sorted ud fra ItemIDerne. Spørgsmålet er nu, hvordan jeg hurtigst muligt finder et object i listen ud fra ItemIDet?. Hvis der er en der har en stump kode til at gøre det vil det være at foretrække.

MVH Justin Case
Avatar billede poull Nybegynder
08. maj 2002 - 11:37 #1
Hvor får du ItemID'et fra for hvis der fx er fra en valgt item i et listwiev er der en meget nem måde. (Kan viose dig den hvis ovenstående er tilfældet).

Ellers skal du løbe igennem med en lykke, hvilket fornamt også er ganske hurtigt.
Avatar billede poull Nybegynder
08. maj 2002 - 11:44 #2
Eller når du siger at du har sorteret efter ID'et, kan du så sige om der kan springes et ID over for hvis man ikke kan det, er det jo bare at gå ind på plads.
Avatar billede justincase1089 Nybegynder
08. maj 2002 - 13:17 #3
IDerne kommer ikke fra en listview. Det er genereret fra indlæsningen af en tekstfil. Kommetar forstår jeg ikke :/
Spørgsmålet er, om ikke en eller anden binær søgning er det bedste.
Avatar billede poull Nybegynder
08. maj 2002 - 14:04 #4
Altså søgning i filen?
Avatar billede justincase1089 Nybegynder
08. maj 2002 - 14:09 #5
Nej. Du har en TObjectList der indeholder TUWCBasicItem med forskellige ItemIDer der er sortret alfabetisk. Glem hvor objekterne kommer fra, det er irrelevant i denne sammenhæng. Spørgsmålet er, om der er en eller anden der har noget kode til at finde et element i denne TObjectList ud fra det ItemID hvert element har. Man kan selvfølgelig bare starte fra idnex = 0 og gå dem alle igennem indtil man enten finder objektet eller er igennem listen, men det er for langsomt hvis der nu er 1E6 elementer.
Avatar billede poull Nybegynder
08. maj 2002 - 14:30 #6
Jeg er nok ikke så stærk i sådanne algoritmer så derfor kan jeg blot give dig denne henvisning og at du selv kan bruge den til noget.

http://www.efg2.com/Lab/Library/Delphi/Algorithms/index.html
Avatar billede justincase1089 Nybegynder
08. maj 2002 - 14:42 #7
Æv, men tak alligevel. Det er ikke sådan så jeg ikke selv kan kode skidtet, men det kunne jo være, at der er en der allerede har lavet det til TObjectList
Avatar billede poull Nybegynder
08. maj 2002 - 14:53 #8
Ligger de i rækkefølge, altså kan man være sikker på at nr 5 kommer nr 2 eller akn det godt være omvendt
Avatar billede poull Nybegynder
08. maj 2002 - 14:54 #9
For så er det ikek så svært skulle jeg mene
Avatar billede justincase1089 Nybegynder
08. maj 2002 - 14:56 #10
Index 1 : 'Allan'
Index 2 : 'Annette'
Index 3 : 'Bente'
Index 4 : 'Brian'
Index 5 : 'Mogens'
Index 6 : 'Zebra'
Avatar billede poull Nybegynder
08. maj 2002 - 15:06 #11
Jo men har index 1 og ID 1?
Avatar billede poull Nybegynder
08. maj 2002 - 15:06 #12
også ItemID 1

skulle der stå
Avatar billede martinlind Nybegynder
08. maj 2002 - 15:44 #13
Hvis du har Obj. ref. kan du bruge

IndexOfObject(MyObj)

Ved ikke om den findes på en ObjectList, men den findes på en TStringList.

/Martin
Avatar billede justincase1089 Nybegynder
09. maj 2002 - 15:55 #14
Jeg har ikke objektet "Spørgsmålet er nu, hvordan jeg hurtigst muligt finder et object i listen ud fra ItemIDet?."
Jeg har selv kodet skidtet nu.
Avatar billede justincase1089 Nybegynder
09. maj 2002 - 15:55 #15
Hmm
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester