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

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