Witam w dziesiątej już z kolei części VBKurs'u. Poznaliśmy już środowisko pracy w VB, podstawowe pojęcia, to jakie opcje do jakich opcji należą, pętle, pisaliśmy nawet jeden wielki program, którego pisania nie zakończyliśmy, ale pomógł on zrozumieć nam pewne zagadnienia. Poznaliśmy też rejestr(chyba to wszystko jak na razie). Dodam, że koniec zbliża się wielkimi krokami, ale jeszcze parę części będzie. Dodam, że w końcu ten kurs miał omawiać podstawy za które już trochę wykroczyliśmy, ale to nic!!!
W tej części omówimy inny sposób zapisywania i odczytywania danych. Z pewnością lepszy i pewniejszy niż rejestr.
Pliki INI
Aby nasz odczyt pliku INI działał musimy wpierw wykreować moduł. Klikamy w eksploratorze projektu programu prawym klawiszem myszy, wybieramy new, później module.
Został utworzony moduł. Do jego zawartości musimy wpisać następujący kod:
Declare Function GetPrivateProfileString Lib "kernel32" Alias "GetPrivateProfileStringA" (ByVal lpApplicationName As String, ByVal lpKeyName As String, ByVal lpDefault As String, ByVal lpReturnedString As String, ByVal nSize As Long, ByVal lpFileName As String) As Long
Declare Function WritePrivateProfileString Lib "kernel32" Alias "WritePrivateProfileStringA" (ByVal lpApplicationName As String, ByVal lpKeyName As String, ByVal lpString As Any, ByVal lpFileName As String) As Long
Function OdczytINI(Sekcja, Klucz, Ścieżka As String) As String
Dim sRet As String
sRet = String(255, Chr(0))
OdczytINI = Left(sRet, GetPrivateProfileString(Sekcja, ByVal Klucz, "", sRet, Len(sRet), Ścieżka))
End Function
Function ZapisINI(zSekcja As String, zKlucz As String, zDane As String, zŚcieżka) As Integer
WritePrivateProfileString zSekcja, zKlucz, zDane, zŚcieżka
End Function
W tym kodzie deklarujemy dwie funkcje dostępne w Windows, które umożliwiają nam na zarządzanie plikami INI. Później następne dwie funkcje, które służą nam do zapisu i odczytu w pliku.
Gdy już to mamy zrobione musimy mieć plik INI, którego brak podczas uruchomienia programu spowoduje błąd, więc musimy utworzyć taki plik w folderze projektu naszego programu. Plik ten powinien wyglądać przykładowo:
[imie]
loadname=Filip
[nazwisko]
loadlastname=Cynarski
Plik powinien nazywać się program i mieć rozszerzenie INI, czyli tak powinien on wyglądać: program.ini .
Jeśli już to zrobiliśmy przenosimy się do okna naszego programu i dodajemy dwie kontrolki TextBox. Pierwszą kontrolkę nazywamy(wart. name) txtOdczyt, a drugą Text1. Dodajemy też kontrolkę CommandButton, której wartość Caption ustawiamy na Zapisz. Teraz przechodzimy do okna kodu naszego projektu i wpisujemy następujący kod:
Private Sub Command1_Click()
ZapisINI "imie", "loadname", txtOdczyt.Text, sc + "program.ini" 'wykorzystanie funkcji zdefinionwanej w module o nazwie ZapisINI z podaniem odpowiedich informacji
ZapisINI "nazwisko", "loadlastname", Text1.Text, sc + "program.ini" 'to samo. Nazwisko nazwa klucza, loadlastname nazwa sekcji, Text1.Text miejsce pobrania które ma zostać zapisane, sc + program.ini położenie pliku bazy danych
txtOdczyt.Refresh 'odświeżenie
Text1.Refresh 'to samo
End Sub
Private Sub Form_Load()
sc = App.Path + "\" 'przypożądkowanie zmiennej sc położenia programu
txtOdczyt.Text = OdczytINI("imie", "loadname", sc + "program.ini") 'pdczyt przy użyciu funkcji z modułu. Funkcja ma nazwę odczyt INI
Text1.Text = OdczytINI("nazwisko", "loadlastname", sc + "program.ini") 'to samo
End Sub
W tym momencie mamy już gotowy program! Chcesz przykład?! To go tu Masz! W takim wypadku Możesz się pokusić o rozszerzenie tego programu przykładowego, aby zapisywał więcej danych i wiadomości. Jest to łatwe, a w szczególności dla Ciebie(o ile Uczyłeś się z VBKurs'u) od początku. Wystarczy tylko odpowiednio przeanalizować kod i wyobrazić sobie działanie programu.
Podpowiedź:
Do tego celu Zmodyfikuj plik INI i użyj pętli. Jakiej?! To już Sam uznaj jaka będzie najlepsza do tego celu.
Jeśli Zrobiłeś już to! To Skuś się przysłać mi swoje dzieło. Może dostaniesz nagrodę?!
W następnym numerze napiszemy program, który będzie trwał przez kilka numerów i on właśnie uwieńczy nasz kurs! Pozdrawiam!!!