Ja vi må jo se om det er det der skal til for den afslutter fint nok men den er stadig i runing mode i VB men vi må lige se om den afslutter når den er compilet til EXE Jeg vender lige tilbage
johan, martin_moth>> Brug af End i VB er en dødssynd. End afslutter programudførslen øjeblikkelig uden at lade programmet rydde op efter sig i hukommelsen og diverse andre ting.
Hvis man bruger avancerede ting som subclassing i VB og bruger End, så kan du i værste fald komme ud i, at du skal genstarte.
Synes godt om
Slettet bruger
10. december 2002 - 11:27#10
benny.tordrup -> vi er enige om at man skal kuske at ryde op efter sig, men der er ikke noget galt i at bruge end, men det var jo ikke et oprydnings spørgsmål :-)
johan>> Jo, for du får ikke ryddet op efter dig ved brug af end. mc indikerer, at programmet stadig er i running mode efter unload me, og det betyder, at der ikke er rydded op. Den hukommelse, der bliver brugt til ikke unloadede forms bliver ikke frigivet med End.
benny.tordruop >> Hmm - på mit kursus i VB lærte jeg at bruge End til at afslutte VB. Men så må jeg jo have lært en uskik (beklager, at jeg nu vidergiver uskikken) - Men hvis man har en knap til at afslutte sit program, hvad i alverden skal man så bruge, hvis man ikke må bruge End?
<Snip> Note The End statement stops code execution abruptly, without invoking the Unload, QueryUnload, or Terminate event, or any other Visual Basic code. Code you have placed in the Unload, QueryUnload, and Terminate events of forms and class modules is not executed. Objects created from class modules are destroyed, files opened using the Open statement are closed, and memory used by your program is freed. Object references held by other programs are invalidated.
The End statement provides a way to force your program to halt. For normal termination of a Visual Basic program, you should unload all forms. Your program closes as soon as there are no other programs holding references to objects created from your public class modules and no code executing. </Snip>
martin_moth >> Undskyld, jeg siger det, men jeg vil stille spørgsmålstegn ved underviserens kompetence. At undervise i ting, der er i modstrid med hjælpens oplysninger. Det vil kræve en *særdeles* god forklaring.
Private Sub Afslut_Click() Svar = MsgBox("Ønsker du at afslutte", vbOKCancel) If Svar = vbOK Then dim F as frm for each f in forms if not (f is me) then unload f next f exit sub End If End Sub
benny.borup >> Nu har underviseren ikke sagt noget om End, andet at det kan bruges til at afslutte et program - og det er jo rigtigt :o)
Og der står jo netop, at "memory used by your program is freed"
Så jeg kan faktisk ikke forstå, at der skulle være noget som helst i vejen med at bruge End i et program
Man skal så bare vide, at man ikke får kørt den kode der evt. ligger i UnLoad, QueryUnload events osv - men det problem kan man jo bare kode sig ud af.
Så vidt jeg kan se "sviner" end ikke som du siger - den rydder derimod pænt op i memoryen (står der), og den lukker endda eventuelle filer, der er åbnede (det kunne man også have kodet sig ud af)
unload frigiver resurserne og er i reglen nok til at afslutte et program. Men for en sikkerheds skyld så brug også END. Brug også form_terminate eller form_unload, hvis der refereres til en unloaded form så loades den.
MainForm_terminate unload form1 unload form2 unload formx end
The End statement provides a way to force your program to halt. For normal termination of a Visual Basic program, you should unload all forms. Your program closes as soon as there are no other programs holding references to objects created from your public class modules and no code executing.
Læg mærke til, at der også står, at den frigør hukommelsen, altså ganske modsat hvad du skrev til at starte med... Jeg vil således stadig hævde, at man sagtens kan bruge End i en masse VB-programmer, såfremt man bare tager sine forholdsregler ;o)
Men jeg er da blevet klar over, at UnLoad er "pæne" måde at gøre det på - så den vil jeg bruge fremover :o)
OK - det var alligevel nyt for mig ;-) Hvis man har brugt undload...nothing, er det så fuldstændig ryddet op, altså ikke nogen grund til 'End'? (Sjovt nok er jeg vant til at bruge nothing i fbm. databaser: Set RS = Nothing)
I de tilfælde hvor man har et program, der ikke har "kontakt til omverdenen" (dvs. åbnet fil eller DB, bruges af andre programmer osv) ville jeg foretrække at skrive:
End
i stedet for ... form3.unload form2.unload Form1.unload ... Set form3 = nothing Set form2 = nothing Set form1 = nothing
I masser(!!!) af programmer vil man 100% problemfrit kunne bruge End, fx. dette
Private sub Form_load() command1.caption = "afslut" msgbox "hej, bare luk programmet nu" End sub
Private sub Command1_click() end End sub
Men som altid - man må lige overveje om den bratte afslutning med End giver komplikationer - måske har man nogle objekter, der lige skal sættes lig Nothing først ;o)
Summa sumarum:
Den korrekte måde er åbenbart at bruge unload og Nothing Man kan dog sagtens bruge End, sålænge man tager højde for dens virkemåde. Gør man det, er der intet i vejen for at bruge End.
Kan vi koge mere suppe på den længere...? (gæk gæk ;o)
Over and Out - nu skal jeg nok lade være med at blande mig mere :oD
Øhhh jeg har sku lige et mindre side problem her, Jeg har fundet ud af at End virker fint i mit tilfælde, men hvordan fanden skal jeg dele pointene i mellem jer
15 Point til 5 menesker = 3 Point til hver, Hmm lidt at tage røven på folk
Du vinder alligev Johan da du gav mig det svar som jeg benytter i dag nemlig End
MC
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.