Imagen

DESCARGA SOFTWARE PARA FACTURA ELECTRONICA DE AQUI.
Facturacion, Validacion, Addendas, Librerias de programacion, etc.


CARTA PORTE V3.1

ECODEX TIENE ESTOS NUEVOS DATOS DE CONTACTO :
Comercializacion y Ventas - Evelia Vicke evicke@ecodex.com.mx 33-16-03-03-48
Soporte - Humberto Guerrero soporte@ecodex.com.mx 33-34-90-46-03


.

Codigo Fuente de Mdo Libre en Delphi distinto a version 7

Para los que programamos en Delphi, aqui estan las respuestas
[[ FORO CERRADO DEBIDO A QUE YA LA INFORMACION YA NO ES VIGENTE ]]
Avatar de Usuario
Dado
Mensajes: 15980
Registrado: Mar Jul 06, 2010 7:56 pm

Codigo Fuente de Mdo Libre en Delphi distinto a version 7

Mensaje por Dado »

ACTUALIZACION (30-SEP-2010)

POR FIN me di a la tarea de instalar TODAS las versiones de Delphi que tuve al alcance y comprobar lo que tan amablemente me habian reportado.

En esta entrada hice un resumen preciso de los cambios necesarios para poder compilar en Delphi 2007, 2009 y 2010.

Considero que para no crear confusion y dirigir a los futuros lectores a la solucion correcta seria bueno cerrar este hilo. Gracias por su ayuda y comprension.
ADDENDAS? VALIDACION? CODIGO PARA PROGRAMAR TU PROPIA SOLUCION? TODO LO TENEMOS EN WWW.VALIDACFD.COM VISITANOS !!
vchavezp
Mensajes: 40
Registrado: Mié Jul 07, 2010 8:29 pm

Re: Codigo Fuente de Mdo Libre en Delphi distinto a version

Mensaje por vchavezp »

Yo lo tengo trabajando en Delphi 2007 sin ningun problema
Avatar de Usuario
Dado
Mensajes: 15980
Registrado: Mar Jul 06, 2010 7:56 pm

Re: Codigo Fuente de Mdo Libre en Delphi distinto a version

Mensaje por Dado »

Gracias por la informacion vchavezp

Tuviste que hacer alguna modificacion a las rutinas o asi como estaban compilo y funciono bien?
ADDENDAS? VALIDACION? CODIGO PARA PROGRAMAR TU PROPIA SOLUCION? TODO LO TENEMOS EN WWW.VALIDACFD.COM VISITANOS !!
Avatar de Usuario
shang70
Mensajes: 15
Registrado: Jue Jul 08, 2010 6:39 pm

Re: Codigo Fuente de Mdo Libre en Delphi distinto a version

Mensaje por shang70 »

Si fueran tan amables de comentar si ya lo hicieron jalar en CODEGEAR 2009.

Saludos
vchavezp
Mensajes: 40
Registrado: Mié Jul 07, 2010 8:29 pm

Re: Codigo Fuente de Mdo Libre en Delphi distinto a version

Mensaje por vchavezp »

En Delphi 2007 ha funcionado directamente sin ningun cambio
Avatar de Usuario
Dado
Mensajes: 15980
Registrado: Mar Jul 06, 2010 7:56 pm

SI, LO TENGO!!! LO TENGO!!!!

Mensaje por Dado »

La respuesta para DELPHI 2009 Y 2010 son cuatro letras -----a-n-s-i---- je je je, asi es, ayer me dormi hasta la una de la mañana y hoy he trabajado toda la mañana y parte de la tarde para llegar a este resultado.

En la unidad Sello.pas se debe cambiar la definicion de la siguiente funcion:

function ReadPrivateKey(AFileName: ansistring): pEVP_PKEY;

La explicacion rapidamente : Delphi 2009 en adelante (que por el momento "en adelante" solo es Delphi 2010) mapea el tipo "String" a "UnicodeString" que NO ES COMPATIBLE con el PChar que se le envia a las rutinas OpenSSL.

Quise explicar esto porque es muy probable QUE NO FUNCIONEN otras rutinas, podria apostar que la "Cadena Original" va a estar mal formada y que no se va a calcular bien el sello, pero como les platico no he dormido bien y ya no tengo energia para seguir .... :?

Bueno, revisen TODOS los procedimientos y cambien "String" por "AnsiString", esta es la "norma" para un programa escrito en Delphi 7 y pasarlo a Delphi 2009/2010

Shang70, por favor, ya te pase el "tip" de donde empezar, podrias decirnos si esto funciono y mas aun, si hay necesidad de cambiar String por AnsiString en alguna otra parte?. Gracias.

Solo por hacer recuento, por eso SI funcionaba sin problemas en Delphi 2007, porque ahi todavia no introducian la (horrible) cadena Unicode.
ADDENDAS? VALIDACION? CODIGO PARA PROGRAMAR TU PROPIA SOLUCION? TODO LO TENEMOS EN WWW.VALIDACFD.COM VISITANOS !!
omarloi
Mensajes: 22
Registrado: Mar Jul 13, 2010 1:16 pm

Re: Codigo Fuente de Mdo Libre en Delphi distinto a version

Mensaje por omarloi »

En CODEGEAR 2009 me corre sin problema, ya cambie en todas las rutinas String por ansistring, solo al dar CREAR EL CFD me marca el sig error: Se encontro un caracter no valido en el contenido del texto. Line 2 <comprobante xmlns="http://www.sat.gob.m.

alguien sabe a que se deba ?
Avatar de Usuario
Dado
Mensajes: 15980
Registrado: Mar Jul 06, 2010 7:56 pm

Re: Codigo Fuente de Mdo Libre en Delphi distinto a version

Mensaje por Dado »

Pudieras ejecutarlo linea por linea y decirme exactamente en que linea te marca el error, ya que al darle clic en el boton CREAR CFD se desencadenan decenas de funciones, y es dificil con la informacion que me das poder detectar que es lo que esta fallando.
ADDENDAS? VALIDACION? CODIGO PARA PROGRAMAR TU PROPIA SOLUCION? TODO LO TENEMOS EN WWW.VALIDACFD.COM VISITANOS !!
omarloi
Mensajes: 22
Registrado: Mar Jul 13, 2010 1:16 pm

Re: Codigo Fuente de Mdo Libre en Delphi distinto a version

Mensaje por omarloi »

Es en la CFDCopy := GetComprobante(XMLDocCopy) del FacturaE :

procedure TFacturaEForm.GeneraCadenaOriginal;
const pipe = '|';
var n,n1 : integer;
CFDCopy : IXMLComprobante; //Se requiere una copia ya que si se lee el original lo llena de "Null"

procedure AgregaDato(atom : ansistring);
begin
if atom <> '' then CadOriginal := CadOriginal + pipe + atom;
end;
begin
CadOriginal := pipe;

XMLDocCopy.XML := XMLDoc.XML;
XMLDocCopy.Active := true;
CFDCopy := GetComprobante(XMLDocCopy);

Gracias.
Avatar de Usuario
Dado
Mensajes: 15980
Registrado: Mar Jul 06, 2010 7:56 pm

Re: Codigo Fuente de Mdo Libre en Delphi distinto a version

Mensaje por Dado »

OMARLOI:

Vaya! por mas que trato de replicar el error no lo consigo.

Esto es lo que he hecho.

Descargue Delphi 2010, y el pasado sabado despues de la desvelada espantosa que me eche descubri que POR LO MENOS en el procedimiento ReadPrivateKey deberiamos usar AFileName : AnsiString

Despues de hacer *SOLO* este cambio lo ejecute y todo funciono casi perfecto, a partir de ahi yo pense que deberiamos cambiar todo a AnsiString, talvez esto es un error.

Bueno, hoy para tratar de replicar tu error empece a cambiar AniString por aqui y alla, y empece a tener varios problemas, pero no como el que me muestras.

Tambien descubri otro error pero ahora con el tipo char y en la funcion CalculaSello.

EN RESUMEN : : : :

Perdon, pero el haber recomendado cambiar *todo* a AnsiString parece que no era buena idea, no lo habia intentado yo mismo pero cuando lo quise hacer me empezo a dar algunas fallas. Hay que dejarlo como esta, solo con las dos siguientes excepciones:

Cambiar (ahora si, solo en esta funcion) :

Unidad Sello.pas
.....
function ReadPrivateKey(AFilename : AnsiString) : pEVP_PKEY;
....
....
function CalculaSello(llaveprivada,cadenaoriginal: string):string;
var inbuf array[0..8192] of ansichar;
outbuf array[0..8192] of ansichar;

Con *solo* esos cambios lo pude compilar y ejecutar perfectamente en Delphi 2010

NOTA: el cambio en la funcion CalculaSello es muuuuuy sutil, de hecho si no lo cambian aparentemente no hay problema PERO no calcula bien el sello
El sello correcto para los datos sin modificacion debe ser algo como "PTUpEgYNmX....etc"
ADDENDAS? VALIDACION? CODIGO PARA PROGRAMAR TU PROPIA SOLUCION? TODO LO TENEMOS EN WWW.VALIDACFD.COM VISITANOS !!
Cerrado