27. april 2008 - 12:58Der er
9 kommentarer og 1 løsning
Hvordan laver jeg en hurtig for loop?
Jeg har en simpel for loop i delphi:
for i := 1 to antalElementer
Problemet er bare, at jeg ikke ved hvor mange antalElementer der bliver så der kan jo i princippet være 10.000 elementer, og det tager meget lang tid for den at løbe 10.000 igennem. Og jeg vil have den til at løbe 10.000 elementer igennem - på ingen tid!
Hvordan gør jeg det? Skal jeg til et helt andet programmeringssprog eller er det bestemt af CPU'en eller hvad er årsagen? Og hvad er løsningen?
Har du prøvet at lave "memo1.hide" før for-løkken, og "memo1.show" efter? Sagt på en anden måde: Har du skærmopdatering i din for-løkke kan det meget vel tage lang tid!
Du kan sætte lidt fut i det ved at bruge BeginUpdate og EndUpdate:
Memo1.Lines.BeginUpdate; try for i := 1 to 100000 do Memo1.lines.add(IntToStr(i)); finally Memo1.Lines.EndUpdate; end;
Har du nogle events koblet på din TMemo? Har ikke helt styr over om der trigges nogle hver gang du indsætter en linje. Måske slår BeginUpdate det fra; det har jeg ikke undersøgt, men hurtigere går det.
Kan ikke huske om det var dig der har spurgt om noget lignende hvor jeg foreslog at bruge et virtuelt listview. Det afhænger af hvor meget man skal kunne editere i data. Det er i alt fald nok den hurtigste måde at få noget på listeform.
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.