Question très bête (Vol.2)

Résolu
_Fabien Messages postés 119 Date d'inscription vendredi 17 novembre 2006 Statut Membre Dernière intervention 28 avril 2008 - 11 janv. 2007 à 10:18
_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

8 réponses

_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
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.
3
cs_casy Messages postés 7741 Date d'inscription mercredi 1 septembre 2004 Statut Membre Dernière intervention 24 septembre 2014 40
11 janv. 2007 à 10:49
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 #
1
Renfield Messages postés 17287 Date d'inscription mercredi 2 janvier 2002 Statut Modérateur Dernière intervention 27 septembre 2021 74
11 janv. 2007 à 11:07
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
1
Renfield Messages postés 17287 Date d'inscription mercredi 2 janvier 2002 Statut Modérateur Dernière intervention 27 septembre 2021 74
11 janv. 2007 à 10:28
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
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
_Fabien Messages postés 119 Date d'inscription vendredi 17 novembre 2006 Statut Membre Dernière intervention 28 avril 2008
11 janv. 2007 à 10:33
Elle ne répond pas.
0
_Fabien Messages postés 119 Date d'inscription vendredi 17 novembre 2006 Statut Membre Dernière intervention 28 avril 2008
11 janv. 2007 à 10:36
J'ai nommé ma classe "Public Class Struct", mais avec "Public class bidule", ça ne marche pas non plus.
0
_Fabien Messages postés 119 Date d'inscription vendredi 17 novembre 2006 Statut Membre Dernière intervention 28 avril 2008
11 janv. 2007 à 11:39
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 !  
0
_Fabien Messages postés 119 Date d'inscription vendredi 17 novembre 2006 Statut Membre Dernière intervention 28 avril 2008
11 janv. 2007 à 11:49
Ça y est ça marche. J'ai recommencé dans un nouveau projet tout simplement.
0
Rejoignez-nous