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

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

Votre réponse

8 réponses

Meilleure réponse
Messages postés
119
Date d'inscription
vendredi 17 novembre 2006
Dernière intervention
28 avril 2008
- 11 janv. 2007 à 11:58
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.

Merci _Fabien 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 88 internautes ce mois-ci

Commenter la réponse de _Fabien
Messages postés
7745
Date d'inscription
mercredi 1 septembre 2004
Dernière intervention
24 septembre 2014
- 11 janv. 2007 à 10:49
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
17308
Date d'inscription
mercredi 2 janvier 2002
Dernière intervention
22 août 2018
- 11 janv. 2007 à 11:07
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
17308
Date d'inscription
mercredi 2 janvier 2002
Dernière intervention
22 août 2018
- 11 janv. 2007 à 10:28
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
Dernière intervention
28 avril 2008
- 11 janv. 2007 à 10:33
0
Merci
Elle ne répond pas.
Commenter la réponse de _Fabien
Messages postés
119
Date d'inscription
vendredi 17 novembre 2006
Dernière intervention
28 avril 2008
- 11 janv. 2007 à 10:36
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
Dernière intervention
28 avril 2008
- 11 janv. 2007 à 11:39
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
Dernière intervention
28 avril 2008
- 11 janv. 2007 à 11:49
0
Merci
Ça y est ça marche. J'ai recommencé dans un nouveau projet tout simplement.
Commenter la réponse de _Fabien

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.