Liaison Tardive - Option Strict
Résolu
nicelife90
Messages postés
676
Statut
Membre
-
Utilisateur anonyme -
Utilisateur anonyme -
Bonjour,
Voici une parcelle de code que j'ai créé
j'ai appliquer l'option option strict à mon projet et voila que j'ai un message concernant cette ligne :
Option Strict On rejette toute liaison tardive.
et cette ligne :
Option Strict On rejette toute liaison tardive.
Comment puis-je régler cette erreur ?
--
Bonne chance à toi et bonne fin de journée!
N!C£-L!F£!!!
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 ?
--
Bonne chance à toi et bonne fin de journée!
N!C£-L!F£!!!
1 réponse
-
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-
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 -
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 -
-
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
-