04. december 2002 - 14:37Der er
29 kommentarer og 1 løsning
Underlig crash i vb og program!?!
Lige nu sidder jeg med et program, hvor jeg oplever at det crasher. Er det normalt at vb også lukker ned, når jeg kører programmet via vb?
Lige nu har jeg et problem med programmet (en filmliste program), hvor programmet ca. hver 10. gang jeg vælger at redigere i film-info, crasher, uden nogen som helst fejlmeddelelser. (Har ikke oplevet crashet, når jeg tilføjer en ny film til listen)
Jeg er kommet frem til, at fejlen må ligge i følgende kode:
Kan det være så enkelt at du simpelt hen skriver for meget data i text4? Altså, hvis der er mange film, så kunne det jo tænkes at du fik et overflow et eller andet sted og så vil den knække halsen.
DET var mystisk - jeg har altid brugt textstreams et hav af gange og det har altid fungeret upåklageligt. Jeg går ud fra at du har tjekket at filen faktisk findes?
Ja, filen findes (Har lige tjekket, men ellers burde det ikke tage 10-20 forsøg før det kommer til crashet). Og den fil, skal også bruges, før man overhovedet kan redigere/tilføje en film
Jeg tror det ser ud til at virke, jeg har lige prøvet 60+ gange, og det har ikke crashet endnu. Men jeg holder lige spørgsmålet åbent lidt endnu, for at være helt sikker
Jeg har også lige prøvet Msgbox strName, men den ser rigtig nok ud. Jeg smed den ind, lige under strName = (App.path...). Den crasher lige efter msgboxen er blevet vist...
Af en eller anden grund, så virker det, som om at det kun crasher, når jeg tilføjer covers til filmen. Men det giver ikke noget mening, eftersom at ved tilføjelse af covers, så er det intet af det, som nævnes i overnævnte kode, der bliver ændret...
Hvad laver du med covers? Uforklarlige crash skyldes tit hukommelse der ikke bliver ryddet; glemmer du at frigive hukommelsesområder? Hvis du gør, kan crashet opstå uafhængigt af hvor problemet er opstået.
I den form, hvor crashet opstår, bliver covers kun kopieret til et andet bibliotek, men til gengæld, så (når jeg henter covers) bliver der lavet en thumbnail af billedet, i en anden form...så det kan måske have noget at gøre med hukkommelsen, sådan noget har jeg ikke pillet ved før.
Alle de objekter du har skal sættes til nothing når du er færdig med dem. Og recordsets og filer skal lukkes. Godt nok har VB garbage collection, men den fungerer ikke optimalt. Reelt skal du for hver set x = et-eller-andet, have en set x = nothing
Fandt lige en mindre fejl, som måske har kunnet sørge for at jeg ikke lukkede rigtigt, så jeg lavede lige 46 tests uden at det crashede. Håber at det virker nu så, men jeg holder den lige åbent til at jeg har lavet flere tests...
Jeg kan uploade programmet, vis i har lyst til at se nærmere på det, men jeg gætter på at det er noget svært at finde rundt i, eftersom jeg ikke er helt vildt god til at lave kommentarer (glemmer det hele tiden). Og programmet er ikke ligefrem skrevet profssionelt, så der er sikkert meget ubrugeligt kode i programmet...
Jeg kan ikke nå at se alverden på det før mandag alligevel. Prøv at se om du kan fange fejlen ved at sætten en errorhandle ind i rutinen. Det kan jo tænkes at du kan få en fejlkode, og så har du da lidt at gå efter.
Netop, sådan en errorhandler. Der kan du muligvis nå at fange en eventuel fejl.
Jeg er ikke helt enig i LoViX kommentar. En Dovents kan være praktisk i mange tilfælde, men nogle gange er man absolut ikke interesseret i at brugeren kan klikke løs i grænsefladen mens en rutine er i gang. Og hvis der skal være en DoEvents er det en god ide kun at sætte den til for et vist antal gennemløb; altså, så den kun kører for hver 10 eller 20 gennemløb, for ellers kan den trække gevaldige ressourcer ud.
Jeg prøver så i aften at sætte en errorhandler ind, der hvor fejlen opstår, men en sådan errorhanlder laver jo ikke en fejlkode, den hopper jo bare ned, til et andet sted i koden (eller efter koden), hvor den så kun kommer med den information, jeg selv siger at den skal komme med, vis den finder en fejl... eller er det noget jeg har misforstået her?
Næh, det er sådan set rigtig nok. Du får bare sendt programpointeren et andet sted hen og så må du selv tage over. En almindelig og simpel fejlhåndtering kan være bare at skrive fejlnr og beskrivelse i en messagebox.
Men som sagt, så er det måske lidt svært at finde rundt i. (Grunden til at der findes en tilføj spil sektion, er fordi jeg ikke er blevet færdig med den afdeling endnu) og grunden til at de få hjælpe-texter der er står på engelsk, er fordi jeg måske vil uploade programmet til planet-source-code (når programmet engang bliver færdigt... altså har de features, som det skal have, og er forhåbentligt crash-fri...)
Nå, det ser ikke ud til at komme nogen brugbare svar, så jeg takker for forsøget på at hjælpe mig, og lukker hermed spørgsmålet...
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.