![]() |
![]() |
| Paypal | FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
|||||||
| Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Buscar | Temas de Hoy | Marcar Foros Como Leídos |
![]() |
|
|
Herramientas | Buscar en Tema | Desplegado |
|
|
|
#1
|
||||
|
||||
|
Pues, tal como te indica Chris lo puedes hacer. El único problema sería si los datos devueltos ocupan más de 256 bytes.
// Saludos |
|
#2
|
||||
|
||||
|
Una función que trata cadenas al estilo C debe poner un nulo al final del Buffer que se le pasa, si no lo hace, entonces podemos decir que no es estilo C o que es una chapuza. Por lo tanto me inclino a pensar que si te devuelve un nulo final de cadena.
En el caso de que no devuelve el nulo, puedes usar un Buffer tipo array of char o un String con longitud asignada previamente o un ShortString si no va a ser mas larga de 255. Para la llamada a esa función deberás usar un puntero que apunte al primer elemento de tu cadena o array: En el caso de un array: @Buffer[0]; En el caso de un ShortString o String: @Cadena[1] (para luego poder asignar la longitud). Si tienes que usar el resultado de la llamada como un String tienes estos casos: En el caso de usar array of char puedes convertirlo a un String. En el caso de usar un ShortString debes asignar al caracter[0] la longitud de la cadena sin el nulo final En el caso de un String debes usar SetLength para asignar el tamaño sin el nulo final. Saludos. Última edición por escafandra fecha: 09-08-2012 a las 19:58:15. |
|
#3
|
||||
|
||||
|
No creo que pueda usar un string sin conocer de antemano la longitud de la cadena devuelta. Dicho de otra forma, necesitaría usar SetLength antes de la llamada, de lo contrario no habría memoria asignada para recibir el resultado.
// Saludos |
|
#4
|
||||
|
||||
|
Cita:
Cita:
Cita:
Saludos. |
|
#5
|
||||
|
||||
|
Es cierto que tienes que reasignar el tamaño también al regreso de la función. Pero sí usas un string, también tienes que ponerlo antes, así sea MAX_PATH. Si mandas el string, o @S[1] así nada más, obtendrás una violación de acceso.
// Saludos |
|
#6
|
||||
|
||||
|
Cita:
![]() Saludos. |
|
#7
|
|||
|
|||
|
jeje no pense que mi preguntilla iba a causar tantas respuestas, bueno miren primero el buffer debe estar si o si en nulos porque como ya dije la funcion de la dll solo me devuelve la cadena sin el nulo (una mala imitacion de las cadenas en C xP), segundo el buffer como maximo debe ser de 255 porque me va a devolver nombres y al principio en ese codigo de visual basic especifique "Buffer = String(255,Chr(0)) 'asigna 255 nulos en la variable" , queria hacerlo con cadenas porque me parecia mucho mas facil hacer algo como esto:
usare shortstring y array of char, tambien se me habia ocurrido usar una api para asignar memoria y pasarle esa direccion a la funcion de la dll y luego busco el nulo mediante un puntero a esa direccion. gracias |
|
#8
|
|||
|
|||
|
gracias .
|
![]() |
| Herramientas | Buscar en Tema |
| Desplegado | |
|
|
Temas Similares
|
||||
| Tema | Autor | Foro | Respuestas | Último mensaje |
| como sumar con nulos? | lledesma | SQL | 39 | 10-09-2008 19:28:17 |
| como llenar la memoria Ram | kurono | Varios | 11 | 10-09-2008 03:31:51 |
| Como llenar con espacion en blanco o con ceros una cadena? | Luis Alberto | Varios | 10 | 02-12-2005 19:14:02 |
| Como Ingresar Valores En Blanco O Nulos En Access | JanoRod | Conexión con bases de datos | 1 | 16-11-2005 15:40:48 |
| S.O.S como selecciono campo nulos | Ryu | SQL | 3 | 11-04-2005 16:40:50 |
|