Liaison Tardive - Option Strict

Résolu
nicelife90 Messages postés 615 Date d'inscription   Statut Membre Dernière intervention   -  
 Utilisateur anonyme -
Bonjour,

Voici une parcelle de code que j'ai créé
 
Dim FSys = CreateObject("Scripting.FileSystemObject")
Dim realmlist = FSys.CreateTextFile(file_path & "\Data\" & language & "\realmlist.wtf")
With realmlist
     .writeLine("set realmlist " & My.Settings.RealmSelected)
End With

j'ai appliquer l'option option strict à mon projet et voila que j'ai un message concernant cette ligne :

Dim realmlist = FSys.CreateTextFile(file_path & "\Data\" & language & "\realmlist.wtf")

Option Strict On rejette toute liaison tardive.

et cette ligne :

.writeLine("set realmlist " & My.Settings.RealmSelected)

Option Strict On rejette toute liaison tardive.

Comment puis-je régler cette erreur ?


1 réponse

Utilisateur anonyme
 
Bonjour,

La ligne :

Dim realmlist = FSys.CreateTextFile(...

devrait se lire :
Dim realmlist
Set realmlist = FSys.CreateTextFile(...

Toutefois, je ne suis pas familier dans l'utilisation du VBS dans
un projet .Net

Sous VBS, je n'ai aucun doute, mais du VBS sous .NET ???

Cdt

Lupin
0
nicelife90 Messages postés 615 Date d'inscription   Statut Membre Dernière intervention   151
 
Ici il s'agit d'un problème de liaison tardive donc même si je déclare realmlist avant de lui attribuer une valeur rien ne change.

si tu met ce bloque dans n'importe quel sub exemple un sub de bouton :

Dim FSys = CreateObject("Scripting.FileSystemObject")  
Dim realmlist = FSys.CreateTextFile(file_path & "\Data\" & language & "\realmlist.wtf")  
With realmlist  
     .writeLine("set realmlist " & My.Settings.RealmSelected)  
End With  

et que tu met option strict a ON au niveau de ton projet tu vera de quel type d'erreur il s'agit!

PS : je tiens a dire que la syntaxe de ce bloque de code est totalement fonctionnel avec option strict a OFF
0
Utilisateur anonyme
 
re:

La liaison tardive est justement créé parce que la variable est déclaré sans type,
et que l'instruction veut créer un type d'objet et le lié à cette variable.

Comme spécifié, je suis sur de mon code sous VBS :

<code>
' Fichier Ecrire.vbs

Const ctePourLecture = 1
Const ctePourEcrire = 2
Const ctePourAjouter = 8
Const cteRapport = "Rapport.txt"

Dim objFSO, objFichier, varNomFic

Set objFSO = CreateObject("Scripting.FileSystemObject")

' Localisation du fichier à écrire
varNomFic = WScript.ScriptFullName
varNomFic = Left(varNomFic, InStrRev(varNomFic, "\"))
varNomFic = varNomFic & cteRapport

' Valide si fichier existe
If ( objFSO.FileExists(varNomFic) ) Then
Set objFichier = objFSO.OpenTextFile(varNomFic,ctePourAjouter)
Else
Set objFichier = objFSO.CreateTextFile(varNomFic,ctePourEcrire)
End If
<code>

Ce code a été éprouvé de façon très explicite.

Malheureusement, je ne puis t'aider davantage, je n'ai à ce jour jamais utlisé
les objets de "Scripting" dans un projet .NET.

Je te recommande d'utiliser les classes du FrameWork pour lire/écrire dans un fichier.

Ex.: https://plasserre.developpez.com/cours/vb-net/?page=langage-vb8#V-AC

Cdt

Lupin
0
nicelife90 Messages postés 615 Date d'inscription   Statut Membre Dernière intervention   151
 
Oui c'est ce que je vais faire merci
0
Utilisateur anonyme
 
re:

Voici un exemple brut :

Imports System.IO

Public Class EcrireUnFichier

	Public Sub EcrireUnFichier()

		Dim file_path As String = ChercheDossier()
		Dim Language As String = "fr"

		Dim Dossier As String = String.Concat(file_path, "Data\", Language, "\")

		Dim NomFichier As String = Dossier & "realmlist.wtf"

		Dim LeFichier As New StreamWriter(NomFichier, True)

		LeFichier.WriteLine("Lupin")
		LeFichier.WriteLine(System.DateTime.Now.ToShortDateString)

		LeFichier.Close()

	End Sub

	Private Function ChercheDossier() As String

		Dim Parcourrir As New FolderBrowserDialog
		Dim Chemin As String = String.Empty

		With Parcourrir

			If (.ShowDialog = Windows.Forms.DialogResult.OK) Then
				Chemin = .SelectedPath
				Chemin &= "\"
			End If

		End With

		Return Chemin

	End Function

End Class


Cdt

Lupin
0