Erreurs code vb6 à vb.net

wxec Messages postés 8 Date d'inscription samedi 11 septembre 2010 Statut Membre Dernière intervention 11 mai 2011 - 4 mai 2011 à 15:45
cs_Agnostik Messages postés 1 Date d'inscription mardi 29 août 2006 Statut Membre Dernière intervention 16 juin 2011 - 16 juin 2011 à 12:38
Bonjour

Je ne sais pas si mon message est dans la bonne catégorie, veuillez m'excuser d'avance.

Actuellement sur un projet, nous devons transformer le code d'une aplication de vb6 à vb.net, mais pour certaines lignes de codes, nous n'arrivons pas à trouver les erreurs affichées dans vb.net. Si quelqu'un peut nous aider:

voici une fonction pour laquelle je n'arrive pas à corriger l'erreur 'en rouge), on met un résultat à la variable C mais en utilisant un type string dans l'expression , ce qui n'est pas autorisé en vb.net:

Function BinAsc(ByVal C_Orig As String, ByVal C_Dest As String, ByVal L_Orig As Integer) As Short
Dim T_Val As String
Dim L_Dest As String
Dim L_Local As Short
T_Val = "0123456789ABCDEF"
L_Dest = Len(C_Dest)
C_Dest = ""
If L_Orig <= 0 Then
BinAsc = 0
Exit Function
End If
L_Local = L_Orig
'If L_Local > 128 Then L_Local% = 128
If L_Local > L_Dest / 2 Then
L_Local = L_Dest / 2
End If
C_Dest = string (2 * L_Local, " ")

For i = 1 To L_Local
Dim j = (i * 2) - 1
Dim car As String
car = Mid(C_Orig, i, 1)
Dim N_Droi As Short
N_Droi = Asc(car)
N_Droi = N_Droi Mod (16)
Dim N_Gauc As Short
N_Gauc = Asc(car)
N_Gauc = (N_Gauc - N_Droi) / 16
Mid(C_Dest, j, 1) = Mid(T_Val, N_Gauc + 1, 1)
Mid(C_Dest, j + 1, 1) = Mid(T_Val, N_Droi + 1, 1)
Next i
BinAsc = L_Local
End Function


' Effectue un changement de carte
'
Function ChangeCarte() As Short
Dim O As String

O = String$(256, 0)

InfosCarte.IdCarteLog = " " 'efface numéro de carte
Dim Screen
Screen.MousePointer = 11 'Pointeur en sablier'
'Print #1,
'Print #1, "*** Changement de carte..."
Lgraz = 50
CR_API = CPS_IntroductionCarte(Connex, Delai, StatusService(0), EtatCarte, Lgraz, O)
Dim ret = CR_TO_LIB() 'convertit CR_API% en CR_LIB$
'Print #1, "API Introduction carte : "; CR_LIB$
CR_API = CPS_InformationsCarte(Connex, InfosCarte, StatusService(0), EtatCarte)
ret = CR_TO_LIB() 'convertit CR_API% en CR_LIB$
'Print #1, "API Information carte : "; CR_LIB$
'If CR_API% 0 Then Print #1, "IdCarteLog "; InfosCarte.IdCarteLog
'Print #1,

End Function


Merci de votre aide

Cordialement

11 réponses

cs_jopop Messages postés 1540 Date d'inscription lundi 26 mai 2003 Statut Membre Dernière intervention 1 août 2013 12
4 mai 2011 à 16:12
Salut,

Apparemment ce constructeur String() en VB.NET a les paramètres inversés par rapport à VB6. Il devrait te suffire d'intervertir tes 2 paramètres pour que cela fonctionne. Tente ça et tiens moi au courant ;)
0
wxec Messages postés 8 Date d'inscription samedi 11 septembre 2010 Statut Membre Dernière intervention 11 mai 2011
4 mai 2011 à 16:21
vb.net me dit que string est un type et ne peux pas être utilisé en tant qu'expression
Même en inversant les paramètres, cela ne fonctionne pas
0
cs_jopop Messages postés 1540 Date d'inscription lundi 26 mai 2003 Statut Membre Dernière intervention 1 août 2013 12
4 mai 2011 à 16:36
Ah oui, il ne faut pas seulement inverser, il faut également utiliser le mot-clé New. Ex., génération d'une string composé de 256 zéros (0) :
	Dim s As String
s = New String("0", 256)
0
wxec Messages postés 8 Date d'inscription samedi 11 septembre 2010 Statut Membre Dernière intervention 11 mai 2011
4 mai 2011 à 16:51
merci c'est parfait c'était bien ça :)

j'ai également une autre question au sujet de mes fonctions:



Function ImpAuthDyn() As Short
Dim OO As String = 32
Dim ret
'Print #1, "CalAuthDyn.RefCleI ",
ret = BinAsc(CalAuthDyn.RefCleI, OO, Len(CalAuthDyn.RefCleI))
'Print #1, OO

'Print #1, "CalAuthDyn.PresDiversifiant ",
ret = BinAsc(CalAuthDyn.PresDiversifiant, OO, Len(CalAuthDyn.PresDiversifiant))
'Print #1, OO

'Print #1, "CalAuthDyn.DiversifiantI ",
ret = BinAsc(CalAuthDyn.DiversifiantI, OO, Len(CalAuthDyn.DiversifiantI))
'Print #1, OO

'Print #1, "CalAuthDyn.Defi ",
ret = BinAsc(CalAuthDyn.Defi, OO, Len(CalAuthDyn.Defi))
'Print #1, OO

End Function

vb.net me dis que ceux qui est en rouge n'est pas membre de ma console.application. pourtant j'ai bien créer la structure avec les mêmes de nom variable


Structure T_CalAuthDyn
Sub main()
Dim RefCleI As String = 8
Dim PresDiversifiant As String = 1
Dim DiversifiantI As String = 8
Dim Defi As String = 8
End Sub
End Structure
Public CalAuthDyn As T_CalAuthDyn

vb.net me suggere de générer un stub de méthodes, ou un stub de propriété ou un champ de chaque variable en rouge c'est à dire dans le cas de cette fonction de RefCleI,DiversifiantI,etc...

Si quelqu'un peut m'éclairer

cordialement
0

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

Posez votre question
cs_jopop Messages postés 1540 Date d'inscription lundi 26 mai 2003 Statut Membre Dernière intervention 1 août 2013 12
4 mai 2011 à 17:03
As-tu des namespaces définis pour tes définitions de structure ?
0
wxec Messages postés 8 Date d'inscription samedi 11 septembre 2010 Statut Membre Dernière intervention 11 mai 2011
4 mai 2011 à 17:20
non j'ai juste modifié le code de vb6 a vb.net c'est a dire je suis passé de type à structure mais je n'ai pas rajouté de namespaces pour les structures
0
wxec Messages postés 8 Date d'inscription samedi 11 septembre 2010 Statut Membre Dernière intervention 11 mai 2011
5 mai 2011 à 21:56
Quelqu'un aurait-il une solution?
0
cs_jopop Messages postés 1540 Date d'inscription lundi 26 mai 2003 Statut Membre Dernière intervention 1 août 2013 12
5 mai 2011 à 22:09
Re,

je viens de voir que ta structure a une drôle de trogne ^^
pourquoi tes variables membres sont définies dans une procédure main() ?
essaie avec un truc comac :
Structure T_CalAuthDyn 
'on commente la ligne en-dessous
'Sub main() 
Dim RefCleI As String = 8 
Dim PresDiversifiant As String = 1 
Dim DiversifiantI As String = 8 
Dim Defi As String = 8 
'on commente la ligne en-dessous
'End Sub 
End Structure 


NB : je sais pas comment il est censé interpréter String = 8 par contre
0
wxec Messages postés 8 Date d'inscription samedi 11 septembre 2010 Statut Membre Dernière intervention 11 mai 2011
11 mai 2011 à 16:47
merci de ta réponse

J'ai de nouveaux quelques petits problèmes:
j'ai créer une classe printer mais je ne sais pas trop comment transformer ce code de vb6 à vb.net
Printer.Print("=============================================")

Printer.Print("FICHIER GALSS.INI (dans WINDIR) le " & E)
Printer.Print("=============================================")
Printer.Print()
Printer.Print("Taille du fichier = " & InfosPoste.LgFichierGALSSINI)
Printer.Print("Taille imprimée = " & InfosPoste.LgBufferFichierGALSSINI)
Printer.Print()
Dim i = List2.ListCount
If i > 0 Then
For j = 0 To i - 1
C = List2.List(j)
Printer.Print(C)
Next j
End If
Printer.EndDoc()

Printer.Print n'est pas reconnu , ni Printer.EndDoc

Cordialement
0
cs_jopop Messages postés 1540 Date d'inscription lundi 26 mai 2003 Statut Membre Dernière intervention 1 août 2013 12
11 mai 2011 à 16:50
Re,

Tu dois avoir un souci au niveau de la définition de ta classe.
A priori ça ne peut pas venir de l'appel.
Mets le code de ta classe ici qu'on regarde ça.
(perso j'aurais ptèt pas le temps, mais d'autres pourront alors te répondre)
0
cs_Agnostik Messages postés 1 Date d'inscription mardi 29 août 2006 Statut Membre Dernière intervention 16 juin 2011
16 juin 2011 à 12:38
Slt,

Pour imprimer en vbnet utilise la fonction

Dim pDoc As Drawing.Printing.PrintDocument
pDoc = New PrintDocument()

a+
0
Rejoignez-nous