Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Internet
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Colaboración Paypal con ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #301  
Antiguo 09-10-2020
Avatar de Neftali [Germán.Estévez]
Neftali [Germán.Estévez] Neftali [Germán.Estévez] is offline
[becario]
 
Registrado: jul 2004
Ubicación: Barcelona - España
Posts: 18.586
Poder: 10
Neftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en bruto
Gracias.
Luego actualizo los ficheros en el FTP.
__________________
Germán Estévez => Web/Blog
Guía de estilo, Guía alternativa
Utiliza TAG's en tus mensajes.
Contactar con el Clubdelphi

P.D: Más tiempo dedicado a la pregunta=Mejores respuestas.
Responder Con Cita
  #302  
Antiguo 09-10-2020
Avatar de keys
keys keys is offline
Miembro
 
Registrado: sep 2003
Ubicación: Bilbao
Posts: 1.085
Poder: 23
keys Va por buen camino
Perdón lo intente con la etiqueta para código en delphi pero no salia bien, no había visto la de php.

Responder Con Cita
  #303  
Antiguo 13-10-2020
Avatar de keys
keys keys is offline
Miembro
 
Registrado: sep 2003
Ubicación: Bilbao
Posts: 1.085
Poder: 23
keys Va por buen camino
Hola a todos, me imagino que ya os habéis enterado.

Las haciendas de Bizkaia y Gipuzkoa van a empezar un periodo de pruebas. Gipuzkoa hoy día 13 y Bizkaia en breve.

https://www.batuz.eus/es/inicio

https://www.gipuzkoa.eus/es/web/ogas...e-fiscal/t-bai

Un Saludo.
Responder Con Cita
  #304  
Antiguo 13-10-2020
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.264
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
Cita:
Empezado por keys Ver Mensaje
Perdón lo intente con la etiqueta para código en delphi pero no salia bien, no había visto la de php.
Tienes razón, tuve que probar otros para ver cómo se veía y el de php parece que es el más idóneo.
Saludos.
Responder Con Cita
  #305  
Antiguo 16-10-2020
Avatar de keys
keys keys is offline
Miembro
 
Registrado: sep 2003
Ubicación: Bilbao
Posts: 1.085
Poder: 23
keys Va por buen camino
Hola a todos.

Bizkaia a publicado nuevos ficheros para el envío del 140/240 www.batuz.eus por cierto les he comentado lo del espacio en el xsd que da error al importarlos en el xml databinding y me han dicho que es un error y que lo van a corregir. No se si en lo subido esta corregido ya que sus xsd de envio del 140/240 da el mismo error.

Por otra parte. Al importar los ficheros xsd con el xml databindig y generar los xml con delphi no añade el espacio de nombres. Es decir pone

Código:
<TicketBai xmlns="urn:ticketbai:emision">
y ellos quieren que ponga

Código:
<T:TicketBai xmlns:T="urn:ticketbai:emision" xmlns:ds="http://www.w3.org/2000/09/xmldsig#" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="urn:ticketbai:emision ticketBaiV12.xsd ">
Yo lo que estoy haciendo una vez generado el fichero cambiarlo a pelo. ¿Pero hay alguna forma que la clase IXMLDocument lo genere asi directamente?.

Un Saludo.
Responder Con Cita
  #306  
Antiguo 16-10-2020
Avatar de elcharlie
elcharlie elcharlie is offline
Miembro
 
Registrado: mar 2013
Ubicación: Bilbao
Posts: 187
Poder: 12
elcharlie Va por buen camino
Buenas a todos,
¿Alguien ha podido enviar alguna factura/ticket al servidor de Gipuzkoa? Es que a mi siempre me esta retornando esto:
Código PHP:
<ns2:TicketBaiResponse xmlns:ns2="http://ticketbai.eus">
   <
Salida>
      <
FechaRecepcion>16-10-2020 10:50:32</FechaRecepcion>
      <
Estado>01</Estado>
      <
Descripcion>Rechazado</Descripcion>
      <
Azalpena>Baztertua</Azalpena>
      <
ResultadosValidacion>
         <
Codigo>006</Codigo>
         <
Descripcion>ErrorEl servicio de recepción no está disponibleRepita la operación más tarde</Descripcion>
         <
Azalpena>AkatsaJasotze zerbitzua ez dago erabilgarriEgin berriro eragiketa geroago</Azalpena>
      </
ResultadosValidacion>
   </
Salida>
</
ns2:TicketBaiResponse
Responder Con Cita
  #307  
Antiguo 16-10-2020
Avatar de elcharlie
elcharlie elcharlie is offline
Miembro
 
Registrado: mar 2013
Ubicación: Bilbao
Posts: 187
Poder: 12
elcharlie Va por buen camino
Cita:
Empezado por keys Ver Mensaje
Hola a todos.

Bizkaia a publicado nuevos ficheros para el envío del 140/240 www.batuz.eus por cierto les he comentado lo del espacio en el xsd que da error al importarlos en el xml databinding y me han dicho que es un error y que lo van a corregir. No se si en lo subido esta corregido ya que sus xsd de envio del 140/240 da el mismo error.

Por otra parte. Al importar los ficheros xsd con el xml databindig y generar los xml con delphi no añade el espacio de nombres. Es decir pone

Código:
<TicketBai xmlns="urn:ticketbai:emision">
y ellos quieren que ponga

Código:
<T:TicketBai xmlns:T="urn:ticketbai:emision" xmlns:ds="http://www.w3.org/2000/09/xmldsig#" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="urn:ticketbai:emision ticketBaiV12.xsd ">
Yo lo que estoy haciendo una vez generado el fichero cambiarlo a pelo. ¿Pero hay alguna forma que la clase IXMLDocument lo genere asi directamente?.

Un Saludo.
Yo tambien lo estoy cambiando a mano, pero solo estoy añadiendo esto:
Código PHP:
<T:TicketBai xmlns:T="urn:ticketbai:emision" xmlns:ds="http://www.w3.org/2000/09/xmldsig#" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
Responder Con Cita
  #308  
Antiguo 16-10-2020
Avatar de keys
keys keys is offline
Miembro
 
Registrado: sep 2003
Ubicación: Bilbao
Posts: 1.085
Poder: 23
keys Va por buen camino
Puede ser que valga solo con eso.
Yo he cogido lo que viene en un fichero de ejemplo de la hacienda de gipuzkoa que me han mandado.
Responder Con Cita
  #309  
Antiguo 20-10-2020
Avatar de elcharlie
elcharlie elcharlie is offline
Miembro
 
Registrado: mar 2013
Ubicación: Bilbao
Posts: 187
Poder: 12
elcharlie Va por buen camino
Hola a todos,
hoy me han mandado esto los de la diputación de Gipuzkoa. Les mandé un email. porque el servicio web siempre me respondía con el mensaje "Error: El servicio de recepción no está disponible. Repita la operación más tarde".
Por si os sirve de ayuda.

Cita:
Buenos días,
Hemos detectado que hay un problema derivado de la comprobación de la política de firma, estamos revisando como está implementada esta comprobación.
Si se envía el fichero sin indicar una política de firma explícita, creemos que funcionará.

Un saludo,
Responder Con Cita
  #310  
Antiguo 20-10-2020
juramisa juramisa is offline
Miembro
 
Registrado: abr 2007
Posts: 54
Poder: 18
juramisa Va por buen camino
Petición al servicio

Buenas tardes,

Os pido ayuda para el envío del fichero LROE, siempre me da error desconocido.
Estoy usando los componente TNetHTTPRequest y TNetHTTPClient, pero si alguien me da otra opción más sencilla y que funcione, estoy dispuesto a cambiar.

Os expongo el código a ver si alguien puede ayudarme, que hago mal.

en TNetHTTPClient cargo el cerificado:

Código Delphi [-]
procedure TfrmEnvelm.NetHTTPClient1NeedClientCertificate(const Sender: TObject; const ARequest: TURLRequest; const ACertificateList: TCertificateList; var AnIndex: Integer);
var
  i: Integer;
begin
  for i := 0 to ACertificateList.Count - 1 do
  begin

    if SameText(ACertificateList[i].Subject, mi_certificado.Caption) then
    begin
      AnIndex := i;
      break;
    end;
  end;
end;

Genero el fichero XML y lo comprimo en formato gzip.

Código Delphi [-]
    

function TfrmEnvelm.f_cabecera_LROE(mi_con, mi_apa, mi_nif, mi_nrs, mi_ap1, mi_ap2, mi_mode, mi_eje : string): string;
begin
  result := Format('{"con": "%s", "apa": "%s", "inte": {"nif": "%s","nrs": "%s","ap1": "%s","ap2": "%s"},"drs": {"mode": "%s","ejer": "%s"}}', [mi_con, mi_apa, mi_nif, mi_nrs, mi_ap1, mi_ap2, mi_mode, mi_eje]);
end;


var
  Src, Dst: TFileStream;
  ResponseContent: TMemoryStream;
  Encoding: TEncoding;
  ss: TStringStream;
....
    SaveAsUTF8(DMBatu.CDSEnvc.FieldByName('EN050').AsString, el_xml.XML);
    Src := TFileStream.Create(DMBatu.CDSEnvc.FieldByName('EN050').AsString, fmOpenRead);
    try
      Dst := TFileStream.Create(DMBatu.CDSEnvc.FieldByName('EN050').AsString + '.gz', fmCreate);
      try
        MakeGZ(Src, Dst);
      finally
        Dst.Free;
      end;
    finally
      Src.Free;
    end;

Cargo cabecera y cuerpo de https, y realizo la llamada.

Código Delphi [-]
   
      if FileExists(DMBatu.CDSEnvc.FieldByName('EN050').AsString + '.gz') then
      begin
        NetHTTPRequest1.CustomHeaders['Accept-Encoding'] := el_accept_Encoding;
        NetHTTPRequest1.CustomHeaders['Content-Encoding'] := el_Content_Encoding;
        NetHTTPRequest1.CustomHeaders['Content-Type'] := el_Content_Type;
        NetHTTPRequest1.CustomHeaders['eus-bizkaia-n3-version'] := el_eus_bizkaia_n3_version;
        NetHTTPRequest1.CustomHeaders['eus-bizkaia-n3-content-type'] := el_eus_bizkaia_n3_content_type;
        el_eus_bizkaia_n3_data :=  f_cabecera_LROE(el_concepto,
                                                   el_subcapitulo,
                                                   DMBatu.CDSPres.FieldByName('PR020').AsString,
                                                   DMBatu.CDSPres.FieldByName('PR040').AsString,
                                                   DMBatu.CDSPres.FieldByName('PR090').AsString,
                                                   DMBatu.CDSPres.FieldByName('PR100').AsString,
                                                   DMBatu.CDSPres.FieldByName('PR080').AsString,
                                                   txtEjer.Text);
        NetHTTPRequest1.CustomHeaders['eus-bizkaia-n3-data'] := el_eus_bizkaia_n3_data;
        ss := TStringStream.Create('', TEncoding.UTF8);
        ss.Position := 0;
        ss.LoadFromFile(DMBatu.CDSEnvc.FieldByName('EN050').AsString + '.gz');

        NetHTTPRequest1.MethodString := 'POST';
        Memo1.Text := NetHTTPClient1.Post(la_url, ss).ContentAsString(tencoding.UTF8);

Las variables siguientes, se leen de un fichero de configuración:

Código Delphi [-]
    la_url := 'https://sarrerak.bizkaia.eus/aurkezpena';
    el_accept_Encoding := 'gzip';
    el_Content_Encoding := 'gzip';
    el_Content_Type := 'application/octet-stream';
    el_eus_bizkaia_n3_version := '1.0';
    el_eus_bizkaia_n3_content_type := 'application/xml';
    el_Concepto := 'LROE';
   el_subcapitulo := '1.1';
Tengo dudas si el cuerpo debe de estar en hexadecimal.

Estoy abierto a todo, ya no se por donde seguir,
Gracias
Responder Con Cita
  #311  
Antiguo 21-10-2020
Avatar de keys
keys keys is offline
Miembro
 
Registrado: sep 2003
Ubicación: Bilbao
Posts: 1.085
Poder: 23
keys Va por buen camino
Hola a todos.

No te he revisado todo pero vas por buen camino.

El problemaes es que en Bizkaia no han empezado el periodo de prueba de los envíos. Site fijas en la url https://sarrerak.bizkaia.eus/aurkezpena y pinchas te dice que el servidor no esta disponible.

Esa es la dirección de producción, es decir la definitiva. Tienen que publicar la dirección del entorno de pruebas que me imagino que será distinta.

Si tienes que hacer también Gipuzkoa, puedes empezar por ellos que ya tienen el periodo de pruebas de envíos en marcha y es más sencillo.

Un Saludo.
Responder Con Cita
  #312  
Antiguo 21-10-2020
juramisa juramisa is offline
Miembro
 
Registrado: abr 2007
Posts: 54
Poder: 18
juramisa Va por buen camino
Gracias,

Me quitas un gran peso de encima. Estoy mirando Gipuzkoa, no se me da el caso, y es totalmente distinto. En esta hacienda mandan directamente el XML del ticketbai. De todas formas sabes si Bizkaia, ¿ va a habilitar portal de pruebas?. Si no les pongo una consulta, a ver que responden.

Saludos
Responder Con Cita
  #313  
Antiguo 21-10-2020
Avatar de keys
keys keys is offline
Miembro
 
Registrado: sep 2003
Ubicación: Bilbao
Posts: 1.085
Poder: 23
keys Va por buen camino
Si van a habilitar entorno de pruebas. Se supone que en unos días.
Responder Con Cita
  #314  
Antiguo 22-10-2020
juramisa juramisa is offline
Miembro
 
Registrado: abr 2007
Posts: 54
Poder: 18
juramisa Va por buen camino
Buenos días hice la consulta en relación al entorno de pruebas antes de que me respondiera keys, y esta es la respuesta:

Cita:
Kaixo,

A partir de 01/01/2022, las empresas y autónomos sujetos a la normativa de Bizkaia estarán obligadas a la llevanza del libro registro de operaciones económicas (en adelante, LROE) a través de la sede electrónica de la Diputación Foral de Bizkaia, mediante el suministro electrónico de las anotaciones que lo componen.

El suministro electrónico de las anotaciones que componen el LROE se realizará mediante servicios web o, en su caso, a través de los correspondientes formularios electrónicos, todo ello conforme a las especificaciones técnicas y funcionales que se aprueben por Orden Foral del diputado foral de Hacienda y Finanzas.

En el mes de noviembre de 2020 se habilitará el entorno de pruebas de los servicios web del LROE.

Para realizar estas pruebas, no es necesario que la empresa de software se inscriba en el registro de software garante TicketBAI.

Los datos que se reciban dentro de este entorno tendrán exclusivamente el tratamiento de datos de prueba.

El detalle de las condiciones para realizar las pruebas se publicará próximamente en el apartado Documentación técnica de la página web www.batuz.eus.

Les avisaremos de dicha publicación mediante aviso en el apartado Novedades de la página web www.batuz.eus y correo a través de este buzón.
Responder Con Cita
  #315  
Antiguo 04-11-2020
juramisa juramisa is offline
Miembro
 
Registrado: abr 2007
Posts: 54
Poder: 18
juramisa Va por buen camino
Entorno de pruebas

Buenas tardes
Ya se ha puesto en marcha el entorno de pruebas LROE en Bizkaia, estoy probando, y en:

Código Delphi [-]
unit System.Net.HttpClient.Win;

procedure TWinHTTPClient.DoGetClientCertificates(const ARequest: THTTPRequest;
  const ACertificateList: TList);

la aplicación casca, da el terrorífico 'Access violation .....'. Uso uso Delphi 10 Seattle y los componentes TNetHTTPClient y TNetHTTPRequest.
La selección del certificado la realizo en el evento OnNeedClientCertificate,

Código Delphi [-]
procedure Tfrm140CTB.NetHTTPClient1NeedClientCertificate(const Sender: TObject; const ARequest: TURLRequest; const ACertificateList: TCertificateList; var AnIndex: Integer);
var
  i: Integer;
begin
  for i := 0 to ACertificateList.Count - 1 do
  begin

    if  (SameText(ACertificateList[i].Subject, mi_certificado.Caption)) then
    begin
      AnIndex := i;
      break;
    end;
  end;
end;

He puesto una traza al comienzo de este procedimiento, y ni siquiera llega
Si alguien utiliza este sistema, y le funciona, agradecido me eche una mano.
Responder Con Cita
  #316  
Antiguo 05-11-2020
Avatar de elcharlie
elcharlie elcharlie is offline
Miembro
 
Registrado: mar 2013
Ubicación: Bilbao
Posts: 187
Poder: 12
elcharlie Va por buen camino
Cita:
Empezado por juramisa Ver Mensaje
Buenas tardes
Ya se ha puesto en marcha el entorno de pruebas LROE en Bizkaia, estoy probando, y en:

Código Delphi [-]
unit System.Net.HttpClient.Win;

procedure TWinHTTPClient.DoGetClientCertificates(const ARequest: THTTPRequest;
  const ACertificateList: TList);

la aplicación casca, da el terrorífico 'Access violation .....'. Uso uso Delphi 10 Seattle y los componentes TNetHTTPClient y TNetHTTPRequest.
La selección del certificado la realizo en el evento OnNeedClientCertificate,

Código Delphi [-]
procedure Tfrm140CTB.NetHTTPClient1NeedClientCertificate(const Sender: TObject; const ARequest: TURLRequest; const ACertificateList: TCertificateList; var AnIndex: Integer);
var
  i: Integer;
begin
  for i := 0 to ACertificateList.Count - 1 do
  begin

    if  (SameText(ACertificateList[i].Subject, mi_certificado.Caption)) then
    begin
      AnIndex := i;
      break;
    end;
  end;
end;

He puesto una traza al comienzo de este procedimiento, y ni siquiera llega
Si alguien utiliza este sistema, y le funciona, agradecido me eche una mano.

Buenos dias!
yo lo hago mas o menos así, y de momento, ningún problema. No sé cual será tu problema, eso sí, lo estoy haciendo con Delphi 10.3 Rio. Pero yo creo que el problema no está en ese evento, tiene que ser en otra parte

Última edición por elcharlie fecha: 05-11-2020 a las 09:16:45.
Responder Con Cita
  #317  
Antiguo 05-11-2020
juramisa juramisa is offline
Miembro
 
Registrado: abr 2007
Posts: 54
Poder: 18
juramisa Va por buen camino
Gracias elcharlie,
El error se da en el siguiente procedimiento de la unit System.Net.HttpClient.Win, marco la instrucción en rojo;

Código Delphi [-]
procedure TWinHTTPClient.DoGetClientCertificates(const ARequest: THTTPRequest;
  const ACertificateList: TList);
var
  LRequest: TWinHTTPRequest;
  LStore: HCERTSTORE;
  LIssuerList: PSecPkgContext_IssuerListInfoEx;
  LClientCert: PCCERT_CONTEXT;
  LSearchCriteria: CERT_CHAIN_FIND_BY_ISSUER_PARA;
  LIssuerListSize: DWORD;
  LPrevChainContext, LClientCertChain: PCCERT_CHAIN_CONTEXT;
  LCertificate: TCertificate;
begin
  inherited;

  if FWinCertList.Count = 0 then
  begin
    LRequest := TWinHTTPRequest(ARequest);

    LIssuerList := nil;
    LIssuerListSize := SizeOf(LIssuerList);

    if WinHttpQueryOption(LRequest.FWRequest, WINHTTP_OPTION_CLIENT_CERT_ISSUER_LIST, LIssuerList, LIssuerListSize) = TRUE then
    begin
      FillChar(LSearchCriteria, SizeOf(LSearchCriteria), 0);
      LSearchCriteria.cbSize := SizeOf(LSearchCriteria);
      LSearchCriteria.cIssuer := LIssuerList.cIssuers;
      LSearchCriteria.rgIssuer := LIssuerList.aIssuers;

      LStore := TCertificateStore.Store;
      if LStore <> nil then
      begin
        LPrevChainContext := nil;
        while True do
        begin
          LClientCertChain := CertFindChainInStore(LStore, X509_ASN_ENCODING,
            CERT_CHAIN_FIND_BY_ISSUER_CACHE_ONLY_URL_FLAG or CERT_CHAIN_FIND_BY_ISSUER_CACHE_ONLY_FLAG,
            CERT_CHAIN_FIND_BY_ISSUER, @LSearchCriteria, LPrevChainContext);

          if LClientCertChain <> nil then
          begin
            LPrevChainContext := LClientCertChain;
            LClientCert := LClientCertChain.rgpChain^.rgpElement^.pCertContext;
            CertDuplicateCertificateContext(LClientCert); // Need to be released (CertFreeCertificateContext)
            CryptCertToTCertificate(LClientCert, LCertificate);
            FCertificateList.Add(LCertificate);
            FWinCertList.Add(LClientCert);
          end
          else
            Break;
        end;
      end;
      GlobalFree(HGLOBAL(LIssuerList));
    end;
  end;
  ACertificateList.Clear;
  ACertificateList.AddRange(FCertificateList);
end;

¿Serías tan amable de mandarme ese procedimiento en la versión Rio?. Viéndolo, parece que es un problema al cargar la lista de los certificados presentes en el ordenador.
¿Tal vez hay una orden previa para la carga de los certificados y que yo no la esté realizando?

Gracias.
Responder Con Cita
  #318  
Antiguo 05-11-2020
Avatar de keys
keys keys is offline
Miembro
 
Registrado: sep 2003
Ubicación: Bilbao
Posts: 1.085
Poder: 23
keys Va por buen camino
Hola a todos.

En el componente TNetHttpClient tienes un evento OnRequestError, intenta capturar el error que te da.

Un Saludo
Responder Con Cita
  #319  
Antiguo 05-11-2020
juramisa juramisa is offline
Miembro
 
Registrado: abr 2007
Posts: 54
Poder: 18
juramisa Va por buen camino
Hola
keys, da lo siguiente, yo la verdad con esos errores nunca he podido saber nada, y da como he dicho al cargar la lista de certificados. Vosotros cargáis dicha lista antes, o le dices como cargarla antes de ejecutar
Código Delphi [-]
NetHTTPClient1.Post(la_url, ss).ContentAsString(tencoding.UTF8);
Código Delphi [-]
---------------------------
BATUZ
---------------------------
Access violation at address 00B19045 in module 'BATUZ.exe'. Read of address 00000004
---------------------------
OK   
---------------------------

Gracias
Responder Con Cita
  #320  
Antiguo 05-11-2020
Avatar de keys
keys keys is offline
Miembro
 
Registrado: sep 2003
Ubicación: Bilbao
Posts: 1.085
Poder: 23
keys Va por buen camino
Prueba primero a poner un certificado sin hacer nada en ese evento.

AnIndex := 0; //o el que tu tengas.

Yo tampoco creo que sea del certificado. ¿No te pasa por el evento OnRequestError que te he comentado ?
Responder Con Cita
Respuesta



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
SII -Nuevo sistema de la Agencia Tributaria española de envío de datos vía Webservice newtron Internet 3594 Hace 4 Semanas 20:44:37
Como utilizar la ayuda del nuevo Sistema Operativo gluglu Humor 3 24-09-2007 10:39:05
Aplicacion Agencia De Viajes ArdiIIa Varios 9 20-01-2007 17:49:53
El Vasco Aguirre Al González La Taberna 5 26-05-2006 10:22:28
Microsoft ha lanzado su nuevo sistema operativo DarkByte Humor 0 25-01-2004 10:21:14


La franja horaria es GMT +2. Ahora son las 20:06:41.


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