Help... Help... run-time error 13 type mismatch -Lireini
Lamap
Messages postés15Date d'inscriptionlundi 3 mars 2003StatutMembreDernière intervention29 janvier 2007
-
6 mai 2004 à 14:37
Lamap
Messages postés15Date d'inscriptionlundi 3 mars 2003StatutMembreDernière intervention29 janvier 2007
-
7 mai 2004 à 09:28
J'utilise la fonction Lireini ci-dessous pour récupérer les valeurs de mon fichier ini.
Sur mon système, cela fonctionne très bien.
Je l'ai mis en place sur un autre Pc (Windows 2000 server). Au début c'était ok, mais après avoir installé des applis.
Mon programme ne fonctionne plus.
Lors du lancement j'obtiens le message :
run-time error 13 type mismatch
' Declarations pour lire et ecrire dans un fichier ini
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
' Fonction permettant de lire dans un fichier ini
' Pour l'executer ex :
' LireINI("MonEntete", "MaVariable")
Function LireINI(Entete As String, Variable As String) As String
Dim Retour As String
Dim Fichier
Dim fsotestfic As FileSystemObject
Fichier = App.Path & "" & App.EXEName & ".ini"
Set fsotestfic = CreateObject("Scripting.FileSystemObject")
If fsotestfic.FileExists(Fichier) = False Then
LireINI = "erreur1"
GoTo sortie
End If
Retour = String(255, Chr(0))
LireINI = Left$(Retour, GetPrivateProfileString(Entete, ByVal Variable, "", Retour, Len(Retour), Fichier))
sortie:
End Function
cs_PhilippeE
Messages postés437Date d'inscriptionmercredi 18 décembre 2002StatutMembreDernière intervention10 août 20102 6 mai 2004 à 17:48
C'est ta librairie Windows Scripting (sccrun.dll) qui a été changé après l'installation de logiciels/service pack sur ton serveur 2000.
Pour t'affranchir de ce genre de problèmen supprime ta référence à Microsoft Scripting Runtime.
Ton code devient
NB : En fait tu créais dynamique l'objet FileSystemObject par rapport à celui du serveur, mais tu voulais le stocker dans un FileSystemObject de version différente.
Function LireINI(Entete As String, Variable As String) As String
Dim Retour As String
Dim Fichier
Dim fsotestfic As Object
Fichier = App.Path & "" & App.EXEName & ".ini"
Set fsotestfic = CreateObject("Scripting.FileSystemObject")
If fsotestfic.FileExists(Fichier) = False Then
LireINI = "erreur1"
GoTo sortie
End If
Retour = String(255, Chr(0))
LireINI = Left$(Retour, GetPrivateProfileString(Entete, ByVal Variable, "", Retour, Len(Retour), Fichier))
sortie:
End Function
cs_rene38
Messages postés1858Date d'inscriptionsamedi 29 juin 2002StatutMembreDernière intervention17 octobre 201311 6 mai 2004 à 18:07
Le code d'origine marche aussi très bien si on ajoute aux références du projet "Microsoft Scripting Runtime", référence à scrrun.dll qui, suivant l'OS est dans \system ou \system32