Wubbable Skrevet 7. juni 2007 Skrevet 7. juni 2007 (endret) Altså, finnes det en DLL eller noe som fungerer på lik måte som registeret i windows? Altså, man gir en string til DLLen, og den returnerer verdien for den stringen, akkurat som verdien for en registernøkkel Noe lignendes en SQL database kanskje? Men jeg tenkte på å ha det i en simpel fil... Finnes det noe slikt? edit: SQLite kanskje? Den bruker jo en flatfil, og krever ingen server kjørendes... Men hvordan implementere i vb.net? Endret 7. juni 2007 av Wubbable
blacktower Skrevet 7. juni 2007 Skrevet 7. juni 2007 Hvis du vil gjøre det selv.... oversett dette til VB. Hashtable table = new Hashtable(); table["key"] = "bla" // Store Stream s = File.Open("register.bin", FileMode.Create, FileAccess.ReadWrite); BinaryFormatter b = new BinaryFormatter(); b.Serialize(s, table); s.Close(); // Recover s = File.Open("register.bin", FileMode.Open, FileAccess.Read); BinaryFormatter b = new BinaryFormatter(); table = (Hashtable) b.Deserialize(s);
Wubbable Skrevet 7. juni 2007 Forfatter Skrevet 7. juni 2007 Fungerer perfekt Men går det an å ha flere verdier på en nøkkel?
Manfred Skrevet 7. juni 2007 Skrevet 7. juni 2007 Du kan jo sende inn en klasse som data. En Hashtable består av key (som må være "sammenlignbar") og "object data". Denne dataen kan helt fint være en klasse eller en struct.
Wubbable Skrevet 7. juni 2007 Forfatter Skrevet 7. juni 2007 Kan du gi et lite eksempel? Har egentlig aldri brukt structer før (untatt i kode som jeg fant på google )
HDSoftware Skrevet 7. juni 2007 Skrevet 7. juni 2007 Altså, finnes det en DLL eller noe som fungerer på lik måte som registeret i windows? Altså, man gir en string til DLLen, og den returnerer verdien for den stringen, akkurat som verdien for en registernøkkel Noe lignendes en SQL database kanskje? Men jeg tenkte på å ha det i en simpel fil... Finnes det noe slikt? edit: SQLite kanskje? Den bruker jo en flatfil, og krever ingen server kjørendes... Men hvordan implementere i vb.net? 8802730[/snapback] Heisan Dropp SQL Lite. Det du vil ha til gjør du super enkelt med å streame til en ASCII fil. Det er flere tråder her og på Visual Basic forumet som forteller hvordan du streamer en fil. Det du trenger i tillegg er en liste med nøkkelverdi. Listen definerer du enkelt slik: NB! Sitter ikke med Visual Studio akkurat nå så følgende kode er ufullstendig: dim Liste as new Sortedlist(of STRING, STRING) Så fyller du denne lista med data fra tekst filen. Bruk kommandoen SPLIT for å ha både søkebgrep og resultatet i samme tekst streng. ' Til fil for each record as keypairvalue(of String, String) in Liste StringToWrite = Record.Key & chr(9) & Record.Item SkrivStrengTilFil() End for ' Fra fil - dette er subrutinen som behandler alle postene og må kalles fra loopen msom streamer fila sub HandleRecord(Record as String) dim array as string() = split(Record,chr(9)) Liste.add(Array[1], Array[2]) End sub denne koden er tatt ut fra løse luften og inneholder lite gyldig syntax, men bør gi deg en god pekepinn på hvordan du leser fra og til fila. Slik leser du listen SvarsStreng = Liste('Søkestreng') Håper du får noe ut av dette, hvis ikek så er det bare å spørre
Manfred Skrevet 7. juni 2007 Skrevet 7. juni 2007 (endret) public struct MineData { public string name; public string address; } Først som sist: Ok, skyt meg fordi jeg gjør det enkelt, og ikke bruker get/set Så blir koden noe som dette, for å adde i en hastTable: Hasttable ht = new Hashtable(); string key = "Dette skal den sorteres på. Og denne verdien skal jeg hente ut ved hjelp av"; MineData personalia; personalia.name = "Manfred"; personalia.address = "Min adresse"; ht.Add(key, personalia); Og for å hente ut: Response.Write(((MineData)ht[key]).name); //For å printe navn, f.ex. Endret 7. juni 2007 av Manfred
Wubbable Skrevet 7. juni 2007 Forfatter Skrevet 7. juni 2007 (endret) Imports System.IO Imports system.Runtime.Serialization.Formatters.Binary Public Class MF Private RegFile As String = "D:\Visual Basic\MusiX\MusiX\bin\Release\MXDB" <System.Serializable()> Private Structure VSTR Public V1 As String Public V2 As String End Structure Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load Dim table As Hashtable = New Hashtable() Dim VSCon As New VSTR VSCon.V1 = "value v1" VSCon.V2 = "value v2" table("Testkey") = VSCon ' Store Dim Str As Stream = File.Open(RegFile, FileMode.Create, FileAccess.ReadWrite, FileShare.Read) Dim BFS As BinaryFormatter = New BinaryFormatter() BFS.Serialize(Str, table) Str.Close() Str.Dispose() ' Recover Str = File.Open(RegFile, FileMode.Open, FileAccess.Read, FileShare.Read) Dim BFR As BinaryFormatter = New BinaryFormatter() table = CType(BFR.Deserialize(Str), Hashtable) Str.Close() Str.Dispose() TextBox1.Text = table.Item(?) 'HJELP :P TextBox2.Text = table.Item(?) 'HJELP :P End Sub End Class Har dette nå... Men hvordan henter jeg ut de forskjellige verdiene til hver sin textbox? Edit: Fant det ut VSCon = table.Item("Testkey") TextBox1.Text = VSCon.V1 TextBox2.Text = VSCon.V2 Endret 7. juni 2007 av Wubbable
hpfarstad Skrevet 11. juni 2007 Skrevet 11. juni 2007 Synes nå dette var en tungvint måte å gjøre det på. Jeg bruker Resourcefiler til dette formålet. Da kan du hente ut en verdi ved å skrive Resources.Navnpåfil.NavnpåVerdi, f.eks. Resources.Errormsg.Filenotfound. Da har du også støtte for å ha flere språkfiler og la .NET automagisk hente ut verdier fra den filen med brukerens språk.
Manfred Skrevet 11. juni 2007 Skrevet 11. juni 2007 Fordelen med dette, med binære filer, fremfor recource-filer, er at disse enkelt kan leses med det blotte øye, da de er i xml-format.
Wubbable Skrevet 11. juni 2007 Forfatter Skrevet 11. juni 2007 Og fordelen med en DLL som serializer, er at alle programmene mine kan bruke samme "database"
hpfarstad Skrevet 12. juni 2007 Skrevet 12. juni 2007 Fordelen med dette, med binære filer, fremfor recource-filer, er at disse enkelt kan leses med det blotte øye, da de er i xml-format. 8832584[/snapback] Interesting! Sånn til små webprosjekter og slikt så synes jeg Resourcefiler er greit, men skal ha dette i bakhodet dersom jeg skal programmere litt større prosjekter.
Manfred Skrevet 12. juni 2007 Skrevet 12. juni 2007 Når det kommer til binære filer, så må man jo vite nøyaktig hva slags datastruktur som ble skrevet til filen, ellers får man jo ikke noe fornuftig når man prøver å lese fra den Når det kommer til web-prosjekter, så er vel IIS lagt opp slik at man ikke får lest eller lastet ned Recource-fila, så det er ikke et så stort problem, men når man kommer til applikasjoner kan det være en klar fordel.
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å