Página 1 de 1

No funciona GeneraCFD en Delphi 2010

Publicado: Vie Ago 10, 2012 7:47 am
por markdelphi
Hola

Tengo un problema con la función GeneraCFD, la utilize en Delphi 6 y todo funciona correctamente pero cuando la intento utilizar en Delphi 2010 no funciona, al momento de llamarla el valor de retorno es diferente de OK y tanto GetError como GetErrorExt devuelven caracteres chinos y no puedo saber el error.

Estoy utilizzando el proyecto de demostracion "CFDLibTest" para delphi con los INI y los certificados que vienen incluidos pero no funciona.

¿A que se debe?

Re: No funciona GeneraCFD en Delphi 2010

Publicado: Vie Ago 10, 2012 8:36 am
por Dado
Se debe al Unicode

Cambia todas las variables "string" por "AnsiString"

Re: No funciona GeneraCFD en Delphi 2010

Publicado: Vie Ago 10, 2012 8:49 am
por markdelphi
Pues ya cambie las variables pero me sigue marcando el mismo error. Lo malo es que no puedo saber ni que error es. Este el codigo, basicamente es el mismo que el del ejemplo solo cambie las variables al tipo AnsiString.

procedure TForm1.Button2Click(Sender: TObject);
var clave,FileN : AnsiString;
begin
OpenDialog.Title := 'CARGAR ARCHIVO INI PARA CONVERTIR A FACTURA';
OpenDialog.DefaultExt := 'ini';
OpenDialog.Filter := 'Archivo INI (*.ini)|*.ini';

if OpenDialog.Execute then
begin
clave := InputBox('','Introduzca la clave de la Llave Privada','');
FileN := OpenDialog.FileName;
if GeneraCFD(PChar(FileN),PChar(clave)) = OK then
MessageDlg('Se grabo la factura en formato XML'+#13#10#13#10+'La Cadena Original y el Sello Digital son'+
#13#10#13#10 + copy(CadenaOriginal,1,50) + '...' + #13#10#13#10 + copy(SelloDigital,1,50) + '...',mtInformation,[mbOK],0)
else
MessageDlg('Hubo un Error' + #13#10 + GetError + #13#10 + GetErrorExt,mtError,[mbOK],0)
end;
end;

Re: No funciona GeneraCFD en Delphi 2010

Publicado: Vie Ago 10, 2012 8:56 am
por Dado
En el archivo CFDLibHeader.pas cambia TODOS los PChar por PAnsiChar

ejemplo :
function GetError : PAnsiChar; stdcall; external 'CFDLib.dll';

Re: No funciona GeneraCFD en Delphi 2010

Publicado: Vie Ago 10, 2012 8:58 am
por markdelphi
Problema resuleto cambie los tipos Pchar por PAnsiChar.

Y la llamada a la función quedo así:

if GeneraCFD(PansiChar(AnsiString(OpenDialog.FileName)),PansiChar(AnsiString(clave))) = OK then


Saludos