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:
Código Delphi
[-]Var
Buffer: string;
Posicion: Byte;
begin
Buffer:=LlenarNulos(255); ObtenerNombres(PChar(Buffer));
Posicion:=Pos(Chr(0),Buffer);
Buffer:=Copy(Buffer,1,Posicion-1);
Form1.Caption:='Tamaño de la cadena: '+IntToStr(Posicion-1);
ShowMessage(Buffer);
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