jnzy Skrevet 20. juli 2004 Del Skrevet 20. juli 2004 Jeg holder paa med en simulation program naa. Problem er at det kommer en " Out of stack" error message naar simulation size overstiger 1000. Vet at det er noen ting med minne aa gjoere. Har dere noen forslag om hvordan jeg kan fjerne/utvide denne begrensning? Lenke til kommentar
aadnk Skrevet 20. juli 2004 Del Skrevet 20. juli 2004 (endret) Denne feilmeldingen kan ha flere årsaker, men den vanligste er en altfor hyppig bruk av DoEvents. Prøv heller å bruke koder som Me.Refresh eller Control.Refresh. Dessuten er det også viktig å merke at når du kaller DoEvents kan andre hendelser som ikke burde blitt kalt, bli det. Hvis du f.eks har en Timer og flere DoEvents kaller i denne hendelsen, kan det bli mulig at hendelsen kaller seg igjen før den andre er ferdig. Prøv da å hindre at Timer kalles flere ganger med å bruke Tag egenskapen, som du f.eks setter til 1 etter du har sjekket at den er tom. Når prosedyren avslutter igjen, setter du egenskapen til 0. Det er også mulig at feilmeldingen oppstår pga. lokale variabler som bruker mer plass enn det som er tilgjengelig. Hvis dette er tilfellet kan du prøve å deklarere variablene i en modul, eller sette nøkkelordet Static forann prosedyrene eller variablene. Også unngå bruken av fixed-length strenger. Disse er mye raskere enn varable strenger, men tar opp hele sinn plass i stack-minnet. Fixed-lenght strenger deklareres slik: Dim Variable As String * 50. I dette eksempelet kan du deklarere variabelen sånn: Dim Variable As String. Til slutt må du også sjekke at du ikke har altfor mangen aktive Functions, Subs og Properties. Sjekk om ingen av disse kaller seg selv på en eller annen måte. Endret 20. juli 2004 av aadnk Lenke til kommentar
jnzy Skrevet 21. juli 2004 Forfatter Del Skrevet 21. juli 2004 Jeg forstaar ikke helt det med DoEvents, mente du det med en metode kall eller? Hva er me.refresh og controll.refresh? Du nevnte ogsaa det med fixed length String, vil det samme gjelder med fix length array ogsaa? Lenke til kommentar
aadnk Skrevet 21. juli 2004 Del Skrevet 21. juli 2004 Det samme vil ikke gjelde for fixed-lenght arrayer. Og hva jeg mente med DoEvents. var ganske enkelt at du burde ikke bruke denne så ofte. Hvis du f.eks skal oppdatere en kontroll innenfor en Do-Loop er det smartere å bruke Control.Refresh (Control skal altså erstattes med kontrollens navn) istedenfor DoEvents. Prøv å legg variablene dine i en modul, eller sett nøkkelordet Static forann og se hva som skjer. Lenke til kommentar
jnzy Skrevet 22. juli 2004 Forfatter Del Skrevet 22. juli 2004 Takk for tipset Jeg proevde aa erstatte alle Private med Static, det hjalp litt, grense har utvide fra 1005 til 1052, men forsatt ikke mange nok... Jeg skjoente forsatt ikke hva er en egentlig DoEvent og hva en *.refresh vil gjoere paa program mitt.... Er det mulig aa forklare det med en eksempel? Lenke til kommentar
aadnk Skrevet 22. juli 2004 Del Skrevet 22. juli 2004 Det hadde vært greiest om vi kunne få se dette programmet, for å så påpeke hva som eventuelt kan gjøres bedre. Lenke til kommentar
Anbefalte innlegg
Opprett en konto eller logg inn for å kommentere
Du må være et medlem for å kunne skrive en kommentar
Opprett konto
Det er enkelt å melde seg inn for å starte en ny konto!
Start en kontoLogg inn
Har du allerede en konto? Logg inn her.
Logg inn nå