vb@rchiv
VB Classic
VB.NET
ADO.NET
VBA
C#
Top-Preis! AP-Access-Tools-CD Volume 1  
 vb@rchiv Quick-Search: Suche startenErweiterte Suche starten   Impressum  | Datenschutz  | vb@rchiv CD Vol.6  | Shop Copyright ©2000-2025
 
zurück

 Sie sind aktuell nicht angemeldet.Funktionen: Einloggen  |  Neu registrieren  |  Suchen

Visual-Basic Einsteiger
Type als NULL übergeben 
Autor: Timmy the Turtle
Datum: 19.11.09 13:39

Hallo,
ich habe folgende Funktion
Declare Function LlGetPrinterFromPrinterFile Lib "CMLL13.DLL" Alias _
  "_LlGetPrinterFromPrinterFileA@32"
 (ByVal hJob As Long, 
  ByVal nObjType As Long, 
  ByVal pszObjectName As String, 
  ByVal nPrinter As Long,
  ByVal pszPrinter As String,
  pnPrinterBufSize As Long,
  pDevMode As DEVMODE,
  pnDevModeBufSize As Long)
As Long
Ich habe Probleme mit den letzten beiden Parametern pDevMode
und pnDevModeBufSize. Die Dokumentation sagt zu den
beiden folgendes:
pDM: Zeiger auf einen Puffer, in dem die DEVMODE-Struktur des Druckers abgelegt
wird. Wenn pDM NULL ist und pnSizeDm nicht NULL ist, wird die Größe des
benötigten Platzes in *pnSizeDm gespeichert.
pnSizeDm: Puffergröße des Bereichs, auf den pDM zeigt
Die DEVMODE-Struktur ist wie folgt aufgebaut:
Type DEVMODE
    dmDeviceName As String * 32
    dmSpecVersion As Integer
    dmDriverVersion As Integer
    dmSize As Integer
    dmDriverExtra As Integer
    dmFields As Long
    dmOrientation As Integer
    dmPaperSize As Integer
    dmPaperLength As Integer
    dmPaperWidth As Integer
    dmScale As Integer
    dmCopies As Integer
    dmDefaultSource As Integer
    dmPrintQuality As Integer
    dmColor As Integer
    dmDuplex As Integer
    dmYResolution As Integer
    dmTTOption As Integer
    dmCollate As Integer
    dmFormName As String * 32
    dmUnusedPadding As Integer
    dmBitsPerPel As Long ' Basic Win32 definition had an error here!
    dmPelsWidth As Long
    dmPelsHeight As Long
    dmDisplayFlags As Long
    dmDisplayFrequency As Long
 End Type
So, genug des Vorgeplänkels. Nun zu meinem Problem!
Ich möchte gerne einen NULL-Wert beim pDevMode Parameter
übergeben. Aber alle mir bisher bekannten Methoden haben
nicht Funktioniert. Wenn ich vbNull, Nothing,
0& übergebe bekomme ich beim Kompilieren folgende
Fehlermeldung:
Argumenttyp ByRef unverträglich.
Danach habe ich versucht einer DEVMODE-Variablen NULL zuzuweisen.
Das funktioniert aber leider auch nicht.

Wenn ich der DEVMODE-Variable nicht NULL zuweisen wollte, muss ich
wie in der Dokumentation beschrieben, die Größe dieser Buffer-Variablen
im Parameter pnDevModeBufSize übergeben. Die Größe in Byte ermittele ich mit
der Len()-Funktion.
 Dim pDMBuffer as DEVMODE
 Dim pDMBufferSize as Long
 pDMBufferSize = Len(pDMBuffer)
Leider bekomme ich, wenn ich dieses Vorgehen wähle, die Meldung von
der Funktion, dass eine Buffervariable zu klein ist um die ermittelten
Daten in diese zu übergeben.

Da die DEVMODE-Variable nicht übergeben werden muss würde ich gerne
einen NULL-Wert übergeben. Das bekomme ich aber nicht hin.
Kann mir jemand weiter helfen?

MfG,
TtT

PS: Weit ausgeholt für ein einfaches Problem .
alle Nachrichten anzeigenGesamtübersicht  |  Zum Thema  |  Suchen

 ThemaViews  AutorDatum
Type als NULL übergeben2.405Timmy the Turtle19.11.09 13:39
Re: Type als NULL übergeben1.327ModeratorDieter19.11.09 21:45
Re: Type als NULL übergeben1.179Timmy the Turtle20.11.09 08:19

Sie sind nicht angemeldet!
Um auf diesen Beitrag zu antworten oder neue Beiträge schreiben zu können, müssen Sie sich zunächst anmelden.

Einloggen  |  Neu registrieren

Funktionen:  Zum Thema  |  GesamtübersichtSuchen 

nach obenzurück
 
   

Copyright ©2000-2025 vb@rchiv Dieter Otter
Alle Rechte vorbehalten.
Microsoft, Windows und Visual Basic sind entweder eingetragene Marken oder Marken der Microsoft Corporation in den USA und/oder anderen Ländern. Weitere auf dieser Homepage aufgeführten Produkt- und Firmennamen können geschützte Marken ihrer jeweiligen Inhaber sein.

Diese Seiten wurden optimiert für eine Bildschirmauflösung von mind. 1280x1024 Pixel