Conversione in Visual Basic da C++
Usando il linguaggio di programmazione C++, gli sviluppatori possono accedere direttamente alla memoria che archivia una determinata variabile. I puntatori alla memoria forniscono questo accesso diretto. In Visual Basic i puntatori vengono gestiti automaticamente. Ad esempio, un parametro dichiarato come puntatore a un valore int in C++ equivale a un parametro dichiarato in Visual Basic come Valore Intero ByRef.
Un parametro dichiarato come stringa in Visual Basic viene dichiarato come puntatore a un BSTR in C++. L'impostazione di un puntatore di stringa su NULL in C++ equivale all'impostazione della stringa sulla costante vbNullString in Visual Basic. Il passaggio di una stringa di lunghezza zero ("") a una funzione progettata per ricevere NULL non funziona, perché passa un puntatore a una stringa di lunghezza zero anziché un puntatore zero.
C++ supporta contenitori di dati, ovvero strutture e unioni, che non hanno equivalenti nelle versioni precedenti di Visual Basic. Per questo motivo, gli oggetti COM in genere incapsulano le informazioni che in genere vengono archiviate in strutture e unioni nelle classi oggetto. Alcuni oggetti COM, tuttavia, possono contenere strutture, causando l'inaccessibilità di parti dei metodi o delle funzionalità dell'oggetto a Visual Basic.
Alcuni tipi di dati C++ non sono supportati in Visual Basic, ad esempio tipi non firmati e tipi HWND . I metodi che accettano o restituiscono questi tipi di dati non sono disponibili in Visual Basic.
Visual Basic usa tipi di dati compatibili con Automazione come tipi di dati interni. I tipi di dati C++ compatibili con Automazione sono quindi compatibili anche con Visual Basic. I tipi di dati non compatibili con Automazione potrebbero non essere in grado di essere convertiti in Visual Basic.
Nella tabella seguente sono elencati i tipi di dati supportati da Visual Basic e dai relativi equivalenti VARTYPE . VARTYPE è un'enumerazione che elenca i tipi varianti di Automazione.
Tipo di dati di Visual Basic | Equivalente VARTYPE |
---|---|
Integer |
16 bit, con segno, VT_I2 |
Long |
32 bit, con segno, VT_I4 |
Data |
VT_DATE |
Valuta |
VT_CY |
Object |
*VT_DISPATCH |
Stringa |
VT_BSTR |
Booleano |
VT_BOOL |
Valuta |
VT_DECIMAL |
Singolo |
VT_R4 |
Double |
VT_R8 |
Decimale |
VT_DECIMAL |
Byte |
VT_DECIMAL |
Variant |
VT_VARIANT |
Tutti i parametri in Visual Basic, a meno che non siano etichettati con la parola chiave ByVal, vengano passati per riferimento (come puntatori) anziché per valore.
C++ e Visual Basic differiscono leggermente in modo da rappresentare le proprietà. In C++, le proprietà sono rappresentate come un set di funzioni di accesso, una che imposta il valore della proprietà e una che recupera il valore della proprietà. In Visual Basic le proprietà vengono rappresentate come un singolo elemento che può essere utilizzato per recuperare o impostare il valore della proprietà.