Gå til innhold

bruke text dokument som db


Anbefalte innlegg

Videoannonse
Annonse

En enkel database kan lages ved å bruke INI-fil API-kallene. Et eksempel kan være dette:

 

Private Declare Function WritePrivateProfileString Lib "kernel32" Alias "WritePrivateProfileStringA" (ByVal lpApplicationName As String, ByVal lpKeyName As Any, ByVal lpString As Any, ByVal lpFileName As String) As Long
Private Declare Function GetPrivateProfileInt Lib "kernel32" Alias "GetPrivateProfileIntA" (ByVal lpApplicationName As String, ByVal lpKeyName As String, ByVal nDefault As Long, ByVal lpFileName As String) As Long

Private Sub Form_Load()

'Skriv nummer 55 til denne tekstfilen:
WritePrivateProfileString "Sample", "Sample", "55", App.Path & "\sample.ini"

'Så, hent tilbake dette nummeret:
MsgBox GetPrivateProfileInt("Sample", "Sample", 0, App.Path & "\sample.ini")

End Sub

 

Teksfilen blir da seende slik ut:

 

[Sample]
Sample=55

 

For å lagre og hente tekst kan du bruke denne koden:

 

Private Declare Function GetPrivateProfileString Lib "kernel32" Alias "GetPrivateProfileStringA" (ByVal lpApplicationName As String, ByVal lpKeyName As Any, ByVal lpDefault As String, ByVal lpReturnedString As String, ByVal nSize As Long, ByVal lpFileName As String) As Long
Private Declare Function WritePrivateProfileString Lib "kernel32" Alias "WritePrivateProfileStringA" (ByVal lpApplicationName As String, ByVal lpKeyName As Any, ByVal lpString As Any, ByVal lpFileName As String) As Long

Private Sub Form_Load()

WritePrivateProfileString App.Title, "KeyName", "This is the value", "c:\test.ini"
MsgBox GetINIString("c:\test.ini", App.Title, "KeyName", "")

Kill "c:\test.ini"
   
End Sub

Public Function GetINIString(strFile As String, strAppName As String, strKey As String, strDefault As String)

Dim Buff As String, NC As Long

Buff = String(255, 0)
NC = GetPrivateProfileString(strAppName, strKey, strDefault, Ret, 255, strFile)

If NC <> 0 Then
   Buff = Left$(Buff, NC)
End If

GetINIString = Buff

End Function

 

Men selvsakt finnes det andre måter å lagre på. Du kan også bruke Propeties CLASS'en for å lagre mye mer enn tekst og nummer. Se her:

 

Private Sub Form_Load()

Dim Prop As New PropertyBag

Prop.WriteProperty "Test", "Hallo!"
Prop.WriteProperty "Nummer", 100
Prop.WriteProperty "Bilde", picImg.Picture ' Ta denne vekk hvis du ikke vil teste bildelagringsfunksjonen

SaveProperty "C:\Test.dat", Prop

' Sletter all data (for å bevise at alt blir i realteten åpnet fra en fil)
Set Prop = Nothing

OpenPropery "C:\Test.dat", Prop

MsgBox Prop.ReadProperty("Test")
MsgBox Prop.ReadProperty("Nummer")

Set picImg2.Picture = Prop.ReadProperty("Bilde") ' Ta vekk hvis du ikke ønsker å teste dette

' Slett filen
Kill "C:\Test.dat"

End Sub

Public Sub SaveProperty(File As String, Prop As PropertyBag)

Dim Free As Long

Free = FreeFile

Open File For Binary As Free
Put Free, , Prop.Contents
Close Free

End Sub

Public Sub OpenPropery(File As String, Prop As PropertyBag)

Dim Free As Long, BuffData As Variant

If Dir(File) = "" Then
   Err.Raise 53 ' File not found
   Exit Sub
End If

Free = FreeFile

Open File For Binary As Free
Get Free, , BuffData
Close Free

If Prop Is Nothing Then
   Set Prop = New PropertyBag
End If

Prop.Contents = BuffData

End Sub

 

 

Men skal du bare lagre enkel informasjon kan du likegjerne bare bruke en Type og lagre data med den:

 

Private Type TestData
Navn As String
Alder As Long
End Type

Private Sub Form_Load()

Dim Free As Long, Test As TestData

Free = FreeFile

Test.Alder = InputBox("Hvor gammel er du?")
Test.Navn = InputBox("Hva heter du?")

Open "C:\Test.dat" For Binary As Free
Put Free, , Test
Close Free

' Fjerner alt (dette er ikke nødvendig. Er her bare for å vise at alt faktisk blir lastet inn)
Test.Alder = 0
Test.Navn = ""

Free = FreeFile

Open "C:\Test.dat" For Binary As Free
Get #1, , Test
Close Free

MsgBox "Du heter " & Test.Navn & " og er " & Test.Alder

' Sletter filen (naturligvis ikke hvis data skal lagres lenge)
Kill "C:\Test.dat"

End Sub

 

Håper dette hjalp.

Lenke til kommentar

hjalp mykje dette. takk :thumbs: men er det nokre sider som forklarer kva alle desse "Declare Function" tingene betyr. er noob i vb enda, så det hadde vert morro å vist kva eg egentlig skreiv på :p

Lenke til kommentar

Disse Declare Function syntaksene i koden kalles for API-calls (Application Program Interface) og er en måte for programmer å kommunisere med operativsystemet. Hvis du vil se flere eksempler på disse (sammen med en mer omfattene forklaring) trykk her.

Endret av aadnk
Lenke til kommentar

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 konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
  • Hvem er aktive   0 medlemmer

    • Ingen innloggede medlemmer aktive
×
×
  • Opprett ny...