Help... Help... run-time error 13 type mismatch -Lireini

Lamap Messages postés 15 Date d'inscription lundi 3 mars 2003 Statut Membre Dernière intervention 29 janvier 2007 - 6 mai 2004 à 14:37
Lamap Messages postés 15 Date d'inscription lundi 3 mars 2003 Statut Membre Dernière intervention 29 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

@Lamap
A voir également:

10 réponses

cs_moustachu Messages postés 1079 Date d'inscription jeudi 14 novembre 2002 Statut Membre Dernière intervention 1 janvier 2012
6 mai 2004 à 15:05
A quel endroit t'as une erreur ?
0
Lamap Messages postés 15 Date d'inscription lundi 3 mars 2003 Statut Membre Dernière intervention 29 janvier 2007
6 mai 2004 à 15:21
L'erreur vient au moment de l'exécution de la fonction Lireini

par exemple :

dim Dernierlancement
Dernierlancement = LireINI("Histo", "Dernierlancement")

@Lamap
0
cs_rene38 Messages postés 1858 Date d'inscription samedi 29 juin 2002 Statut Membre Dernière intervention 17 octobre 2013 11
6 mai 2004 à 16:25
Bonjour
et avec : Dim Dernierlancement As String ?
0
Lamap Messages postés 15 Date d'inscription lundi 3 mars 2003 Statut Membre Dernière intervention 29 janvier 2007
6 mai 2004 à 16:31
Ok oublie message précédent
j'ai bien dans mon prog :

Dim Dernierlancement As String

Le plus curieux est que cela a eu fonctionné.

@Lamap
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
cs_moustachu Messages postés 1079 Date d'inscription jeudi 14 novembre 2002 Statut Membre Dernière intervention 1 janvier 2012
6 mai 2004 à 16:39
Pas mieux, le compte est bon ?
0
cs_rene38 Messages postés 1858 Date d'inscription samedi 29 juin 2002 Statut Membre Dernière intervention 17 octobre 2013 11
6 mai 2004 à 16:57
Je viens de tester :
ça marche très bien après avoir supprimé la ligne

Dim fsotestfic As FileSystemObject
0
Lamap Messages postés 15 Date d'inscription lundi 3 mars 2003 Statut Membre Dernière intervention 29 janvier 2007
6 mai 2004 à 17:10
Merci.

Sans cette ligne cela fonctionne.

Mais cela veut dire que j'ai un problème pour utilser le "FileSystem Object".
Et là, c'est un gros problème.

D'où est ce que cela peut venir ?, dll, ocx... ???

Le problème est seulement sur ce micro.

@Lamap
0
cs_PhilippeE Messages postés 437 Date d'inscription mercredi 18 décembre 2002 Statut Membre Dernière intervention 10 août 2010 2
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
0
cs_rene38 Messages postés 1858 Date d'inscription samedi 29 juin 2002 Statut Membre Dernière intervention 17 octobre 2013 11
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
0
Lamap Messages postés 15 Date d'inscription lundi 3 mars 2003 Statut Membre Dernière intervention 29 janvier 2007
7 mai 2004 à 09:28
J'ai récupéré le fichier scrrun.dll se trouvant dans le dernier service pack de Windows et l'ai copié dans c:\winnt\system32.

Maintenant c'est ok.

Je pense que c'est une mise à jour sécurité de Windows qui est à l'origine du problème.

Un grand merci à tous pour votre participation et votre aide.

Et en plus, on apprend !

@Lamap
0
Rejoignez-nous