Fichier ini
marwouch
Messages postés
10
Statut
Membre
-
lermite222 Messages postés 9042 Statut Contributeur -
lermite222 Messages postés 9042 Statut Contributeur -
Bonjour,
PCn.Execute "CREATE SCHEMA 'marwa';"
a = ini.GetSections(App.Path & "\configini")
AA = Split(a, Chr(0))
For i = 0 To UBound(AA)
key = ini.GetKeysInSection(AA(i), App.Path & "\configini")
champ = Split(key, Chr(0))
For j = 0 To UBound(champ)
val = ini.GetKeyValue(AA(i), champ(j), App.Path & "\configini")
PCn.Execute "CREATE TABLE 'marwa'. 'AA(i)'(champ(j) val PRIMARY KEY ('champ(0)'));"
Next j
Next i
j'utilise mysql 5.1 et workbench 5.2 CE
j'ai un erreur dans la requête de création des tables qui m'a cassé la tête(syntaxe)
S.V.P,si quelqu'un a une idée........
PCn.Execute "CREATE SCHEMA 'marwa';"
a = ini.GetSections(App.Path & "\configini")
AA = Split(a, Chr(0))
For i = 0 To UBound(AA)
key = ini.GetKeysInSection(AA(i), App.Path & "\configini")
champ = Split(key, Chr(0))
For j = 0 To UBound(champ)
val = ini.GetKeyValue(AA(i), champ(j), App.Path & "\configini")
PCn.Execute "CREATE TABLE 'marwa'. 'AA(i)'(champ(j) val PRIMARY KEY ('champ(0)'));"
Next j
Next i
j'utilise mysql 5.1 et workbench 5.2 CE
j'ai un erreur dans la requête de création des tables qui m'a cassé la tête(syntaxe)
S.V.P,si quelqu'un a une idée........
A voir également:
- Fichier ini
- Fichier bin - Guide
- Fichier epub - Guide
- Fichier rar - Guide
- Comment réduire la taille d'un fichier - Guide
- Fichier .dat - Guide
10 réponses
Je connais aussi très bien les appel à un fichier INI en VB6, mais sans connaitre ta classe c'est pas possible de trouver l'erreur.
Tu peu mettre le code de ta classe ?
A+
Tu peu mettre le code de ta classe ?
A+
Bonjour,
Je connais pas ton langage mais je connais bien les INI, tu ne devrais pas mettre..
A+
Toute la connaissance du monde ne peu tenir dans une seul tête (moi)
Si tu te cognes à un pot et que ça sonne creux, c'est pas forcément le pot qui est vide. ;-)(Confucius)
NOTE : Je ne répond pas aux MP pour les questions techniques.
Ça doit se passer sur le forum pour que tous puisse y participer ou en profiter.
Je connais pas ton langage mais je connais bien les INI, tu ne devrais pas mettre..
a = ini.GetSections(App.Path & "\configini.INI")
A+
Toute la connaissance du monde ne peu tenir dans une seul tête (moi)
Si tu te cognes à un pot et que ça sonne creux, c'est pas forcément le pot qui est vide. ;-)(Confucius)
NOTE : Je ne répond pas aux MP pour les questions techniques.
Ça doit se passer sur le forum pour que tous puisse y participer ou en profiter.
Y a BEAUCOUP plus simple que ça pour accéder aux fichiers INI.
Je fais petite recherche dans mes archives et te colle un BAS. Mais pas tout de suite (pas le temps maintenant).
Je fais petite recherche dans mes archives et te colle un BAS. Mais pas tout de suite (pas le temps maintenant).
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
Ton projet est dans quel répertoire et le fichier fichier INI il est Où ?
Avec ta classe pas moyen d'ouvrir un INI ailleurs que dans le Root. et avec un autre nom que celui du projet et il me semble que c'est ça que tu veux faire.
ÉDIT : La fonction GetSection retourne toujours zéro
Toute la connaissance du monde ne peu tenir dans une seul tête (moi)
Si tu te cognes à un pot et que ça sonne creux, c'est pas forcément le pot qui est vide. ;-)(Confucius)
NOTE : Je ne répond pas aux MP pour les questions techniques.
Ça doit se passer sur le forum pour que tous puisse y participer ou en profiter.
Avec ta classe pas moyen d'ouvrir un INI ailleurs que dans le Root. et avec un autre nom que celui du projet et il me semble que c'est ça que tu veux faire.
ÉDIT : La fonction GetSection retourne toujours zéro
Toute la connaissance du monde ne peu tenir dans une seul tête (moi)
Si tu te cognes à un pot et que ça sonne creux, c'est pas forcément le pot qui est vide. ;-)(Confucius)
NOTE : Je ne répond pas aux MP pour les questions techniques.
Ça doit se passer sur le forum pour que tous puisse y participer ou en profiter.
bon j'utilise un module classe appelé clsINI pour la gestion du fichier ini
après, dans ma forme j'ai mis Dim ini As New clsINI
pour que je puisse utiliser les différentes fonctions de ce module
après, dans ma forme j'ai mis Dim ini As New clsINI
pour que je puisse utiliser les différentes fonctions de ce module
je suis sur que code du classe est juste parceque je l'ai testé,mais je veux créer une table dont les champs sont les keys du fichier ini et les types des champs sont les valeurs de ces keys,pour ce la j'ai crée les boucles for.
en tous cas voici le code du classe:
en tous cas voici le code du classe:
'********************************************************************************
Option Explicit
'The two API calls to read and write from the INI file
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 AppName$, ByVal KeyName$, ByVal keydefault$, ByVal FileName$)
'the INI file's path
Private var_INIFile As String
'What to return if no data is found
Private var_DefaultRetVal As String
Private Sub Class_Initialize()
'when the object is created we set the default file name
ResetINIFilePath
'our default for no data is "" (vbNullString)
var_DefaultRetVal = ""
End Sub
Private Sub primeINIFile()
'Priming the INI file stops the API calls from complaining if the file doesn't exist
'I'm pretty sure there is a better way to do this but for the sake of
'ease I just open the INIFile for append (so we don't screw with the data
'already in it) and then close it right away. If the file was already there nothing
'happens otherwise the file gets created
Open var_INIFile For Append As #1
Close #1
End Sub
'****************************** Start Let Properties ******************************
Public Property Let INIFile(ByVal INIFileIn As String)
'set the INI path
var_INIFile = INIFileIn
End Property
Public Property Let DefaultReturnValue(ByVal RetVal As String)
'set the default return value
var_DefaultRetVal = RetVal
End Property
'****************************** End Let Properties ******************************
'****************************** Start Get Properties ******************************
Public Property Get INIFile() As String
'return the INI path
INIFile = var_INIFile
End Property
Public Property Get DefaultReturnValue() As String
'return the default retun value
DefaultReturnValue = var_DefaultRetVal
End Property
'****************************** End Get Properties ******************************
Public Sub ResetINIFilePath()
'this sets the INI file to the programs path and exe name but adds a .ini on the end
'ex: the program c:\iniTest\test.exe would have the INI file c:\iniTest\test.ini
'this set up makes for easy refrence to the file
'if we are running in the root folder app.path will have a \ on the end.
If Right(App.Path, 1) = "\" Then
var_INIFile = "C:\" & App.EXEName & ".ini"
Else 'Otherwise we need to add our own.
var_INIFile = "C:\" & App.EXEName & ".ini"
End If
End Sub
'****************************** Start Create Methods ******************************
Public Sub CreateKeyValue(ByVal section As String, ByVal key As String, ByVal value As String, Optional ByVal INIFileLoc As String)
'************************************************************
'This little block of code is in all the sub and functions
'that use the INI file. Since there is a file variable that
'is set by default and can be modified by the user the
'INIFileLoc parameter is optional. This block of code checks
'to see if the argument was passed. If it was the UseFile var
'is set to the passed file if not it is set to the local file
'variable.
Dim UseFile As String
If IsMissing(INIFileLoc) Or INIFileLoc = "" Then
UseFile = var_INIFile
Else
UseFile = INIFileLoc
End If
'************************************************************
'Debug.Print value
'call the write profile string with all the parameters
WritePrivateProfileString section, key, value, UseFile
End Sub
Public Sub CreateKey(ByVal section As String, ByVal key As String, Optional ByVal INIFileLoc As String)
Dim UseFile As String
If IsMissing(INIFileLoc) Or INIFileLoc = "" Then
UseFile = var_INIFile
Else
UseFile = INIFileLoc
End If
'call the write profile string but since we only want to create a key but
'not give it a value we pass "" (vbNullString) for the value
WritePrivateProfileString section, key, "", UseFile
End Sub
'****************************** End Create Methods ******************************
'****************************** Start Get Methods ******************************
Public Function GetKeyValue(ByVal section As String, ByVal key As String, Optional ByVal INIFileLoc As String, Optional Default$) As String
Dim RetVal As String
Dim KeyLen As Integer
Dim UseFile As String
If IsMissing(INIFileLoc) Or INIFileLoc = "" Then
UseFile = var_INIFile
Else
UseFile = INIFileLoc
End If
'call our priming function to be sure the file exists
'primeINIFile
'ok I just choose 255 as a nice number for the max length of data being retrieved
'I think you can change it and the API calls will still work. It just creates a
'string of that length in memory for the API call to write the results of it's action
'to if the key is not found the contents of var_DefaultRetVal are returned
RetVal = String$(255, 0)
KeyLen = GetPrivateProfileString(section, key, Default, RetVal, Len(RetVal), UseFile)
'return a null string if the return has 0 length
If KeyLen = 0 Then
GetKeyValue = Default
Else ' or the key's value
GetKeyValue = Left$(RetVal, KeyLen)
End If
End Function
Public Function GetKeysInSection(ByVal section As String, Optional ByVal INIFileLoc As String) As String
Dim RetVal As String
Dim KeyLen As Integer
Dim UseFile As String
If IsMissing(INIFileLoc) Or INIFileLoc = "" Then
UseFile = var_INIFile
Else
UseFile = INIFileLoc
End If
'prime the INI to make sure it exists
primeINIFile
'since we could have a lot of keys in one section we are going to use a 1024 char buffer
RetVal = String$(1024, 0)
KeyLen = GetPrivateProfileString(section, vbNullString, var_DefaultRetVal, RetVal, Len(RetVal), UseFile)
'if no keys are found then return "" (vbNullString)
If KeyLen = 0 Then
GetKeysInSection = ""
Else
'if the retval is > 0 then return the results
'since we are getting multiple keys but returning them as one string the
'programer should use the split() function in the returned value with
'chr$(0) being the delimiter
GetKeysInSection = Left$(RetVal, KeyLen - 1)
End If
End Function
Public Function GetSections(Optional ByVal INIFileLoc As String) As String
Dim RetVal As String
Dim KeyLen As Integer
Dim UseFile As String
If IsMissing(INIFileLoc) Or INIFileLoc = "" Then
UseFile = var_INIFile
Else
UseFile = INIFileLoc
End If
'prime the INI to make sure it exists
primeINIFile
'since we could have a lot of sections in one file we are going to use a 1024 char buffer
RetVal = String$(2000, 0)
KeyLen = GetPrivateProfileString(vbNullString, vbNullString, var_DefaultRetVal, RetVal, Len(RetVal), UseFile)
'if no sections are found then return "" (vbNullString)
If KeyLen = 0 Then
GetSections = ""
Else
'if the retval is > 0 then return the results
'since we are getting multiple sections but returning them as one string the
'programer should use the split() function in the returned value with
'chr$(0) being the delimiter
GetSections = Left$(RetVal, KeyLen - 1)
End If
End Function
'****************************** End Get Methods ******************************
'****************************** Start Delete Methods ******************************
Public Sub DeleteKeyValue(ByVal section As String, ByVal key As String, Optional ByVal INIFileLoc As String)
Dim UseFile As String
If IsMissing(INIFileLoc) Or INIFileLoc = "" Then
UseFile = var_INIFile
Else
UseFile = INIFileLoc
End If
'to delete the key's value just write a null string to it
WritePrivateProfileString section, key, "", UseFile
End Sub
Public Sub DeleteKey(ByVal section As String, ByVal key As String, Optional ByVal INIFileLoc As String)
Dim UseFile As String
If IsMissing(INIFileLoc) Or INIFileLoc = "" Then
UseFile = var_INIFile
Else
UseFile = INIFileLoc
End If
'to delete a key use the actual vbnullstring object ... for some reason
'it behaves differently that passing the API ""
WritePrivateProfileString section, key, vbNullString, UseFile
End Sub
Public Sub DeleteSection(ByVal section As String, Optional ByVal INIFileLoc As String)
Dim UseFile As String
If IsMissing(INIFileLoc) Or INIFileLoc = "" Then
UseFile = var_INIFile
Else
UseFile = INIFileLoc
End If
'to delete a section it's the same thing as a key but we write a vbNullString
'to the key name and value
WritePrivateProfileString section, vbNullString, vbNullString, UseFile
End Sub
'****************************** End Delete Methods ******************************
'****************************** Start Rename Methods ******************************
Public Sub RenameKey(ByVal section As String, ByVal CurrentKey As String, ByVal NewKey As String, Optional ByVal INIFileLoc As String)
Dim UseFile As String
If IsMissing(INIFileLoc) Or INIFileLoc = "" Then
UseFile = var_INIFile
Else
UseFile = INIFileLoc
End If
'make sure the file exists
primeINIFile
'woohoo code reuse!
'get the value and create the new key
CreateKeyValue section, NewKey, GetKeyValue(section, CurrentKey, UseFile), UseFile
'delete the old key
DeleteKey section, CurrentKey, UseFile
End Sub
Public Sub RenameSection(ByVal CurrentSection As String, ByVal NewSection As String, Optional ByVal INIFileLoc As String)
Dim KeyList() As String
Dim KeyCount As Integer
Dim index As Integer
Dim UseFile As String
If IsMissing(INIFileLoc) Or INIFileLoc = "" Then
UseFile = var_INIFile
Else
UseFile = INIFileLoc
End If
'makle sure the file exists
primeINIFile
'renaming a section works the same way.
'we get all the key names into an array
KeyList = Split(GetKeysInSection(CurrentSection, UseFile), Chr$(0))
'get the number of keys
KeyCount = UBound(KeyList)
'for each key in the array
For index = 0 To KeyCount
'create the new key in the new section
CreateKeyValue NewSection, KeyList(index), GetKeyValue(CurrentSection, KeyList(index), UseFile), UseFile
Next index
'delete the old section
DeleteSection CurrentSection, UseFile
End Sub
'****************************** End Rename Methods ******************************