Ver Mensaje Individual
  #6  
Antiguo 05-03-2005
Avatar de vic_ia
vic_ia vic_ia is offline
Miembro
 
Registrado: ene 2004
Posts: 238
Reputación: 21
vic_ia Va por buen camino
hola...

al ver tu función creo que el problema esta en que si, efectivamente declaras una variable de tipo PChar, pero esta apunta a ningun lado, por lo que al tratar la función de ponerte en ella los resultados pues te manda el error que mencionas, lo que tienes que hacer es "reservar" para esa variable (apuntador) el espacio de memoria suficiente para valor de retorno...

para un manejo mas sencillo yo cambiaria algunas lineas como sigue :
Código Delphi [-]
// en lugar de :
  Template,GuideMessage : Pchar;
// pondria :
  Template, GuideMessage : String;
//...
// antes de llamar a la función hay que asignarle el espacio SUFICIENTE para
// el valor de retorno (supongo que el manual del que hablas algo te ha de
// sugerir, o cuando menos dale mas de lo que piensas pueda regresar)
// suponiendo  que no te regresa en ese valor mas de 100 caracteres, pondria  :
  SetLength(Template, 100);
  SetLength(GuideMessage, 100);
// en lugar de :
res := Enrola(Template,'D:\MIENTRAS\prueba.bmp',GuideMessage,Form1.Handle,0,0,0,0,1);
// haria un typecast para que se ajustaran los parametros a los requeridos...
res := Enrola(PChar(Template),'D:\MIENTRAS\prueba.bmp',PChar(GuideMessage),Form1.Handle,0,0,0,0,1);
// despues de llamar a la función seria conveniente que ajustaras al veradero
// tamaño de las cadenas que te ha devuelto, nuevamente llamando a SetLength
  SetLength(Template, StrLen(PChar(Template)));
  SetLength(GuideMessage, StrLen(PChar(GuideMessage)));
asi me ha funcionado, pero en el foro hay personas mas versadas en estos manejos por lo que puede que alguien te de una mejor sugerencia.

espero te sirva...

saludos...
Responder Con Cita