14. november 2003 - 14:12Der er
10 kommentarer og 1 løsning
problem med optimering
jeg har et msflexgrid og der putter jeg poster ind i ud fra en tekstfil og det går sådanset os fint MEN meningen er at det skal kunne håndtere tekstfiler med 10.000 linier og opefter problemet er bare at det går hulens langsomt så mit spørgsmål er om der er nogen der har nogle gode optimeringsideer
Jeg har ikke dyrket din kode, men jeg kender et lignende problem fra gennemløb af listebokse. Dette skyldes at windows 'udglatter' alle skrå linier i tegnene. Det med listebokse har jeg løst ved at gøre listen usynlig mens den gennemløbes.
Prøv at sætte flxgrid.visible = false indtil indlæsning er færdig og så sæt visible til true.
det har jeg prøvet :/ os prøvet at slå redraw fra så den først opdaterer mit flexgrid når den er færdig men den sovser stadigvæk i et par minutter og jeg ved den slags kan gøres hurtigere ved ik om man kan få alt indhold i en .txt i et hug istedet for linie efter linie ligesom jeg gør der
ok det må jeg prøve du har ikke en ide til hvordan man finder antal linier uden at løbe hele filen igennem? for det koster nemlig dyrt hvis man skal køre den igennem 2 gange
men når min tekstfil er på de der 10000 linier så får jeg en runtime fejl der siger "unable to allocate memory to flexgrid" ved den her linie Form1.flxGrid.Rows = UBound(lArr) + 3
Spørgsmål: Er det virkelig nødvendigt at indlæse så mange linier samtidig? En bruger kan jo umuligt overskue dem alligevel. Kunne der ikke foreteges en udvælgelse efter brugerens forespørgsel?
At læse en tekstfil og tælle linier tager nu ikke lang tid, jeg har en på 7000 linier og den læses hurtigere en du kan sige 'slapstick sover', - med en 1,3 Ghz CPU og 512 MB ram.
Jeg skriver meget konservativ kode: Dim a as Long, linie as String
a = 0 Open form1.txtfiletoopen.text for input as #1 Do while EOF(1) = False Line Input #1, linie a = a +1 Loop Close #1
a indeholder jo så antal linier
En almindelig listeboks i VB5 kan højst indeholde 64.000 tegn, måske er der i MSFlexGrid en lignende begrænsning. Hvis der ellers mangler ram skulle swapfilen jo tage over.
det formål det skal bruges til kan der sagtens forkomme filer med over 30000 linier så det er lidt noget sovs hvis flexgrid har en sådan begrænsning men det underlige er at hvis jeg løber tekstfilen igennem linie for linie og tilføjer rækker efterhånden som de skal bruges så er det ikke noget problem at lave 10000 rækker men hvis jeg siger fra starten af at jeg vil ha den på 10000 rækker så får jeg den memory fejl
grunden til at alle linier skal med er fordi det er statistik filer der skal indlæses og de vil tit være på det antal linier og allesammen skal bruges så jeg har ikke så meget valg :/
Fint at du uddyber spørgsmålet. Men jeg synes stadig at en statistik med forskellige optællinger må kunne udføres uden at alle data befinder sig indlæst i en grid. Har du virkelig tænkt i alternative løsninger? og fundet at ingen er egnet.
ja er desværre nødt til at læse alle linierne ind fordi der skal kunne manipuleres med posterne
Synes godt om
Ny brugerNybegynder
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.