cs_ginger4957
Messages postés69Date d'inscriptionjeudi 8 janvier 2009StatutMembreDernière intervention 3 septembre 2010
-
17 févr. 2009 à 16:23
cs_ginger4957
Messages postés69Date d'inscriptionjeudi 8 janvier 2009StatutMembreDernière intervention 3 septembre 2010
-
3 mars 2009 à 17:58
Bonjour,
Je voudrais savoir s'il existe un équivalent de cette ligne (qui est en vb6) en vb 2008 :
SavedWnd = Screen.ActiveControl.hwnd
J'ai lu cet article :
Propriété ActiveControl
Dans Visual Basic 6.0, la propriété ActiveControl de l'objet Screen sert à déterminer le contrôle qui a le focus. La propriété ActiveControl peut être utilisée dans une capacité globale, comme dans Screen.ActiveControl, où le contrôle actif est retourné sur le formulaire actuellement sélectionné. Si un formulaire spécifique est référencé, par exemple, Form2.ActiveControl, ActiveControl spécifie le contrôle qui aura le focus si le formulaire référencé est actif.
Dans Visual Basic 2008, il n'y a plus de propriété globale ActiveControl ; chaque instance d'un formulaire dispose de sa propre propriété ActiveControl. Lors du référencement d'un formulaire spécifique, cette propriété fonctionne exactement comme dans Visual Basic 6.0. Pour déterminer le contrôle actif sur le formulaire actuellement sélectionné, vous devez d'abord parcourir la collection OpenForms et vérifier la propriété ContainsFocus pour déterminer quel formulaire est actif.
Mais je ne vois pas trop comment faire pour parcourir la collection et vérifier la propriété ContainsFocus ?
cs_ginger4957
Messages postés69Date d'inscriptionjeudi 8 janvier 2009StatutMembreDernière intervention 3 septembre 2010 20 févr. 2009 à 11:07
Je reconfirme le fichier n'est pas en lecture seule : lors du débogage, quand l'exception s'affiche dans la fenêtre, le clique sur Afficher les détails, et la propriété IsReadOnly est à faux.
StackTrace : à Scripting.FileSystemObjectClass.OpenTextFile(String FileName, IOMode IOMode, Boolean Create, Tristate Format) à chemin... ...
cs_ginger4957
Messages postés69Date d'inscriptionjeudi 8 janvier 2009StatutMembreDernière intervention 3 septembre 2010 20 févr. 2009 à 14:28
Dans vb6, on devait ouvrir le fichier et lors de l'ouverture dire ce qu'on allait y faire par la suite ; en vb2008 je ne sais pas si c'est nécessaire ? Je pense que je vais laisser le fso pour les classes du framework, même si ça va être fastidieux ^_^ (le fso est utilisé dans 70% du programme)
Vous n’avez pas trouvé la réponse que vous recherchez ?
cs_casy
Messages postés7741Date d'inscriptionmercredi 1 septembre 2004StatutMembreDernière intervention24 septembre 201440 20 févr. 2009 à 21:05
si tu as vraiment des problèmes pour écrire dans ton fichier, fais-toi un nouveau projet à coté avec juste un bouton et un textbox, et entraine toi à écrire dans des fichiers.
un exemple tout simple :
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
Dim ts As New System.IO.StreamWriter("Monfichier.txt", True)
ts.WriteLine(Now.ToString & " > " & TextBox1.Text)
End Sub
Quand ça marche, toujours avec ce petit projet, essaye d'écrire dans ton fichier jusqu'a y arriver et comprendre pourquoi ça ne marchait pas.
Progresse par étapes.
---- Sevyc64 (alias Casy) ---- # LE PARTAGE EST NOTRE FORCE #
cs_ginger4957
Messages postés69Date d'inscriptionjeudi 8 janvier 2009StatutMembreDernière intervention 3 septembre 2010 23 févr. 2009 à 12:18
Comment mettre le fichier ouvert dans ma variable qui va traiter ce fichier ?
Avant le code était :
fso.CreateTextFile(repertoire_nom)
variable_nom = fso.OpenTextFile(repertoire_nom, ForWriting)
cs_ginger4957
Messages postés69Date d'inscriptionjeudi 8 janvier 2009StatutMembreDernière intervention 3 septembre 2010 23 févr. 2009 à 16:23
Pour l'instant j'ai mis :
(repertoire_nom).GetType
A la place de :
GetFolder(repertoire_nom)
Je testerai quand j'aurai résolu les autres erreurs...
[Autres erreurs = Problèmes de syntaxe lecture ecriture, et pour traiter une boucle jusqu'à se que le fichier soit rendu à la fin.]
cs_ginger4957
Messages postés69Date d'inscriptionjeudi 8 janvier 2009StatutMembreDernière intervention 3 septembre 2010 27 févr. 2009 à 16:23
Bonjour
J'ai résolu pas mal d'erreurs depuis la dernière fois, mais une en particulier commence à m'inquiéter ^^
Je déclare une variable dans laquelle le programme va premièrement écrire puis ensuite lire. Comment créer le fichier texte qui correspond à cette variable sous VS2008 puisque il faut choisir entre lire ou écrire lors de la déclaration (j'ai cru comprendre que l'objet se créait dans la déclaration et plus après comme en VB6)
J'avais trouvé ceci pour écrire :
Dim ma_variable As New StreamWriter ("MonFichier.txt")
Et pour lire :
Dim ma_variable As New StreamReader ("MonFichier.txt")
Existe-il une façon de créer un fichier qui va ensuite à la fois lire et écrire (pas en même temps l'objet est fermé puis rouvert) ??
cs_ginger4957
Messages postés69Date d'inscriptionjeudi 8 janvier 2009StatutMembreDernière intervention 3 septembre 2010 27 févr. 2009 à 16:56
Une info importante :
Avant sous VB6 cette ligne était déclarée ainsi :
Dim ma_variable As TextStream
Et le fichier était créé après de cette manière pour pouvoir ensuite l'ouvrir en mode écriture :
fso.CreateTextFile (nom_repertoire)
Set ma_variable = fso.OpenTextFile(nom_repertoire, ForWriting)
cs_ginger4957
Messages postés69Date d'inscriptionjeudi 8 janvier 2009StatutMembreDernière intervention 3 septembre 2010 2 mars 2009 à 10:18
Bonjour,
merci Casy, j'ai réussi à créer le fichier.
J'ai un problème pour traduire fso.GetFolder de vb6 en vb2008, j'avais mis GetType à la place mais ça n'a pas l'air d'être la même chose... Et je n'arrive pas à trouver ce que faisait cet élément sous vb6 je suppose qu'il récupérait un dossier (qui ici correspondrait à mon répertoire) ?
cs_ginger4957
Messages postés69Date d'inscriptionjeudi 8 janvier 2009StatutMembreDernière intervention 3 septembre 2010 2 mars 2009 à 12:36
Je te remercie Casy :)
Ton code ne me marque plus d'erreur apparente, mais il y a toujours l'exception InvalidCastException qui n'est pas gérée ; impossible d'effectuer un cast d'un objet de type System.String[] en type Scripting.Folder
Serait-ce au niveau des déclarations ou au tout début du code manquerait-il un Imports ou autre au début du code ? :s
cs_ginger4957
Messages postés69Date d'inscriptionjeudi 8 janvier 2009StatutMembreDernière intervention 3 septembre 2010 2 mars 2009 à 12:50
Le répertoire est déclaré ainsi :
Public mon_repertoire As String
Il fait partie du module declaration_variables.vb, et est appelé dans le module module_prep.vb (qui est le module dans lequel je cherche la solution au problème)
Je pense que le pb InvalidCastException est lié à cette déclaration ???
cs_ginger4957
Messages postés69Date d'inscriptionjeudi 8 janvier 2009StatutMembreDernière intervention 3 septembre 2010 2 mars 2009 à 15:28
Merci Casy
Losque je déclare ma_variable en string, le programme ne veut pas récupérer les sous-répertoires du répertoire mon_repertoire.
Sinon je ne voulais pas parler d'écrire dans un fichier mais d'ouvrir le fichier comme ceci :
ma_variable = FileOpen(.....)
En fait pour l'instant j'ouvre le fichier de cette manière :
FileOpen(.....)
Et avant en vb6 on pouvait ouvrir un fichier dans une variable, là j'ai l'impression que ce n'est plus possible.