ABOUT Visual Basic Programmieren Programmierung Download Downloads Tips & Tricks Tipps & Tricks Know-How Praxis VB VBA Visual Basic for Applications VBS VBScript Scripting Windows ActiveX COM OLE API ComputerPC Microsoft Office Microsoft Office 97 Office 2000 Access Word Winword Excel Outlook Addins ASP Active Server Pages COMAddIns ActiveX-Controls OCX UserControl UserDocument Komponenten DLL EXE
Diese Seite wurde zuletzt aktualisiert am 27.09.2001

Diese Seite wurde zuletzt aktualisiert am 27.09.2001
Aktuell im ABOUT Visual Basic-MagazinGrundlagenwissen und TechnologienKnow How, Tipps und Tricks rund um Visual BasicActiveX-Komponenten, Controls, Klassen und mehr...AddIns für die Visual Basic-IDE und die VBA-IDEVBA-Programmierung in MS-Office und anderen AnwendungenScripting-Praxis für den Windows Scripting Host und das Scripting-ControlTools, Komponenten und Dienstleistungen des MarktesRessourcen für Programmierer (Bücher, Job-Börse)Dies&Das...

Themen und Stichwörter im ABOUT Visual Basic-Magazin
Code, Beispiele, Komponenten, Tools im Überblick, Shareware, Freeware
Ihre Service-Seite, Termine, Job-Börse
Melden Sie sich an, um in den vollen Genuss des ABOUT Visual Basic-Magazins zu kommen!
Informationen zum ABOUT Visual Basic-Magazin, Kontakt und Impressum

Zurück...

Eigene Datentypen

Zurück...


Anzeige

(-hg) mailto:hg_ownvartypes@aboutvb.de

Sicher sind Ihnen, vor allem beim Einsatz von API-Funktionen, in den Original-Deklarationen Datentypen wie hWnd, hDC, hIcon und dergleichen mehr begegnet. In C und in anderen Programmiersprachen sind solche Datentyp-Deklarationen durchaus üblich, auch wenn sie letztlich nicht wirklich einen neuen Datentyp repräsentieren. Aus der Sicht von VB werden die meisten dieser Datentypen als Datentyp Long interpretiert - so auch die oben genannten. Insofern haben solche Datentypen keine sich zur Laufzeit auswirkende funktionale Relevanz. Hingegen diesen sie in erster Linie der Sicherheit - falsch deklarierte Datentypen, etwa bei Funktions-Parametern, werden vom Kompiler abgewiesen. So wird ein C(++)-Programmierer zum Beispiel einer API-Funktion, die in einem Parameter ein Fenster-Handle (hWnd) erwartet, keinen Gerätekontext (hDC) in eben diesem Parameter übergeben können.

In Visual Basic können Sie leider nicht so einfach solche eigenen Datentypen ins Rennen schicken - aber es geht dennoch. Schauen wir uns einmal an, welche Möglichkeiten vielleicht in Betracht kommen könnten, um etwa den Datentyp hWnd zu kreieren.

Die einzigen Möglichkeiten in Visual Basic, eigene Datentypen zu deklarieren, sind das Anlegen eines so genannten "Benutzerdefinierten Datentyps" oder das Anlegen einer Enumeration. Ein "Benutzerdefinierter Datentyp" scheidet aus praktischen Gründen aus:

Public Type hWnd
  .Irgendwas As Long
End Type

Abgesehen davon dass die Syntax ziemlich umständlich wäre, würde eine Deklaration wie

Declare Function SendMessage Lib "user32" Alias "SendMessageA" _
 (hWnd As hWnd, ...

den gewünschten Effekt verfehlen - der Aufruf

Dim nWnd As hWnd

nWnd.Irgendwas = Me.hWnd
SendMessage nWnd, ...

würde wirkungslos ausgeführt.

Eine Enumeration sieht dagegen schon vielversprechender aus:

Public Enum hWnd
   Irgendwas
End Enum

Die Deklaration würde nun so lauten:

Declare Function SendMessage Lib "user32" Alias "SendMessageA" _
 (ByVal hWnd As hWnd, ...

Und der Aufruf würde keine syntaktischen Verrenkungen erfordern oder Probleme aufwerfen:

SendMessage Me.hWnd, ...

Etwas irritierend ist allerdings, dass der IntelliSense-Mechanismus der Entwicklungsumgebung jedes Mal diesen ominösen "Irgendwas"-Wert anzubieten versucht.

Einfach weglassen geht jedoch nicht:

Public Enum hWnd
End Enum

Dies würde beim Kompilieren mit einer Fehlermeldung quittiert werden:

"Fehler beim Kompilieren: Enum ohne Elemente nicht möglich"

Da Enumerationen zur COM-Welt gehören, und da die COM-Welt den führenden Unterstrich als Kennzeichen für Unsichtbarkeit kennt, könnte man doch...?

Public Enum hWnd
  _Irgendwas
End Enum

...oder doch nicht? Der Syntaxchecker der IDE moniert diese Schreibweise auf der Stelle. Letzter Versuch, die VB-IDE mit ihren eigenen Mitteln zu schlagen. Sie erlaubt nämlich in Grenzen die Verwendung von Begriffen, die den Syntaxregeln widersprechen, wenn solch ein Begriff in eckige Klammern eingeschlossen wird:

Public Enum hWnd
  [_Irgendwas]
End Enum

oder - wenn schon, denn schon - ganz konsequent:

Public Enum hWnd
  [_]
End Enum

Damit hätten wir fast unser Eingangs gestecktes Ziel erricht. Sie können nun einen Parameter oder eine Variable problemlos als Ihren neuen Datentyp deklarieren und verwenden:

Public Enum MeinDatenTyp
  [_]
End Enum

Sub MeineSub(MeinParameter As MeinDatenTyp)
   '...
End Sub

' ...
Dim nVar As MeinDatenTyp

MeineSub nVar

Eines können wir so jedoch nach wie vor nicht erreichen: Die Ablehnung durch den Kompiler, wenn eine Variable eines falschen Datentyps übergeben wurde. Aus VB-Sicht handelt es sich nämlich nach wie vor um Long-Werte, die der Kompiler natürlich anstandslos und untereinander austauschbar akzeptiert. Aber vielleicht hilft Ihnen dieser kleine Trick zumindest, Ihren Über- und Durchblick über und durch Ihren eigenen Code (oder den Ihrer Kollegen) zu wahren.


Artikel
Mail an den Autor dieses Artikels

KnowHow
Zur KnowHow-Übersicht

KnowHow-Themen
Themen - Allgemeines
Themen - Entwicklungsumgebung (VB-IDE)
Themen - Forms
Themen - Steuerelemente (Controls)
Themen - Grafik
Themen - Dateien
Themen - UserControls
Themen - Einsteiger-Tipps
Themen - Wussten Sie...?

Übersicht nach Titeln in alphabetischer Reihenfolge
Übersicht nach Erscheinungsdatum

Schnellsuche




Zum Seitenanfang

Copyright © 1999 - 2017 Harald M. Genauck, ip-pro gmbh  /  Impressum

Zum Seitenanfang

Zurück...

Zurück...

Download Internet Explorer