|
|||||||
|
|
|
![]() |
|
|
Strumenti |
|
|
#1 |
|
Senior Member
Iscritto dal: Jan 2005
Città: Cesena
Messaggi: 323
|
[VB6] Uso file .ini
Mi potreste spiegare come posso gestire un file .ini (lettura,scrittura e modifica) nella mia applicazione?
Grazie Ciao! |
|
|
|
|
|
#2 |
|
Senior Member
Iscritto dal: May 2003
Messaggi: 1113
|
La cosa è semplice, devi:
1) dichiarare le api di windows che servono alla modifica/lettura dei file INI: Codice:
' ----------------------------------------------------------------- 'Funzioni per la Gestione dei Files .INI delle Impostazioni ' ----------------------------------------------------------------- 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 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 Codice:
Public Function INIRead(File As String, Section As String, Item As String) As String
Dim sBuf As String
Dim iRC As Integer
sBuf = Space(1023)
iRC = GetPrivateProfileString(Section, Item, "Not Found", sBuf, 1023, App.Path + "/" + File)
sBuf = Left$(sBuf, iRC)
If StrComp(sBuf, "Not Found") = 0 Then
INIRead = vbNullString
Else
INIRead = sBuf
End If
End Function
Public Sub INIWrite(File As String, Section As String, Item As String, ItemValue As String)
WritePrivateProfileString Section, Item, ItemValue, App.Path + "/" + File
End Sub
Successivamente dovrai solo richiamare una delle due funzioni per gestire il file INI, ad esempio: LETTURA: INIRead("nome_file.ini", Sezione , valore_da_leggere) SCRITTURA: INIWrite "nome_file.ini", Sezione, valore_da_Scrivere, valore tutto qui
__________________
| Athlon XP Barton 3000+ | CoolerMaster HAC-V81 | ASUS A7N8X DELUXE v2.0 | 2*256 PC3200 + 1*512 PC3200 = 1GB DDR400| ATI Radeon 9250 | HD 80Gb Maxtor SATA | Ali Q-TEC 550W Dual Fan GOLD PFC |
|
|
|
|
|
#3 |
|
Senior Member
Iscritto dal: Jan 2005
Città: Cesena
Messaggi: 323
|
Ok il codice mi funziona perfettamente!Ma quei 2 lunghi blocchi di codice sono sempre uguali per qualsiasi progetto vero?E cosi per curiosità, di preciso in questa porzione di codice della lettura:
sBuf = Space(1023) iRC = GetPrivateProfileString(Section, Item, "Not Found", sBuf, 1023, App.Path + "/" + File) sBuf = Left$(sBuf, iRC) If StrComp(sBuf, "Not Found") = 0 Then INIRead = vbNullString Else INIRead = sBuf End If Cosa fa di preciso? Grazie ciao! |
|
|
|
|
|
#4 | |||||
|
Member
Iscritto dal: Aug 2004
Messaggi: 55
|
Quote:
Quote:
Quote:
Quote:
Quote:
altrimenti il contenuto di sBuf |
|||||
|
|
|
|
|
#5 |
|
Registered User
Iscritto dal: Apr 2005
Messaggi: 56
|
scusate, ma come funziona?
per esempio, il contenuto di un file ini è: Codice:
[Color] Button=30,50,50 Codice:
MsgBox INIRead("C:\I.ini", "Color", "V")
|
|
|
|
|
|
#6 | |
|
Member
Iscritto dal: Aug 2004
Messaggi: 55
|
Quote:
Button=30 Button1=50 Button2=50 e richiamare quindi Codice:
MsgBox INIRead("C:\I.ini", "Color", "Button")
MsgBox INIRead("C:\I.ini", "Color", "Button1")
MsgBox INIRead("C:\I.ini", "Color", "Button2")
|
|
|
|
|
|
|
#7 |
|
Senior Member
Iscritto dal: May 2003
Messaggi: 1113
|
non esce niente perchè il valore "V" non esiste.
dovresti fare: Codice:
MsgBox INIREAD("C:\I.ini","Color","Button")
"30,50,50"
__________________
| Athlon XP Barton 3000+ | CoolerMaster HAC-V81 | ASUS A7N8X DELUXE v2.0 | 2*256 PC3200 + 1*512 PC3200 = 1GB DDR400| ATI Radeon 9250 | HD 80Gb Maxtor SATA | Ali Q-TEC 550W Dual Fan GOLD PFC |
|
|
|
|
|
#8 |
|
Registered User
Iscritto dal: Apr 2005
Messaggi: 56
|
nell'ini ("C:\I.ini")...
Codice:
[Color] Button=30 Button1=50 Button2=50 Codice:
MsgBox INIRead("C:\I.ini", "Color", "Button")
MsgBox INIRead("C:\I.ini", "Color", "Button1")
MsgBox INIRead("C:\I.ini", "Color", "Button2")
dove ho sbagliato???? Ultima modifica di Massi91 : 21-04-2005 alle 15:39. |
|
|
|
|
|
#9 |
|
Senior Member
Iscritto dal: Jan 2005
Città: Cesena
Messaggi: 323
|
Ok, grazie ancora x l'aiuto, ma avrei un'ultima domanda... come faccio a cancellare una sezione intera oppure un oggetto intero?
Grazie ciao! |
|
|
|
|
|
#10 |
|
Registered User
Iscritto dal: Apr 2005
Messaggi: 56
|
Ah ho trovato!
Codice:
iRC = GetPrivateProfileString(Section, Item, "Not Found", sBuf, 1023, App.Path + "/" + File) giusto! |
|
|
|
|
|
#11 | |
|
Member
Iscritto dal: Aug 2004
Messaggi: 55
|
Quote:
Volendo fornire un percorso completo credo che basti togliere App.Path + "/" +. Non sono poi sicuro se debba essere scritto "/" e non piuttosto "\". PS: Non fucilatemi, sono all'inizio con VB. |
|
|
|
|
|
|
#12 | |
|
Registered User
Iscritto dal: Apr 2005
Messaggi: 56
|
Quote:
non ti preoccupare, è giusto! infatti ho tolto quel pezzetto di codice... cmq nelle path (almeno per quello che so) "/" e "\" sono indifferenti... grazie lo stesso a tutti! |
|
|
|
|
|
|
#13 | |
|
Member
Iscritto dal: Aug 2004
Messaggi: 55
|
Quote:
Per cancellare una chiave nel file .ini: Codice:
Public Sub CancellaIniKey(Nomesezione As String, NomeKey As String, NomeIniFile As String)
Call WritePrivateProfileString(Nomesezione, NomeKey, vbNullString, NomeIniFile)
End Sub
Codice:
Public Sub CancellaSezioneIni(Nomesezione As String, NomeIniFile As String)
Call WritePrivateProfileString(Nomesezione, vbNullString, vbNullString, NomeIniFile)
End Sub
Codice:
Kill percorsocompletodelfile.ini Ultima modifica di salvuccio : 21-04-2005 alle 17:53. |
|
|
|
|
|
|
#14 |
|
Senior Member
Iscritto dal: Jan 2005
Città: Cesena
Messaggi: 323
|
Ok...
Grazie ancora x l'aiuto! Ciao! |
|
|
|
|
| Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 06:49.



















