Parte del problema es el modo de pasar los valores, como decía en el post anterior PChar, PInt, porque si no empezarán los problemas.
Pero también hay que tener mucho cuidado con como asignamos valores. En una función que pase parámetros por referencia, o en una función que devuelve algo, hay que fijarse en cómo se le asigna el valor.
Por ejemplo
Si tengo esta función
procedure GetDocumentListResponseDoc(
docIndex:PLongint ;
var documentID:PLongint;
var superState:PChar;
var state: PChar;
var format:PChar;
var submissionDate:PChar;
var documentNumber:PChar;
var documentFunction:PChar;
var docType:PChar;
var companyName:PChar;
var identityCount:PLongint);stdcall;export;
No se puede cojer directamente y hacer algo así
superState:=PChar('Nuevo');
en la segunda cadena se perderán los valores.
Os pongo la función para que la tengáis pues a mí me ha dado un buen dolor de cabeza :
procedure GetDocumentListResponseDoc(
docIndex:PLongint ;
var documentID:PLongint;
var superState:PChar;
var state: PChar;
var format:PChar;
var submissionDate:PChar;
var documentNumber:PChar;
var documentFunction:PChar;
var docType:PChar;
var companyName:PChar;
var identityCount:PLongint);stdcall;export;
var
cad:string; //variable para almacenar el resultado a guardar.
begin
documentID:=plongint(12);
cad:='';
cad:='OPEN';
superState:=PChar(cad);
cad:='';
cad:='NEW';
state:=PChar(cad);
cad:='';
cad:='XMLTLR';
format:=PChar(cad);
cad:='';
cad:='2005-0101';
submissionDate:=PChar(cad);
cad:='';
cad:='R99';
documentNumber:=PChar(cad);
cad:='';
cad:='ORIGINAL';
documentFunction:=PChar(cad);
// docType:=PChar('ORDER');
// companyName:=PChar('MyCompany');
identityCount:=PLongint(3);
end;