C/Visual C - Codigo C++ a Visual Basic, URGE!!

 
Vista:

Codigo C++ a Visual Basic, URGE!!

Publicado por Francisco (1 intervención) el 29/05/2003 15:55:26
Hola, tengo un código en C++ y necesito hacer la misma tarea que hace dicho código, pero en Visual Basic, es para uso comercial, y no tenemos la licencia de Visual C++ solo la de Visual Basic, si alguien me puede ayudar a convertir el código, se lo puedo enviar a la persona por correo, esto es urgente!!!!, el codigo consiste en convertir un arreglo de Doubles en un BSTR (arreglo de binarios), y viceversa, de antemano muchas gracias
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de Alejandro

Conversión de arreglo de Doubles a BSTR y viceversa en Visual Basic

Publicado por Alejandro (1286 intervenciones) el 01/07/2025 19:45:17
Francisco, para convertir un arreglo de `Doubles` a un `BSTR` y viceversa en Visual Basic, puedes seguir estos pasos:

1. Conversión de un arreglo de Doubles a BSTR:

Puedes utilizar la función `SysAllocStringByteLen` para crear un `BSTR` a partir de un arreglo de `Doubles`. Aquí hay un ejemplo de cómo hacerlo:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
Function DoublesToBSTR(doubles() As Double) As BSTR
    Dim byteArray() As Byte
    Dim bstr As BSTR
    Dim i As Long
 
    ' Convertir el arreglo de Doubles a un arreglo de Bytes '
    ReDim byteArray(0 To (UBound(doubles) + 1) * 8 - 1) ' Cada Double ocupa 8 bytes '
    For i = LBound(doubles) To UBound(doubles)
        CopyMemory byteArray(i * 8), doubles(i), 8
    Next i
 
    ' Crear el BSTR a partir del arreglo de Bytes '
    bstr = SysAllocStringByteLen(byteArray(0), UBound(byteArray) + 1)
    DoublesToBSTR = bstr
End Function

2. Conversión de BSTR a un arreglo de Doubles:

Para convertir un `BSTR` de vuelta a un arreglo de `Doubles`, puedes hacer lo siguiente:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
Function BSTRToDoubles(bstr As BSTR) As Double()
    Dim byteArray() As Byte
    Dim doubles() As Double
    Dim i As Long
 
    ' Obtener el arreglo de Bytes del BSTR '
    Dim length As Long
    length = LenB(bstr)
    ReDim byteArray(0 To length - 1)
    CopyMemory byteArray(0), ByVal bstr, length
 
    ' Convertir el arreglo de Bytes a un arreglo de Doubles '
    ReDim doubles(0 To (length / 8) - 1)
    For i = 0 To (length / 8) - 1
        CopyMemory doubles(i), byteArray(i * 8), 8
    Next i
 
    BSTRToDoubles = doubles
End Function

Notas:


- Asegúrate de tener la declaración de `CopyMemory` en tu código, que se utiliza para copiar memoria entre arreglos.
- Este código asume que el tamaño del arreglo de `Doubles` es conocido y que el `BSTR` se maneja correctamente en términos de memoria.
- Recuerda que el uso de `BSTR` y la manipulación de memoria puede ser propenso a errores, así que asegúrate de manejar adecuadamente la memoria para evitar fugas.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar