Converssion de code VB6 en VB.net

Résolu
forum_ma Messages postés 112 Date d'inscription samedi 16 octobre 2004 Statut Membre Dernière intervention 31 juillet 2006 - 16 mars 2006 à 18:52
cs_casy Messages postés 7741 Date d'inscription mercredi 1 septembre 2004 Statut Membre Dernière intervention 24 septembre 2014 - 16 mars 2006 à 20:42
Bonjour je suis en train de convertir un programme qui est à la base en VB6, je le converti en VB.net.

Cependant je ne suis pas excellent en VB6 et j'ai deux ligne que je ne suis pas capable de convertir , voici les lignes :



Dim PIds()
As
Long, PIdsCount
As
Long
(...)
ReDim PIds(1&
To 1&) <===== Convertir cette ligne
(...)

Mon 2e probleme est dans ce code :
' WindowClassname function returns window's class name.
Private
Function WindowClassname(
ByVal hwnd
As EnumWindowsDelegate)
As
String
WindowClassname = String$(255&, 0) <===== LA FONCTION String$ a convertir
WindowClassname = Left(WindowClassname, GetClassName(hwnd, WindowClassname, 255&))

End
Function

Pour ce qui est du string$, J'ai trouvé StrDup qui a l'air de ressembler, mais sa marche pas a cause du 255&...

Donc si vous pouvez m'aider sa serait apprécier :)

6 réponses

cs_casy Messages postés 7741 Date d'inscription mercredi 1 septembre 2004 Statut Membre Dernière intervention 24 septembre 2014 40
16 mars 2006 à 19:15
Première chose, oublie le signe & collé au nombres, c'était pour indiqué le type du nombre. Je crois que ce n'est plus utilisé, de toute façon ça n'a jamais été très utile car pas du tout clair quand tu relis un code.

Pour la string, tu peux effectivement utilisé StrDup comme ceci donc : StrDup(255,0)

Pour Redim par contre, il faut savoir qu'en .Net les tableaux commencent toujours à 0 contrairement à VB6 ou on pouvais les faire commencé ou on voulais.
Donc ReDim(1 to 1) en VB6 te déclarait un tableau avec une cellule ayant pour index 1

En .Net soit tu fait Redim(1), alors tu auras un tableau de 2 cellules (index 0 et 1) et tu continu à utiliser ta cellule index 1 comme vant dans le code, soit il te faut obligatoirement un tableau de taille 1, dans ce cas tu met ReDim(0) et tu modifi ton code pour utiliser la cellule d'index 0.

Voila en espérant t'avoir aidé

<hr size="2" width="100%">
3
cs_Jack Messages postés 14006 Date d'inscription samedi 29 décembre 2001 Statut Modérateur Dernière intervention 28 août 2015 79
16 mars 2006 à 19:11
Salut
Bizarre
C'est surement le & après le chiffre sur lequel il bloque : Enlève-le, il ne sert à rien dans ton cas.

Vala
Jack, MVP VB
NB : Je ne répondrai pas aux messages privés

Champion du monde de boule de cristal - 2005
Le savoir est la seule matière qui s'accro
0
forum_ma Messages postés 112 Date d'inscription samedi 16 octobre 2004 Statut Membre Dernière intervention 31 juillet 2006
16 mars 2006 à 19:43
Merci a vous deux!!!

Rester pas loin jva surement avoir d'autre questin plus tard durant la conversion :)
0
forum_ma Messages postés 112 Date d'inscription samedi 16 octobre 2004 Statut Membre Dernière intervention 31 juillet 2006
16 mars 2006 à 20:33
Bon j'ai une autre question... Le type Any n'existe plus, c'est quoi qui le remplace??


Voici ou il est utilise :


Declare
Function RegSetValueEx
Lib "advapi32.dll"
Alias "RegSetValueExA" (
ByVal hKey
As
Long,
ByVal lpValueName
As
String,
ByVal Reserved
As
Long,
ByVal dwType
As
Long,
ByVal lpData
As
Any,
ByVal cbData
As
Long)
As
Long

Je ne sais pas par koi le changer et je ne trouve pas de doc sur cette API...
0

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

Posez votre question
forum_ma Messages postés 112 Date d'inscription samedi 16 octobre 2004 Statut Membre Dernière intervention 31 juillet 2006
16 mars 2006 à 20:37
J'ai p-e trouvé quelque chose mais je ne sais pas trop comment l'utiliser :


VB4-32,5,6
Declare Function RegSetValueEx Lib "advapi32.dll" Alias "RegSetValueExA" (ByVal hKey As Long, ByVal lpValueName As String, ByVal Reserved As Long, ByVal dwType As Long, lpData As Any, ByVal cbData As Long) As Long ' Note that if you declare the lpData parameter as String, you must pass it By Value.


VB.NET
Microsoft.Win32.RegistryKey.SetValue

Ce qui voudrait dire que j'ai juste a changer la function par Microsoft.Win32.RegistryKey.SetValue ????
0
cs_casy Messages postés 7741 Date d'inscription mercredi 1 septembre 2004 Statut Membre Dernière intervention 24 septembre 2014 40
16 mars 2006 à 20:42
Justement j'étais en train de regarder un exemple, je te le donne ci-dessous :

Imports System
Imports Microsoft.Win32
Public Module modmain
Sub Main()
'The KPD-Team 2001
'URL: http://www.allapi.net/dotnet/
'E-Mail: KPDTeam@Allapi.net
'Create a new registry key
' HKEY_CURRENT_USER\Software\AllAPI.net
Dim RegKey as RegistryKey = Registry.CurrentUser.CreateSubKey( _
"Software\AllAPI.net")
'Set the value of 'URL' to 'http://www.allapi.net/'
RegKey.SetValue("URL", "http://www.allapi.net/")
'Delete 'URL'
RegKey.DeleteValue("URL")
'Delete the subkey AllAPI.net
Registry.CurrentUser.DeleteSubKey("Software\AllAPI.net")
'Close the registry key
RegKey.Close()
End Sub
End Module

<hr size="2" width="100%">
0
Rejoignez-nous