AnaXyd Skrevet 3. juli 2007 Skrevet 3. juli 2007 Hei! Sorry for litt.. rar emnetittel! Men var vanskelig å definere spm mitt.. Jeg trenger hjelp til en litt simpel ting... Jeg har en kode: Private Sub Button4_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button4.Click Dim file As New System.IO.StreamWriter("c:\test.txt") file.Dispose() file.Close() Det denne koden gjør for meg, er at den resetter en tekstfil som jeg bruker som logg. Men, etter at man har trykket inn button4, vil jeg at det skal komme opp en messagebox, som spør om man er sikker, med et valg mellom ja og nei (e.l) Jeg kan jo gjøre dette på den mer tunvinne måten, med å lage en ny form til akkurat dette. Men jeg vil gjøre det på den lette måten, da jeg sikkert kommer til å bruke denne funksjonen flere ganger! Håper på svar!
GeirGrusom Skrevet 3. juli 2007 Skrevet 3. juli 2007 (endret) If MsgBox("Vil du virkelig gjøre dette?") = DialogResult.OK Then If System.IO.File.Exist("c:\test.txt") Then System.IO.File.Delete("c:\test.txt") Dim file As New System.IO.StreamWriter("c:\test.txt") ' Skriv til fil her file.Close() file.Dispose() ' Dispose er unødvendig End If Endret 3. juli 2007 av GeirGrusom
AnaXyd Skrevet 3. juli 2007 Forfatter Skrevet 3. juli 2007 Takk for veldig raskt svar! Det funket som bare det!
AnaXyd Skrevet 5. juli 2007 Forfatter Skrevet 5. juli 2007 Jeg lurer på en ting, hva gjør egentlig dispose?
GeirGrusom Skrevet 5. juli 2007 Skrevet 5. juli 2007 En klasse har hva man kaller en "destructor" (Finalize i VB) det denne funksjonen gjør, er å evt slette all rest data som ikke fjernes av garbage collectoren automatisk. Problemet med destructors er at de ikke nødvendigvis blit kalt når objektet ikke lenger er i bruk, det er ikke engang garantert at den noensinne blir kalt. Derfor har man et interaface som heter IDisposable som implementerer en Dispose funksjon. I denne funskjonen skal man frigjøre eventuelle unmanaged ressurser som objektet har brukt, for hvis dette gjøres i destructoren, kan det eventuelt skape en memory leak. Database koplinger skal også lukkes i Dispose.
Manfred Skrevet 5. juli 2007 Skrevet 5. juli 2007 ...så lenge du ikke bruker using, som da disposer den automagisk... using(System.Data.SqlClient.SqlConnection sqlConn = new System.Data.SqlClient.SqlConnection(connString)) { sqlConn.Open(); ... }
GeirGrusom Skrevet 5. juli 2007 Skrevet 5. juli 2007 Jeg vet ikke om det finnes noe lignende using i VB.NET....
aadnk Skrevet 5. juli 2007 Skrevet 5. juli 2007 Jeg vet ikke om det finnes noe lignende using i VB.NET.... 9007705[/snapback] Joda, Using fungerer utmerket i den nyeste versjonen: Using File As New IO.StreamReader("C:\Test.txt") MessageBox.Show(File.ReadToEnd) End Using
aadnk Skrevet 6. juli 2007 Skrevet 6. juli 2007 GeirGrusom kom på bedre tanker... 9016600[/snapback] Hva er galt med VB.net? Foruten syntaksen og enkelte funksjonaliteter, er den helt lik C#.
Manfred Skrevet 6. juli 2007 Skrevet 6. juli 2007 "Foruten syntaksen og enkelte funksjonaliteter" er vel problemet...
GeirGrusom Skrevet 6. juli 2007 Skrevet 6. juli 2007 Jeg synes ofte at VB kode kan bli til tider ganske forpurret av keywords Som jeg har nevn tidligere, er Properties det verste eksempelet... Men jeg liker også event systemet i C# bedre (event += delegate) en Handles
Manfred Skrevet 6. juli 2007 Skrevet 6. juli 2007 ...en annen ting er småting som assignment og comparison... i C#: int i = 1; bool b = (i == 2); En annen ting er arrays vs. funksjonskall: i VB: aRandomName(2) 'Er dette en array, eller en funksjon som tar en int som parameter? aRandomName(3)(4) 'Er dette en To-dimensjonal array, eller er det en array som returneres av en funksjon?
GeirGrusom Skrevet 6. juli 2007 Skrevet 6. juli 2007 angående assignment i C#, kan man jo også skrive int a = b = c = 32; som effektivt vil sette a, b, c og d lik 32. Man kan også bruke dette i funksjoner som if((newfile = LoadFile("hello_world.txt")) == null) throw new Exception("File load failed") Mens i VB vil bruken av = bli veldig forvirrende.
ze5400 Skrevet 12. juli 2007 Skrevet 12. juli 2007 (endret) angående assignment i C#, kan man jo også skrive int a = b = c = 32; som effektivt vil sette a, b, c og d lik 32. En stund siden jeg har drevet med VB nå, men kan man ikke gjøre slik i VB.NET?: "Dim a, b, c As Integer = 32? EDIT: Merklig, VB.NET føles nesten like rart som C# før jeg hoppa over på det for noen måneder siden. Endret 12. juli 2007 av ze5400
GeirGrusom Skrevet 13. juli 2007 Skrevet 13. juli 2007 angående assignment i C#, kan man jo også skrive int a = b = c = 32; som effektivt vil sette a, b, c og d lik 32. En stund siden jeg har drevet med VB nå, men kan man ikke gjøre slik i VB.NET?: "Dim a, b, c As Integer = 32? EDIT: Merklig, VB.NET føles nesten like rart som C# før jeg hoppa over på det for noen måneder siden. 9061352[/snapback] Du har rett i det, men det kan kun være én assignment per linje, dette kunne fint være skrevet sånn i VB, men ikke utenfor variable deklerasjon int a, b, c; a = b = c = 32; er derimot ikke mulig i VB, da alle = etter det første vil bli gjort om til en sammenligning istedet for assigment. så da vil man vel få compile error om at a er av typen int, og ikke bool, samt at alle de andre variablene ikke er gitt en verdi.
ze5400 Skrevet 13. juli 2007 Skrevet 13. juli 2007 Stemmer, men det er jo (som Microsoft ville kalt det ) en feature pga. språkets syntaks. Hmm, tror jeg lar dette være siste gangen jeg prøver i virke smart Virker jo ikke
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å