
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
- Dado
- Mensajes: 15980
- Registrado: Mar Jul 06, 2010 7:56 pm
Codigo Fuente de Mdo Libre en Delphi distinto a version 7
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.
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 !!
-
- Mensajes: 40
- Registrado: Mié Jul 07, 2010 8:29 pm
Re: Codigo Fuente de Mdo Libre en Delphi distinto a version
Yo lo tengo trabajando en Delphi 2007 sin ningun problema
- Dado
- Mensajes: 15980
- Registrado: Mar Jul 06, 2010 7:56 pm
Re: Codigo Fuente de Mdo Libre en Delphi distinto a version
Gracias por la informacion vchavezp
Tuviste que hacer alguna modificacion a las rutinas o asi como estaban compilo y funciono bien?
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 !!
- shang70
- Mensajes: 15
- Registrado: Jue Jul 08, 2010 6:39 pm
Re: Codigo Fuente de Mdo Libre en Delphi distinto a version
Si fueran tan amables de comentar si ya lo hicieron jalar en CODEGEAR 2009.
Saludos
Saludos
-
- Mensajes: 40
- Registrado: Mié Jul 07, 2010 8:29 pm
Re: Codigo Fuente de Mdo Libre en Delphi distinto a version
En Delphi 2007 ha funcionado directamente sin ningun cambio
- Dado
- Mensajes: 15980
- Registrado: Mar Jul 06, 2010 7:56 pm
SI, LO TENGO!!! LO TENGO!!!!
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.
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 !!
-
- Mensajes: 22
- Registrado: Mar Jul 13, 2010 1:16 pm
Re: Codigo Fuente de Mdo Libre en Delphi distinto a version
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 ?
alguien sabe a que se deba ?
- Dado
- Mensajes: 15980
- Registrado: Mar Jul 06, 2010 7:56 pm
Re: Codigo Fuente de Mdo Libre en Delphi distinto a version
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 !!
-
- Mensajes: 22
- Registrado: Mar Jul 13, 2010 1:16 pm
Re: Codigo Fuente de Mdo Libre en Delphi distinto a version
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.
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.
- Dado
- Mensajes: 15980
- Registrado: Mar Jul 06, 2010 7:56 pm
Re: Codigo Fuente de Mdo Libre en Delphi distinto a version
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"
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 !!