Problème Fonction DeviceCapabilities
Bonjour,
Je fais un essai avec une fonction pour lister les formats de papier disponibles pour une imprimante.
A l'origine,le code vient de VB6 et a été convertit en vb.net.
Lors de l'exécution j'ai le message d'erreur suivant:
Citation:
Une exception de type 'System.ExecutionEngineException' a été levée.
Dans les listes d'erreurs j'ai ce message pour les 2 codes en couleur verte dans le code complet:
Citation:
Avertissement 1 La variable 'formatpapier' est utilisée avant qu'une valeur ne lui ait été assignée. Une exception de référence null peut se produire au moment de l'exécution.
Le problème est que les variables i et p sont nulles sur la ligne "combien = DeviceCapabilities(i, p, 2, 0, 0)"
Voici le code complet:
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22
|
Private Declare Function DeviceCapabilities Lib "winspool.drv" Alias "DeviceCapabilitiesA" (ByVal lpDeviceName As String, ByVal lpPort As String, ByVal iIndex As Integer, ByRef lpOutput As IntPtr, ByRef lpDevMode As IntPtr) As Integer
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
Dim impri, porte As String
impri = "PDFCreator" '<<<<<<<<<<====== Ici le nom de ton imprfimante à toi
porte = "PDFCreator:" ' <<<<<<<<<<<<============== ici le port sur lequel elle est
MsgBox("Cette imprimante supporte les tailles de papier suivantes :" & formatpapier(impri, porte))
End Sub
Private Function formatpapier(ByRef i As String, ByRef p As String) As String
Dim combien As Integer
Dim Tailles() As Short
combien = DeviceCapabilities(i, p, 2, 0, 0)
'UPGRADE_WARNING: La limite inférieure du tableau Tailes est passée de 1 à 0. Cliquez ici*: 'ms-help://MS.VSCC.v90/dv_commoner/local/redirect.htm?keyword="0F1C9BE1-AF9D-476E-83B1-17D43BECFF20"'
ReDim Tailles(combien)
Call DeviceCapabilities(i, p, 2, Tailles(0), 0)
Dim nb As Integer
For nb = 1 To combien
formatpapier = formatpapier & vbCrLf & Str(Tailles(nb))
Next
End Function |
Avez-vous une idée de l'origine de ce problème?
Si vous avez besoin je pourrai mettre le code d'origine VB6 avant conversion
Merci pour votre aide