Question très bête (Vol.2) [Résolu]

Messages postés
119
Date d'inscription
vendredi 17 novembre 2006
Statut
Membre
Dernière intervention
28 avril 2008
- - Dernière réponse : _Fabien
Messages postés
119
Date d'inscription
vendredi 17 novembre 2006
Statut
Membre
Dernière intervention
28 avril 2008
- 11 janv. 2007 à 11:58
J'ai trouvé la source suivante : http://www.vbfrance.com/codes/NET-TYPE-STRUCTURE-COMPATIBILITE-VB6_25830.aspx

Je n'arrive pas à la faire marcher. J'ai ouvert un projet vide avec un fichier vide et j'ai tapé ceci (en VB.Net sous SharpDevelop) :

Option Explicit On
  
Imports System.Runtime.InteropServices

Public Class Struct

   Public Sub main()
    OnWrite()
    OnRead()
   End Sub

   (son code)
End class

1 erreur : Aucune méthode main accessible avec une signature appropriée n'a été trouvé dans Essai (nom de mon projet)
___________________________
Sinon, question générale : de quel minimum a besoin un pgrm VB.Net pour démarrer ? La syntaxe de base, ce n'est pas çà :

class bidule
  sub main()

  end sub

  (autres procédures)

end class
Afficher la suite 

8 réponses

Meilleure réponse
Messages postés
119
Date d'inscription
vendredi 17 novembre 2006
Statut
Membre
Dernière intervention
28 avril 2008
3
Merci
Comme dit, j'ai fait un copier-coller dans un nouveau projet. Mais cette fois-ci, j'ai changé :

"public class bidule" par "module bidule" et ça fonctionne. Les Class, ça doit être pour les formulaires entre autres.

Dire « Merci » 3

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources 201 internautes nous ont dit merci ce mois-ci

Commenter la réponse de _Fabien
Messages postés
7741
Date d'inscription
mercredi 1 septembre 2004
Statut
Membre
Dernière intervention
24 septembre 2014
31
1
Merci
regarde dans les propriétés du projet si ta procedure main est bien définie comme object de démarrage.

---- Sevyc64  (alias Casy) ---- # LE PARTAGE EST NOTRE FORCE #
Commenter la réponse de cs_casy
Messages postés
17280
Date d'inscription
mercredi 2 janvier 2002
Statut
Modérateur
Dernière intervention
21 juillet 2019
58
1
Merci
je ne faisais pas d'allusion avec le mot 'Struct' qui serait réservé...

simplement que ta sub Main serait mal placée...

Renfield
Admin CodeS-SourceS- MVP Visual Basic
Commenter la réponse de Renfield
Messages postés
17280
Date d'inscription
mercredi 2 janvier 2002
Statut
Modérateur
Dernière intervention
21 juillet 2019
58
0
Merci
Vois ca en direct avec l'auteur... une fois de plus.

Je crois que ce qui gène #Dev, c'est que Main est dans Struct

Renfield
Admin CodeS-SourceS- MVP Visual Basic
Commenter la réponse de Renfield
Messages postés
119
Date d'inscription
vendredi 17 novembre 2006
Statut
Membre
Dernière intervention
28 avril 2008
0
Merci
Elle ne répond pas.
Commenter la réponse de _Fabien
Messages postés
119
Date d'inscription
vendredi 17 novembre 2006
Statut
Membre
Dernière intervention
28 avril 2008
0
Merci
J'ai nommé ma classe "Public Class Struct", mais avec "Public class bidule", ça ne marche pas non plus.
Commenter la réponse de _Fabien
Messages postés
119
Date d'inscription
vendredi 17 novembre 2006
Statut
Membre
Dernière intervention
28 avril 2008
0
Merci
Non effectivement. J'ai rectifié le tir, mais il m'affiche une autre erreur :
"Sub main est introuvable dans main".


Voici 2 pages écrans :



http://img146.imageshack.us/img146/3723/essai1xv0.jpg



http://img183.imageshack.us/img183/8652/essai2in4.jpg

(j'ai tapé : "Main" dans Objet de demarrage)


Et l'intégralité de mon code tapé :



Option Explicit On
 
Imports System.Runtime.InteropServices
Imports System.Windows.Forms
Imports System.IO



Public Class Bidule



    Public Sub Main()
      OnWrite()
      OnRead()
    End Sub



    Private Structure TYPETEST
        <MarshalAs(UnmanagedType.ByValTStr, SizeConst:=8)> _
        Dim Test1 As String
        <MarshalAs(UnmanagedType.ByValArray, SizeConst:=8)> _
        Dim Test2() As Byte
        Sub New(ByVal e as Object) 
            ReDim Test2(7)
        End Sub
    End Structure
 
 
 
    Public Function ByteToStruct(ByRef Data() As Byte) As Object
        Dim Handle As GCHandle = GCHandle.Alloc(Data, GCHandleType.Pinned)
        Dim Pointer As IntPtr = Handle.AddrOfPinnedObject()
        ByteToStruct = DirectCast(Marshal.PtrToStructure(Pointer, GetType(TYPETEST)), TYPETEST)
        Handle.Free() 
    End Function
 
    Public Function StructToByte(ByRef Obj As Object) As Byte()
        Dim Data(Marshal.SizeOf(Obj)) As Byte
        Dim Handle As GCHandle = GCHandle.Alloc(Data, GCHandleType.Pinned)
        Dim Pointer As IntPtr = Handle.AddrOfPinnedObject()
        Marshal.StructureToPtr(Obj, Pointer, False)
        Handle.Free()
        Return Data
    End Function 
  
   Public Sub OnWrite()
        Dim vTest As New TYPETEST(0)
        Dim vData() As Byte
        With New IO.FileStream("Test.txt", IO.FileMode.OpenOrCreate)
            vTest.Test1 = "Manu"
            vData = StructToByte(vTest)
            .Write(vData, 0, vData.Length)
            .Close()
        End With
    End Sub
 
    Public Sub OnRead()
        Dim vTest As New TYPETEST(0)
        Dim vData() As Byte
        With New IO.FileStream("Test.txt", IO.FileMode.Open)
            .Read(vData, 0, vData.Length) 
            vTest = ByteToStruct(vData)
            messagebox.show (vTest.test1)
            .Close()
        End With
    End Sub



End Class


_______________________________________
Pendant 3 semaines, tout roulait ! Aucune aide à demander (les sources suffisaient). Mon projet perso marchait bien. Et depuis 2 semaines, je n'arrive pas à écrire une ch'ti struture à dans un fichier binaire. Et là, je n'arrive même pas à exécuter des sources fournies  :je touche le fond ! Gloup, gloup....   

Du coup, je suis obligé d'aider les autres en VBA pour passer le temps

Maman, ma tétine ! Vais dormir !  
Commenter la réponse de _Fabien
Messages postés
119
Date d'inscription
vendredi 17 novembre 2006
Statut
Membre
Dernière intervention
28 avril 2008
0
Merci
Ça y est ça marche. J'ai recommencé dans un nouveau projet tout simplement.
Commenter la réponse de _Fabien