Wrappers de VXml para Delphi con RadStudio
VXml
Estos wrappers (definiciones de funciones en una DLL) son necesarios para utilizar VXml en sus programas basados en Delphi RadStudio.

Los wrappers para esta versión de Delphi difieren de los wrappers para Delphi 7, ya que RadStudio utiliza funciones de tipo WIDE, por lo que los nombres de las funciones de VXml son distintos, pero simplemente hay que agregar una letra W al final de los nombres de cada función y la funcionalidad y paramétros son los mismos

Para utilizarlos copie las funciones que necesite del contenido que se muestra a continuación en la seccion VAR de sus PROCEDUREs que necesiten usar las funciones de VXml en Delphi RadStudio.

Definir un nuevo Wrapper es muy sencillo

En la seccion var de su procedimiento siga la siguiente Sintáxis:

Si la función devuelve un valor:

    <funcion VXmlW> :  function ( param1:<tipo>, param2:<tipo> .... paramN:<tipo>) : <tipo de valor retornado> ; cdecl;

Si la función no devuelve un valor:

    <funcion VXmlW> :  procedure ( param1:<tipo>, param2:<tipo> .... paramN:<tipo>)  ; cdecl;

Donde:

    <función VXmlW>: Es el nombre de cualquier función que esté contenida en VXML_x86.DLL | VXML_x64.DLL y para esta versión de Delphi, los nombres de las funciones llevan una letra "W" mayúscula al final, que indica que la funcion es de tipo WIDE y para diferenciarlas de las variables tipo CDECL.
    <tipo> y <tipo de valor retornado >: es el tipo de variable que se esté utilizando, basicamente en VXml con Delphi RadStudio solo se utilizan 2 tipo : PChar para cadenas de caracteres y LongInt para valores numéricos

Para hacer uso de los wrappers definidos en la seccion var, dentro del código de su programa (begin ... end) deberá cargar primero la DLL en memoria usando la función del Delphi RadSudio LoadLibrary() de esta manera:

    HBar := LoadLibrary("VXML_x86.DLL | VXML_x64.DLL")

Y a continuación deberá asignar a los nombres de variables previamente definidos en la seccion var, las funciones contenidas en la DLL usando la función de Delphi GetProcAddress() de acuerdo a la siguiente Sintáxis:

    <funcion VXmlW> := GetProcAddress(HBar, '<funcion VXml>');

Donde:

    <funcion VXmlW> es el nombre de cualquier función contenida en VXML_x86.DLL | VXML_x64.DLL


Fecha de actualización : 08 de Julio 2024 se añadieron las funciones para Carta Porte 3.1
Wrapper:

VXML_NewW                        : function ( szVersion:PChar ):LongInt; cdecl;
VXML_FreeW : procedure ( p:LongInt ); cdecl;
VXML_NewWithLogW : function ( szVersion:PChar; cNombreLog:PChar ):LongInt; cdecl;
VXML_SetLogFileW : procedure ( p:LongInt; NombreLog:PChar ); cdecl;
VXML_SetUserInfoW : procedure ( hXml:LongInt; szUser:PChar; servidor:PChar ); cdecl;
VXML_ProcesaDocumentoW : function ( hXml:LongInt; csd:PChar; key:PChar; keypwd:PChar; outfile:PChar ):LongInt; cdecl;
VXML_ProcesaDocumentoSSLW : function ( hXml:LongInt; csd:PChar; key:PChar; keypwd:PChar; outfile:PChar ):LongInt; cdecl;
VXML_AddCfdiRelacionados_cfdi40W : procedure ( p:LongInt; TipoRelacion:PChar; UUID1:PChar; UUID2:PChar; UUID3:PChar; UUID4:PChar; UUID5:PChar; UUID6:PChar; UUID7:PChar; UUID8:PChar; UUID9:PChar; UUID10:PChar ); cdecl;
VXML_AddCfdiRelacionado_cfdi40W : procedure ( p:LongInt; UUID:PChar ); cdecl;
VXML_SetComprobanteInfo_cfdi40W : procedure ( p:LongInt; Serie:PChar; Folio:PChar; Fecha:PChar; FormaDePago:PChar; CondicionesDePago:PChar; SubTotal:PChar; Descuento:PChar; Moneda:PChar; TipoCambio:PChar; Total:PChar; TipoDeComprobante:PChar; MetodoDePago:PChar; LugarExpedicion:PChar; Confirmacion:PChar; Exportacion:PChar ); cdecl;
VXML_SetEmisorInfo_cfdi40W : procedure ( p:LongInt; RFC:PChar; Nombre:PChar; RegimenFiscal:PChar; FacAtrAdquirente:PChar ); cdecl;
VXML_SetReceptorInfo_cfdi40W : procedure ( p:LongInt; RFC:PChar; Nombre:PChar; ResidenciaFiscal:PChar; NumRegIdTrib:PChar; UsoCFDI:PChar; DomicilioFiscalReceptor:PChar; RegimenFiscalReceptor:PChar ); cdecl;
VXML_AddConcepto_cfdi40W : procedure ( p:LongInt; ClaveProdServ:PChar; NoIdentificacion:PChar; Cantidad:PChar; ClaveUnidad:PChar; Unidad:PChar; Descripcion:PChar; ValorUnitario:PChar; Importe:PChar; Descuento:PChar; ObjetoImp:PChar ); cdecl;
VXML_AddConceptoTraslado_cfdi40W : procedure ( p:LongInt; Base:PChar; Impuesto:PChar; Tipofactor:PChar; TasaOCuota:PChar; Importe:PChar ); cdecl;
VXML_SetImpuestosInfo_cfdi40W : procedure ( p:LongInt; totalImpuestosTrasladados:PChar; totalImpuestosRetenidos:PChar ); cdecl;
VXML_AddTraslado_cfdi40W : procedure ( p:LongInt; Impuesto:PChar; TipoFactor:PChar; TasaOCuota:PChar; Importe:PChar; Base:PChar ); cdecl;
VXML_GetValueW : function ( hXml:LongInt; value:LongInt ):PChar; cdecl;