Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   OOP (https://www.clubdelphi.com/foros/forumdisplay.php?f=5)
-   -   Leer Datos De Xml (https://www.clubdelphi.com/foros/showthread.php?t=96725)

mRoman 31-05-2024 23:20:43

Leer Datos De Xml
 
Hola amigos.

Hace algun tiempo inicié un hilo con el mismo tema (creo recordar), el tema -obviamente- no lo domino PERO NADA!, asi que cualquier error no sé como se resuelvoría. Bueno lo traigo de nuevo porque -ahora si- el cliente la va necesitar para REPROCESAR esa información en otros reportes.

Se trata de LEER un archivo XML y extraer datos, como: RFC RECEPTOR y EL DETALLE DE LA FACTURA

He consultado páginas, hilos y videos tutoriales:

Explicación de Neftali
https://neftali.clubdelphi.com/carga...r-a-los-datos/
No lo pude llevar acabo porque hay un campo con el detalle -quiero pensar q es eso- pero cuando yo lo hago con mi archivo, pues algo como eso a mi no me sale....entonces no sé que haría falta, talvez el XML de él tiene ciertas condiciones que detarminar q se debe generar el detalle en ese campo...no lo sé.

Video
https://www.youtube.com/watch?v=4D78MG4CaAI
en este video no lo puedo llevar acabo porque no llegó a compilar

ChatGPT (Por lo menos con esto obtengo el RFC del cliente a quien se le facturó)
Código Delphi [-]
uses
  Xml.XMLDoc, Xml.XMLIntf;

procedure LeerDatosXML(const FileName: string);
var
  XMLDoc: IXMLDocument;
  NodeComprobante, NodeEmisor, NodeReceptor: IXMLNode;
begin
  XMLDoc := TXMLDocument.Create(nil);
  try
    XMLDoc.LoadFromFile(FileName);
    XMLDoc.Active := True;

    // Acceder al nodo principal 
    NodeComprobante := XMLDoc.DocumentElement;

    // Verificar si el nodo principal existe
    if Assigned(NodeComprobante) then
    begin
      // Acceder a los atributos del nodo principal 
      Writeln('Serie: ', NodeComprobante.Attributes['Serie']);
      Writeln('Folio: ', NodeComprobante.Attributes['Folio']);
      Writeln('Fecha: ', NodeComprobante.Attributes['Fecha']);

      // Acceder a los nodos hijos  y 
      NodeEmisor := NodeComprobante.ChildNodes.FindNode('cfdi:Emisor');
      NodeReceptor := NodeComprobante.ChildNodes.FindNode('cfdi:Receptor');

      // Verificar si los nodos hijos existen
      if Assigned(NodeEmisor) and Assigned(NodeReceptor) then
      begin
        // Acceder a los atributos de  y 
        Writeln('Emisor RFC: ', NodeEmisor.Attributes['Rfc']);
        Writeln('Emisor Nombre: ', NodeEmisor.Attributes['Nombre']);
        Writeln('Receptor RFC: ', NodeReceptor.Attributes['Rfc']);
        Writeln('Receptor Nombre: ', NodeReceptor.Attributes['Nombre']);
      end;
    end;
  finally
    XMLDoc := nil;
  end;
end;

Otro video tutorial
https://www.youtube.com/watch?v=5QXf5zyGRi8

He usado XML Mapper que viene en la explicación de Neftalí, pero no logro ver el detalle de la factura "cfdi:Concepto"


Asi que, como le hago para obtener el detalle de la factura???. Interesa obtener esta sección:

Código:

<cfdi:Conceptos>
        <cfdi:Concepto ClaveProdServ="50131700" NoIdentificacion="1546" Cantidad="1485.000000" ClaveUnidad="H87" Unidad="PZA"
        Descripcion="LECHE SEMIDESCREMADA UHT PLUS SABOR FRESA" ValorUnitario="5.550000" Importe="8241.75" ObjetoImp="02">
                <cfdi:Impuestos>
                        <cfdi:Traslados>
                                <cfdi:Traslado Base="8241.75" Impuesto="002" TipoFactor="Tasa" TasaOCuota="0.000000" Importe="0.00"/>
                        </cfdi:Traslados>
                </cfdi:Impuestos>
        </cfdi:Concepto>
        <cfdi:Concepto ClaveProdServ="50131700" NoIdentificacion="1547" Cantidad="540.000000" ClaveUnidad="H87" Unidad="PZA"
        Descripcion="LECHE SEMIDESCREMADA UHT PLUS SABOR VAINILLA" ValorUnitario="5.550000" Importe="2997.00" ObjetoImp="02">
                <cfdi:Impuestos>
                        <cfdi:Traslados>
                                <cfdi:Traslado Base="2997.00" Impuesto="002" TipoFactor="Tasa" TasaOCuota="0.000000" Importe="0.00"/>
                        </cfdi:Traslados>
                </cfdi:Impuestos>
        </cfdi:Concepto>
</cfdi:Conceptos>

Le paso el archivo XML (completo) para mayor referencia.

Código PHP:

<cfdi:Comprobante xmlns:cfdi="http://www.sat.gob.mx/cfd/4" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.sat.gob.mx/cfd/4 http://www.sat.gob.mx/sitio_internet/cfd/4/cfdv40.xsd" Version="4.0" Serie="NAY" Folio="50642" Fecha="2024-05-30T09:36:30" Sello="cRYzUP+XAg/cbjUf15ox/7wr8ngtInlUlQh4S6kqbfG09CZ7OvdrTREuoe7ye0RaOXSYJKOAidj2WoTCAti8ERHnB8eYUYMGGPA5iG8QfXYus1fm3ghjZOU8wWSI58sjgFQJ4CqReeRv7RfVCwFZB65rc2po3FVPYiRwH48zLJeuCk1ZD7NyTEguwnJgbIiMOGG+Wo00ff1ZXI29Uv3s8tB4v3NiKbx5aA13U8aAmhbXNfgTLO5flWuNUUanSycGnan98EbYFf1yXetgjqOkCTr3oCurqFmKKVWUrFydgjc5HpTZDAbgbab7V8x9PgTRqiboG+OBqy4rpGAQxnlsrQ==" FormaPago="99" NoCertificado="00001000000505378200" Certificado="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" CondicionesDePago="8 DIAS DESPUES DE LA PRESENTACION DE LA FACTURA" SubTotal="11238.75" Moneda="MXN" Total="11238.75" TipoDeComprobante="I" Exportacion="01" MetodoPago="PPD" LugarExpedicion="63195">
    <
cfdi:Emisor Rfc="CIL999999a9a" Nombre="CILINDRO" RegimenFiscal="601"/>
    <
cfdi:Receptor Rfc="CID999999a9a" Nombre="CID" DomicilioFiscalReceptor="14020" RegimenFiscalReceptor="601" UsoCFDI="G01"/>
    <
cfdi:Conceptos>
        <
cfdi:Concepto ClaveProdServ="50131700" NoIdentificacion="1546" Cantidad="1485.000000" ClaveUnidad="H87" Unidad="PZA" Descripcion="LECHE SEMIDESCREMADA UHT PLUS SABOR FRESA" ValorUnitario="5.550000" Importe="8241.75" ObjetoImp="02">
            <
cfdi:Impuestos>
                <
cfdi:Traslados>
                    <
cfdi:Traslado Base="8241.75" Impuesto="002" TipoFactor="Tasa" TasaOCuota="0.000000" Importe="0.00"/>
                </
cfdi:Traslados>
            </
cfdi:Impuestos>
        </
cfdi:Concepto>
        <
cfdi:Concepto ClaveProdServ="50131700" NoIdentificacion="1547" Cantidad="540.000000" ClaveUnidad="H87" Unidad="PZA" Descripcion="LECHE SEMIDESCREMADA UHT PLUS SABOR VAINILLA" ValorUnitario="5.550000" Importe="2997.00" ObjetoImp="02">
            <
cfdi:Impuestos>
                <
cfdi:Traslados>
                    <
cfdi:Traslado Base="2997.00" Impuesto="002" TipoFactor="Tasa" TasaOCuota="0.000000" Importe="0.00"/>
                </
cfdi:Traslados>
            </
cfdi:Impuestos>
        </
cfdi:Concepto>
    </
cfdi:Conceptos>
    <
cfdi:Impuestos TotalImpuestosTrasladados="0.00">
        <
cfdi:Traslados>
            <
cfdi:Traslado Base="11238.75" Impuesto="002" TipoFactor="Tasa" TasaOCuota="0.000000" Importe="0.00"/>
        </
cfdi:Traslados>
    </
cfdi:Impuestos>
    <
cfdi:Complemento>
        <
tfd:TimbreFiscalDigital xmlns:tfd="http://www.sat.gob.mx/TimbreFiscalDigital" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.sat.gob.mx/TimbreFiscalDigital http://www.sat.gob.mx/sitio_internet/cfd/TimbreFiscalDigital/TimbreFiscalDigitalv11.xsd" Version="1.1" UUID="66c97813-65c3-4eb2-9d4b-ab5efa69e025" FechaTimbrado="2024-05-30T10:51:04" RfcProvCertif="LSO1306189R5" SelloCFD="cRYzUP+XAg/cbjUf15ox/7wr8ngtInlUlQh4S6kqbfG09CZ7OvdrTREuoe7ye0RaOXSYJKOAidj2WoTCAti8ERHnB8eYUYMGGPA5iG8QfXYus1fm3ghjZOU8wWSI58sjgFQJ4CqReeRv7RfVCwFZB65rc2po3FVPYiRwH48zLJeuCk1ZD7NyTEguwnJgbIiMOGG+Wo00ff1ZXI29Uv3s8tB4v3NiKbx5aA13U8aAmhbXNfgTLO5flWuNUUanSycGnan98EbYFf1yXetgjqOkCTr3oCurqFmKKVWUrFydgjc5HpTZDAbgbab7V8x9PgTRqiboG+OBqy4rpGAQxnlsrQ==" NoCertificadoSAT="00001000000509846663" SelloSAT="RMOvjcfp8Iuv4kKkPRffvauaEn5Q81TCHYCsamguTYhSbHMppd7IeBzfZOhipT4is1snmJCOG6DHF2EYOFQ5NG+vzsq6wday6z++Jb5tzjKyyhlSPN0AQNf+yWGFXbfVp4nEkT03/wOBx4EK0+PEx7deIx9grqYLynSkV1JBLg9ol2uMZ3Zv18AKAh7ADCWTxjo1/m6NVK7WW6B3uRvsFTyxTtsRwRT2Qdtw+JzvZvSHib70EiHZ9Ioz0e/VoGT8p0GQQCRuT1iCTOoqpigeM9cFTVwhrlksDcsnbJH+wPrqqEGxBjbcnY5m4juHD4qBx2vJpd8RID2212lukdgfLA=="/>
    </
cfdi:Complemento>
</
cfdi:Comprobante

Alguien que me pueda orientar a como obtener el detalle (NoIdentificacion,Cantidad,Descripcion, ETC)

Gracias de antemano

Neftali [Germán.Estévez] 03-06-2024 10:17:39

Yo lo he probado con la versión 11, pero funcionará igual con el resto de versiones...
Crea un nuevo proyecto VCL en Delphi.

Desde File/New accede a "XML Data Binding" y inicia el asistente:




Ejecuta el asistente con tu fichero de datos XML (el que has puesto en el mensaje):




Ejecuta el asistente con Siguiente, siguiente,....
(ten en cuenta la opción que te pongo abajo para desactivarla):



Neftali [Germán.Estévez] 03-06-2024 10:18:47

1 Archivos Adjunto(s)
Al acabar te generará un fichero que te añado en los adjuntos con los interfaces necesarios para trabajar (leer y escribir) un XML como el que has puesto:

Código Delphi [-]
{****************************************************************}
{                                                                }
{                        XML Data Binding                        }
{                                                                }
{         Generated on: 03/06/2024 9:51:32                       }
{       Generated from: C:\ProyectosDelphi\Parse XML\Datos.xml   }
{                                                                }
{****************************************************************}

unit DatosComprobante;

interface

uses Xml.xmldom, Xml.XMLDoc, Xml.XMLIntf;

type

{ Forward Decls }

  IXMLComprobante = interface;
  IXMLComprobante_InformacionGlobal = interface;
  IXMLComprobante_CfdiRelacionados = interface;
  IXMLComprobante_CfdiRelacionadosList = interface;
  IXMLComprobante_CfdiRelacionados_CfdiRelacionado = interface;
  IXMLComprobante_Emisor = interface;
  IXMLComprobante_Receptor = interface;
  IXMLComprobante_Conceptos = interface;
  IXMLComprobante_Conceptos_Concepto = interface;
  IXMLComprobante_Conceptos_Concepto_Impuestos = interface;
  IXMLComprobante_Conceptos_Concepto_Impuestos_Traslados = interface;
  IXMLComprobante_Conceptos_Concepto_Impuestos_Traslados_Traslado = interface;
  IXMLComprobante_Conceptos_Concepto_Impuestos_Retenciones = interface;
  IXMLComprobante_Conceptos_Concepto_Impuestos_Retenciones_Retencion = interface;
  IXMLComprobante_Conceptos_Concepto_ACuentaTerceros = interface;
  IXMLComprobante_Conceptos_Concepto_InformacionAduanera = interface;
  IXMLComprobante_Conceptos_Concepto_InformacionAduaneraList = interface;
  IXMLComprobante_Conceptos_Concepto_CuentaPredial = interface;
  IXMLComprobante_Conceptos_Concepto_CuentaPredialList = interface;
  IXMLComprobante_Conceptos_Concepto_ComplementoConcepto = interface;
  IXMLComprobante_Conceptos_Concepto_Parte = interface;
  IXMLComprobante_Conceptos_Concepto_ParteList = interface;
  IXMLComprobante_Conceptos_Concepto_Parte_InformacionAduanera = interface;
  IXMLComprobante_Impuestos = interface;
  IXMLComprobante_Impuestos_Retenciones = interface;
  IXMLComprobante_Impuestos_Retenciones_Retencion = interface;
  IXMLComprobante_Impuestos_Traslados = interface;
  IXMLComprobante_Impuestos_Traslados_Traslado = interface;
  IXMLComprobante_Complemento = interface;
  IXMLComprobante_Addenda = interface;

{ IXMLComprobante }

  IXMLComprobante = interface(IXMLNode)
    ['{1B030F71-3BDF-403F-879E-FEEFF468D142}']
  ...
...

Una vez que tengas ese fichero en tu proyecto, las líneas para leer los datos que necesitas son triviales.
Un código como este:

Código Delphi [-]

...

uses
  DatosComprobante;

procedure _Log(msg:string);
begin
  Form3.mmDatos.Lines.Add(msg);
end;

procedure TForm3.Button1Click(Sender: TObject);
var
  comp:IXMLComprobante;
  concepto:IXMLComprobante_Conceptos_Concepto;
  idx:integer;
begin
  comp := LoadComprobante('c:\ProyectosDelphi\Ej Parse XML\Datos.xml');

  _Log('Version: ' + comp.Version);
  _Log('Serie: ' + comp.Serie);
  _Log('Folio: ' + comp.Folio);
  _Log('...');

  _Log('Emisor:');
  _Log('   RFC: ' + comp.Emisor.Rfc);
  _Log('   Nombre: ' + comp.Emisor.Nombre);
  _Log('   ... ');

  _Log('Receptor: ' + comp.Receptor.Rfc);
  _Log('   RFC: ' + comp.Receptor.Rfc);
  _Log('   Nombre: ' + comp.Receptor.Nombre);
  _Log('   ... ');

  _Log('Conceptos: ');

  for idx := 0 to comp.Conceptos.Count - 1 do begin
    concepto := comp.Conceptos[idx];

    _Log('   Conceptos; Indice=' + idx.ToString);

    _Log('        ClaveProdServ:' + concepto.ClaveProdServ);
    _Log('        NoIdentificacion:' + concepto.NoIdentificacion);
    _Log('        Cantidad:' + concepto.Cantidad.ToString);
    _Log('        ClaveUnidad:' + concepto.ClaveUnidad);
    _Log('        ...');

  end;

  _Log('...');

end;


Te genera un resultado como el que se ve a continuación:


mRoman 03-06-2024 22:42:35

Mi estimado Netftali!...muchas gracias por responder.

Lo pondré en práctica en este momento y les comento como me fue.

Gracias nuevamente.

Saludos.

mRoman 03-06-2024 23:47:20

Ya lo generé, pero no lo genera igual que el tuyo...por cierto jamas mencioné la version Delphi q estoy usando, Delphi6.

Asi lo genera
Código:


{****************************************************************}
{                                                                }
{                    Delphi XML Data Binding                    }
{                                                                }
{        Generated on: 03/06/2024 02:06:09 p. m.                }
{      Generated from: D:\Sistemas\XML\Archivos XML\DATOS.xml  }
{                                                                }
{****************************************************************}
unit DatosComprobante;

interface

uses xmldom, XMLDoc, XMLIntf;

type

{ Forward Decls }

  IXMLComprobante = interface;
  IXMLInformacionGlobal = interface;
  IXMLCfdiRelacionados = interface;
  IXMLCfdiRelacionadosList = interface;
  IXMLCfdiRelacionado = interface;
  IXMLEmisor = interface;
  IXMLReceptor = interface;
  IXMLConceptos = interface;
  IXMLConcepto = interface;
  IXMLImpuestos = interface;
  IXMLTraslados = interface;
  IXMLTraslado = interface;
  IXMLRetenciones = interface;
  IXMLRetencion = interface;
  IXMLACuentaTerceros = interface;
  IXMLInformacionAduanera = interface;
  IXMLInformacionAduaneraList = interface;
  IXMLCuentaPredial = interface;
  IXMLCuentaPredialList = interface;
  IXMLComplementoConcepto = interface;
  IXMLParte = interface;
  IXMLParteList = interface;
  IXMLInformacionAduanera = interface;
  IXMLImpuestos = interface;
  IXMLRetenciones = interface;
  IXMLRetencion = interface;
  IXMLTraslados = interface;
  IXMLTraslado = interface;
  IXMLComplemento = interface;
  IXMLAddenda = interface;

{ IXMLComprobante }

  IXMLComprobante = interface(IXMLNode)
    ['{797224A1-3B7B-4FF0-B401-255EF9005B48}']
    { Property Accessors }
    function Get_Version: WideString;

En esta parte del código q envío, no sale igual como el que tu generaste...hice lo q me indicaste, pero me hace ruido el que no tenga para crear proyectos VCL, solo CLX. Tienes alguna idea del porque no se genera como el tuyo??. Al momento de compilar el programa me marca errores: "[Error] DatosComprobante.pas(42): Identifier redeclared: 'IXMLInformacionAduanera", los encerre entre llaves y marca otro error:



Es una imagen, espero se vea.

Gracias.

mRoman 04-06-2024 00:35:20

La imagen del error:

https://ibb.co/42SDPZt

Neftali [Germán.Estévez] 04-06-2024 11:52:39

1 Archivos Adjunto(s)
Prueba con el adjunto.
He adaptado el fichero que te pasé con algunos cambios que no soportan las versiones antiguas. Unicode, ñ,...

mRoman 04-06-2024 18:28:42

Cita:

Empezado por Neftali [Germán.Estévez] (Mensaje 555917)
Prueba con el adjunto.
He adaptado el fichero que te pasé con algunos cambios que no soportan las versiones antiguas. Unicode, ñ,...

Ok. Lo aplicaré y te comento.

mRoman 05-06-2024 17:37:36

Cita:

Empezado por Neftali [Germán.Estévez] (Mensaje 555917)
Prueba con el adjunto.
He adaptado el fichero que te pasé con algunos cambios que no soportan las versiones antiguas. Unicode, ñ,...

Hola Neftali.

Pues con la novedad que no compila, marca el siguiente error:

Cita:

[Error] uLeerDatos.pas(40): Undeclared identifier: 'TFormatSettings'

Neftali [Germán.Estévez] 05-06-2024 17:59:52

Lo hice con Delphi 7, busca esa variable global en Delphi 6, y mientras tanto puedes eliminar eso.

mRoman 07-06-2024 00:54:38

Cita:

Empezado por Neftali [Germán.Estévez] (Mensaje 555917)
Prueba con el adjunto.
He adaptado el fichero que te pasé con algunos cambios que no soportan las versiones antiguas. Unicode, ñ,...

Listo!!...ya se pudo ejecutar tu ejemplo, esta muy bien, con esto puedo avanzar, muchas gracias. Ahora me tocaría investigar porque no pude hacerlo yo con el Delphi6, como solventar los errores que me marco haciendolo yo con esa version de delphi.

Muchas gracias Neftalí. Saludos

mRoman 07-06-2024 00:56:17

Cita:

Empezado por mRoman (Mensaje 555915)
Ya lo generé, pero no lo genera igual que el tuyo...por cierto jamas mencioné la version Delphi q estoy usando, Delphi6.

Asi lo genera
Código:


{****************************************************************}
{                                                                }
{                    Delphi XML Data Binding                    }
{                                                                }
{        Generated on: 03/06/2024 02:06:09 p. m.                }
{      Generated from: D:\Sistemas\XML\Archivos XML\DATOS.xml  }
{                                                                }
{****************************************************************}
unit DatosComprobante;

interface

uses xmldom, XMLDoc, XMLIntf;

type

{ Forward Decls }

  IXMLComprobante = interface;
  IXMLInformacionGlobal = interface;
  IXMLCfdiRelacionados = interface;
  IXMLCfdiRelacionadosList = interface;
  IXMLCfdiRelacionado = interface;
  IXMLEmisor = interface;
  IXMLReceptor = interface;
  IXMLConceptos = interface;
  IXMLConcepto = interface;
  IXMLImpuestos = interface;
  IXMLTraslados = interface;
  IXMLTraslado = interface;
  IXMLRetenciones = interface;
  IXMLRetencion = interface;
  IXMLACuentaTerceros = interface;
  IXMLInformacionAduanera = interface;
  IXMLInformacionAduaneraList = interface;
  IXMLCuentaPredial = interface;
  IXMLCuentaPredialList = interface;
  IXMLComplementoConcepto = interface;
  IXMLParte = interface;
  IXMLParteList = interface;
  IXMLInformacionAduanera = interface;
  IXMLImpuestos = interface;
  IXMLRetenciones = interface;
  IXMLRetencion = interface;
  IXMLTraslados = interface;
  IXMLTraslado = interface;
  IXMLComplemento = interface;
  IXMLAddenda = interface;

{ IXMLComprobante }

  IXMLComprobante = interface(IXMLNode)
    ['{797224A1-3B7B-4FF0-B401-255EF9005B48}']
    { Property Accessors }
    function Get_Version: WideString;

En esta parte del código q envío, no sale igual como el que tu generaste...hice lo q me indicaste, pero me hace ruido el que no tenga para crear proyectos VCL, solo CLX. Tienes alguna idea del porque no se genera como el tuyo??. Al momento de compilar el programa me marca errores: "[Error] DatosComprobante.pas(42): Identifier redeclared: 'IXMLInformacionAduanera", los encerre entre llaves y marca otro error:



Es una imagen, espero se vea.

Gracias.

Sabes porqué no logré generarlo igual que el tuyo, porqué a mi me lo generó de manera distinta al ejemplo que me enviaste???...

Gracias por tu tiempo.

Neftali [Germán.Estévez] 07-06-2024 08:30:00

Cita:

Empezado por mRoman (Mensaje 555979)
Sabes porqué no logré generarlo igual que el tuyo, porqué a mi me lo generó de manera distinta al ejemplo que me enviaste???...


Posiblemente la versión de Delphi 6 trabajara con un modelo de XML más antiguo. Piensa que estamos hablando de 2001.
Es posible que los ficheros XML ahora incluyan más cosas que en su día no se podían procesar.

mRoman 08-06-2024 00:27:30

Cita:

Empezado por Neftali [Germán.Estévez] (Mensaje 555981)
Posiblemente la versión de Delphi 6 trabajara con un modelo de XML más antiguo. Piensa que estamos hablando de 2001.
Es posible que los ficheros XML ahora incluyan más cosas que en su día no se podían procesar.

Si es muy probable. Gracias por la orientación y tu tiempo.

darkerbyte 24-02-2026 02:40:07

Error de compilación
 
Hola Neftali, disculpa la molestia, intenté compilar el proyecto que subiste, pero me marca el siguiente error:

[dcc32 Fatal Error] DatosComprobante.pas(1093): F1026 File not found: 'C:\ParseXML\Xml.xmlutil.dcu' (unit scope "Xml" indicates Win64, Win32 only)

Tendrás alguna idea que se debe?

Tengo delphi XE5

Muchas gracias de antemano

Neftali [Germán.Estévez] 25-02-2026 08:58:52

Cita:

Empezado por darkerbyte (Mensaje 571974)
Hola Neftali, disculpa la molestia, intenté compilar el proyecto que subiste, pero me marca el siguiente error:
[dcc32 Fatal Error] DatosComprobante.pas(1093): F1026 File not found: 'C:\ParseXML\Xml.xmlutil.dcu' (unit scope "Xml" indicates Win64, Win32 only)
Tendrás alguna idea que se debe?
Tengo delphi XE5

No se.
Yo lo he probado a compilar con Delphi 7 de nuevo y no me da el error y también con Delphi 10.3 (que es uno de los más nuevos que tengo) y también me compila sin problemas.
Revisa la configuración en el entorno, sobre todo la parte de los "units scope names".


La franja horaria es GMT +2. Ahora son las 05:36:11.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi