Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Conexión con bases de datos
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Conexión con bases de datos

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #21  
Antiguo 05-09-2008
Abuelo7 Abuelo7 is offline
Miembro
 
Registrado: ene 2006
Ubicación: Igualada(Barcelona) Spain
Posts: 51
Poder: 19
Abuelo7 Va por buen camino
Hola Caro

Me pasa una cosa muy curiosa.
Ahora el programa siempre contesta a la frase de entrada y varía la respuesta, pero la respuesta4, que en realidad es la 5 no aparece nunca en ninguna de las 4 frases de entrada que tengo de prueba.

Lo que me comentabas de RandomRange(1,5), el Delphi5 que estoy utilizando no me lo acepta.

Gracias
Saludos amiga.
Manuel
Responder Con Cita
  #22  
Antiguo 05-09-2008
Avatar de Caro
*Caro* Caro is offline
Moderadora
 
Registrado: jul 2004
Ubicación: Cochabamba, Bolivia
Posts: 2.544
Poder: 22
Caro Va por buen camino
Hola de nuevo amiguito, lo que pasa es que la función Random te va devolver un numero aleatorio que sea mayor o igual a 0 pero menor al parametro que le pasas, por lo tanto no debes pasarle 4 sino 5 Random(5).

Saluditos
__________________
Disfruten cada minuto de su vida a lado de sus seres queridos como si fuese el ultimo, uno nunca sabe lo que puede pasar.
Responder Con Cita
  #23  
Antiguo 05-09-2008
Abuelo7 Abuelo7 is offline
Miembro
 
Registrado: ene 2006
Ubicación: Igualada(Barcelona) Spain
Posts: 51
Poder: 19
Abuelo7 Va por buen camino
Muchas gracias Caro.

Bueno, ahora ya tengo la primera parte. Ahora voy a seguir porque todavía me queda mucho trabajo.
He de ampliar mucho la tabla.
He de tener en cuenta que puede haber solo 1 respuesta o 5 o más.
Debería tener opciones para grabar las conversaciones.

Bueno y muchas más cosas que se me ocurren.

No sé si tú has oído hablar de un programa llamado Zebal, que de verdad te digo que era una maravilla a mi entender.
Recordaba tu nombre, el tiempo que hacía que no conversabas con él.
Si le decías en una conversación por ejemplo algo de 'chocolate', e una próxima sesión, de pronto te decía que porque no le hablabas del chocolate.

Lástima que estaba construído en Clipper y no hay programa fuente y el programador ha desaparecido.

Bueno, no te canso más.

Hasta luego.

Manuel.
Responder Con Cita
  #24  
Antiguo 07-09-2008
Abuelo7 Abuelo7 is offline
Miembro
 
Registrado: ene 2006
Ubicación: Igualada(Barcelona) Spain
Posts: 51
Poder: 19
Abuelo7 Va por buen camino
Hola amigos/amigas.

La última modificación que he hecho en el programa, ha sido cambiar el ListBox por un Memo. De esta forma, cuando se entabla una conversación con el programa, las frases de preguntas y respuestas van apareciendo en la parte de abajo y desapareciendo por arriba, prescindiendo de lo larga que sea la conversación.
Ahora voy a pelearme con el tema de trabajar con varias tablas a la vez.

Gracias por vuestra atención.

Saludos

Manuel
Responder Con Cita
  #25  
Antiguo 07-09-2008
Abuelo7 Abuelo7 is offline
Miembro
 
Registrado: ene 2006
Ubicación: Igualada(Barcelona) Spain
Posts: 51
Poder: 19
Abuelo7 Va por buen camino
Hola otra vez.

El asunto de trabajar con 2 tablas ya lo tengo solucionado.

Ahora necesitaría vuestra ayuda para lo siguiente:

Al introducir una frase o cadena de texto en un Edit que pueda separar la cadena por palabras, asignando cada palabra a una variable, para poder trabajar despues con cada una.

En resumen es lo siguiente:

que una vez tenga las variables de las palabras, comprobar una por una si existen en las tablas y en función del resultado, preparar la respuesta.

Gracias
Saludos.
Manuel
Responder Con Cita
  #26  
Antiguo 08-09-2008
Avatar de Caro
*Caro* Caro is offline
Moderadora
 
Registrado: jul 2004
Ubicación: Cochabamba, Bolivia
Posts: 2.544
Poder: 22
Caro Va por buen camino
Cita:
Empezado por Abuelo7 Ver Mensaje
Ahora necesitaría vuestra ayuda para lo siguiente:

Al introducir una frase o cadena de texto en un Edit que pueda separar la cadena por palabras, asignando cada palabra a una variable, para poder trabajar despues con cada una.
Hola Manuel, para separar tu cadena en palabras puedes utilizar un stringList y utilizar sus funciones Delimiter y DelimiterText, has esta pruebita y tu ves como lo acomodas a tu codigo.

Código Delphi [-]
var
  sl : TStringList;
begin
  sl := TStringList.Create;

  sl.Delimiter := #32; //nuestro delimitador sera el espacio
  sl.DelimitedText := Edit1.Text;
 
  for i:=0 to sl.Count-1 do
   showmessage('La palabra es: '+sl[i]);
 
  sl.Free;
end;

Saluditos
__________________
Disfruten cada minuto de su vida a lado de sus seres queridos como si fuese el ultimo, uno nunca sabe lo que puede pasar.
Responder Con Cita
  #27  
Antiguo 09-09-2008
Abuelo7 Abuelo7 is offline
Miembro
 
Registrado: ene 2006
Ubicación: Igualada(Barcelona) Spain
Posts: 51
Poder: 19
Abuelo7 Va por buen camino
Hola Caro.

Gracias por tu última ayuda. Ha sido estupenda.

Ahora tengo un problema con el código que te paso.
Como verás en él, quiero que cuando se pregunte 'que hora es?', conteste acertadamente y cuando se pida 'que fecha es hoy' también.

El problema que tengo es que en cuanto a la hora aparece bien en el Memo,
pero si a continuación pregunto la fecha, aparece bien, pero antes sale 0.00.00.

Me puedes revisar el código?

Gracias una vez más.
Manuel
Responder Con Cita
  #28  
Antiguo 09-09-2008
Abuelo7 Abuelo7 is offline
Miembro
 
Registrado: ene 2006
Ubicación: Igualada(Barcelona) Spain
Posts: 51
Poder: 19
Abuelo7 Va por buen camino
Perdona me olvidé el código.
unit saberHora;

interface

uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls;

type
TForm1 = class(TForm)
Edit1: TEdit;
Button1: TButton;
Memo1: TMemo;
procedure Button1Click(Sender: TObject);
procedure Edit1KeyPress(Sender: TObject; var Key: Char);
private
{ Private declarations }
public
{ Public declarations }
end;

var
Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
begin
Close;
end;

procedure TForm1.Edit1KeyPress(Sender: TObject; var Key: Char);
var
DateTime : TDateTime;
Str : String;
pregunta : String;
begin
if key=#13 then
begin
pregunta := Edit1.Text;

if pregunta=('que hora es?') then

DateTime := Time; // store the current date and time
str := TimeToStr(DateTime); // convert the time into a string
Memo1.Lines.Add(Str);

Edit1.Text:='';

end;
begin


if pregunta=('que fecha es hoy') then
begin
DateTime := Date;
str := DateToStr(DateTime);

Memo1.Lines.Add(Str);

end;
end;
end;

end.
Responder Con Cita
  #29  
Antiguo 09-09-2008
Avatar de Caro
*Caro* Caro is offline
Moderadora
 
Registrado: jul 2004
Ubicación: Cochabamba, Bolivia
Posts: 2.544
Poder: 22
Caro Va por buen camino
Manuel te falta un begin en tu if donde preguntas la hora, ademas que veo otro begin volando por ahí.

Código Delphi [-]
procedure TForm1.Edit1KeyPress(Sender: TObject; var Key: Char);
var
 DateTime : TDateTime;
 Str : String;
 pregunta : String;
begin
  if key=#13 then
   begin
     pregunta := Edit1.Text;
 
     if pregunta=('que hora es?') then
      begin   //el que falta  
        DateTime := Time; // store the current date and time
        str := TimeToStr(DateTime); // convert the time into a string
        Memo1.Lines.Add(Str);
        Edit1.Text:='';
 
      end;
     //begin //este volando, debes quitarlo
     if pregunta=('que fecha es hoy') then
      begin
        DateTime := Date;
        str := DateToStr(DateTime);
 
        Memo1.Lines.Add(Str);
 
      end;
  end;
end;

cuando pogas codigo, colocalo entre las etiquetas [ delphi] [ /delphi] , sin los espacios, para que tu codigo se vea mejor y se entienda mucho mas rapido.

Saluditos
__________________
Disfruten cada minuto de su vida a lado de sus seres queridos como si fuese el ultimo, uno nunca sabe lo que puede pasar.
Responder Con Cita
  #30  
Antiguo 09-09-2008
Avatar de Lepe
[Lepe] Lepe is offline
Miembro Premium
 
Registrado: may 2003
Posts: 7.424
Poder: 29
Lepe Va por buen camino
Manuel, te aconsejo cnpacks es gratuito y colorea el código fuente, de esa forma con solo una visual mirando el color de cada trozo, sabes si te falta un begin o te sobra.

Saludos
__________________
Si usted entendió mi comentario, contácteme y gustosamente,
se lo volveré a explicar hasta que no lo entienda, Gracias.
Responder Con Cita
  #31  
Antiguo 10-09-2008
Elite237 Elite237 is offline
Miembro
 
Registrado: jul 2007
Posts: 162
Poder: 17
Elite237 Va por buen camino
Smile Mostrar datos en un DBGrid o StringGrid

Hola, quisera pedir una ayuda, pues tengo un problema:

Tengo 3 combobox, un stringgrid y un boton. Lo que quiero hacer es que el usuario seleccione un estado, una sucursal y una zona, y que al momento de presionar sobre el boton me muestre los datos que seleccione para despues mandarlos a imprimir.

Espero me haya dado a entender y me tiendan su ayuda.
Responder Con Cita
  #32  
Antiguo 10-09-2008
Abuelo7 Abuelo7 is offline
Miembro
 
Registrado: ene 2006
Ubicación: Igualada(Barcelona) Spain
Posts: 51
Poder: 19
Abuelo7 Va por buen camino
Hola Caro.

La consulta anterior con tu respuesta el programa funcionó correctamente colocando lo [begin] en su lugar.

Quisiera hacerte otra consulta.

Tengo 2 tablas que estan ya llenas de datos y si lograse aprovecharlas me irían muy bien para el programa que estoy haciendo.

La tabla 1, tiene 2 campos 'palabra' y 'numero'
La tabla 2, tiene 2 campos 'numero' y 'respuesta'

Por lo que he podido analizar, parece ser que el número de la primera tabla se corresponde al numero de la segunda tabla.

Resumiendo, si introduces mediante programa una palabra cuyo numero es 2, enlaza con el numero 2 de la segunda tabla que es la respuesta.

Las tablas son .dbf

Crees que podría utilizarlas?
De que forma podría enlazar estos campos?

Gracias amiga.

Saludos
Manuel
Responder Con Cita
  #33  
Antiguo 11-09-2008
Avatar de Caro
*Caro* Caro is offline
Moderadora
 
Registrado: jul 2004
Ubicación: Cochabamba, Bolivia
Posts: 2.544
Poder: 22
Caro Va por buen camino
Cita:
Empezado por Abuelo7 Ver Mensaje
Crees que podría utilizarlas?
De que forma podría enlazar estos campos?
Hola Manuel, deberías poder utilizarlas, yo no he manejado tablas dbf creo que son de DBase verdad. Supongo que ya te has podido conectar a tus tablas y las puedes ver desde delphi, para poder enlazarlas puedes hacer una consulta.

Código Delphi [-]
 Query1.Close;
 Query1.SQL.Clear;
 Query1.SQL.Text := 'select numero, respuesta from Tabla2 '+
                   ' where numero = '+QuotedStr(Numero);
 Query1.Open;
 
 if Not Query1.IsEmpty then //Si hay registro mostramos la respuesta
   Showmessage(Query1.FieldByName('respuesta').AsString);

donde numero sería una variable que tenga el numero.

Saluditos
__________________
Disfruten cada minuto de su vida a lado de sus seres queridos como si fuese el ultimo, uno nunca sabe lo que puede pasar.
Responder Con Cita
  #34  
Antiguo 12-09-2008
Abuelo7 Abuelo7 is offline
Miembro
 
Registrado: ene 2006
Ubicación: Igualada(Barcelona) Spain
Posts: 51
Poder: 19
Abuelo7 Va por buen camino
Hola Caro.

He podido solucionar el tema, aunque he empleado otra forma.
Te adjunto el código para que le des un repaso, a ver que tal.

Código Delphi [-]

unit pruebazebal2;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, DB, DBTables, StdCtrls;

type
  TForm1 = class(TForm)
    Edit1: TEdit;
    Memo1: TMemo;
    Button1: TButton;
    DataSource1: TDataSource;
    DataSource2: TDataSource;
    Table1: TTable;
    Table2: TTable;
    procedure Button1Click(Sender: TObject);
    procedure Edit1KeyPress(Sender: TObject; var Key: Char);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
begin
        Close;
end;

procedure TForm1.Edit1KeyPress(Sender: TObject; var Key: Char);

    var
    respuesta : String;
    respuesta2 : String;
begin
     If Key=#13 then
begin
      Table1.Open;
    If Table1.Locate('palabra',Edit1.Text, [loCaseInsensitive]) then
begin
    respuesta := Table1.fieldByName('NUMERO').AsString;
    end;
    Table1.Close;
    Table2.Open;
    If Table2.Locate('NUMERO',respuesta,[loCaseInsensitive]) then
begin
     respuesta2 := Table2.fieldByName('RESPUESTA').AsString;
     end;
     Table2.Close;
    Memo1.Lines.Add(Edit1.Text);
    Memo1.Lines.Add(respuesta2);

    Edit1.Text :='';
    end;
    end;
    

end.

Muchas gracias.

Manuel
Responder Con Cita
  #35  
Antiguo 12-09-2008
ninguno ninguno is offline
Miembro
 
Registrado: sep 2008
Posts: 45
Poder: 0
ninguno Va por buen camino
Hola Abuelo7

A ver qué te parece esta solución:

Código Delphi [-]
procedure TForm1.Edit1KeyPress(Sender: TObject; var Key: Char);
begin
  // si no es la tecla que buscamos, salimos y listo ;-)
  if Key <> #13 then Exit;

  // abrimos tablas
  Table1.Open;
  Table2.Open;
  // ponemos el código en un bloque try..finally para asegurarnos de que pase lo que pase éstas se cierren
  try
    // si localizamos lo buscado en Tabla1 y su resultado en Tabla2, lo añadimos al Memo1
    // Este if funciona debido a que SOLO se evaluará la segunda condición si la primera
    // se cumple (por eso de ser un AND) y si la primera se cumple, ya estamos posicionados
    // en el registro buscado (o al menos eso dice la teoría, no lo he probado xD)
    if (Table1.Locate('palabra', Edit1.Text, [loCaseInsensitive])) and
       (Table2.Locate('NUMERO', Table1.fieldByName('NUMERO').AsString, [loCaseInsensitive])) then
    begin
      Memo1.Lines.Add(Edit1.Text);
      Memo1.Lines.Add(Table2.fieldByName('RESPUESTA').AsString);
    end;
  finally
    Table1.Close;
    Table2.Close;
    Edit1.Text :='';
  end;
end;

En tu código siempre asignas algo al Memo1. Si es lo que quieres, podemos cambiar algo ese código para que así sea. Por otro lado, tu código seguramente te dará algún warning o hint dado que usas respuesta2 sin que ésta esté inicializada (está dentro de un if que no tiene por qué realizarse).

Última edición por ninguno fecha: 12-09-2008 a las 18:45:16.
Responder Con Cita
  #36  
Antiguo 13-09-2008
Elite237 Elite237 is offline
Miembro
 
Registrado: jul 2007
Posts: 162
Poder: 17
Elite237 Va por buen camino
Red face DBGrid

Hola Caro, gracias por tu tip, ya pude lograr lo del combobox, ahora mi duda es la siguiente, quiero que al momento de hacer doble clic me genere una consulta que me valide que lo que estoy haciendo clic sea igual a otro campo y me la muestre en otro DBgrid. Como le hago?Este es mi codigo de prueba:se que lo tengo que hacer en el evento dblclic, pero me manda un error con la sintaxis.

Código Delphi [-]
procedure TForm1.DBGrid1DblClick(Sender: TObject);
begin
     query1.close;
     query1.sql.clear;
     query1.sql.add('select scob_ncobros,scob_periodo,scob_vendedor,scob_fecha from TSCOBROS');
     query1.sql.add('where scob_vendedor = '''+DBgrid1.cells[6, sgPorVenta.row]+''' and scob_fecha>=''2008-08-01 09:00:00'' and scob_fecha<=''2008-08-31 21:00:00''');
     query1.open;
     showmessage(IntToStr(query1.recordcount));
Responder Con Cita
  #37  
Antiguo 13-09-2008
Abuelo7 Abuelo7 is offline
Miembro
 
Registrado: ene 2006
Ubicación: Igualada(Barcelona) Spain
Posts: 51
Poder: 19
Abuelo7 Va por buen camino
Hola ninguno.

Gracias por tu ayuda. En verdad lo he probado y tu código funciona perfectamente.

El problema es que ahora ya estoy trabajando con 4 tablas.

El asunto del Memo tiene que salir siempre la palabra o frase que introduzca el usuario y la respuesta que encuentre en la tabla 2 o en la 4.
Esto es: frase y respuesta.

Si has seguido el hilo verás que lo que estoy intentando es crear un programa de IA, na especie de Chattbot.

La mejor referencia que tengo es de un programa llamado Zebal que se escribió en Clipper. No hay código fuente, pero si las BD y tablas que utilizaba.

Es muy curioso el funcionamiento que se descubre al analizar las tablas.
Si le entras por ejemplo la frase 'estoy frito', te contesta 'que se siente al estar frito' o bien 'dime como es estar frito'. Como verás al detectar la palabra 'estoy' busca en las tablas y si la encuentra contesta con una de las frases vinculadas 'que se siente al estar' o 'dime como es estar' añadiéndole la palabra frito.

Como verás todo un lío.

Ademas hay palabras o frases con una número de clave en la tabla1 que se vinculan en la tabla2 con dicho número de clave, pero que a veces existe 5 o 6 veces. Es decir escoge la respuesta entre ellas ara que no sea siempre la misma.

Bueno además tiene otras lindezas, como preguntar el nombre del usuario, guardarlo y si vuelves a "charlar" al cabo de 3 meses, te dice qye cuanto tiempo sin hablar contigo.

Bueno, no te canso más.

Veremos como salgo de ésta.

Saludos.

Manuel Reixach
Responder Con Cita
  #38  
Antiguo 13-09-2008
ninguno ninguno is offline
Miembro
 
Registrado: sep 2008
Posts: 45
Poder: 0
ninguno Va por buen camino
Hola Abuelo7

Me alegra que te funcionara

Lo de 2 o 4 tablas es lo de menos, la idea al momento de realizar el if sería la misma

Con respecto a lo del memo, puedes hacer algo así

Código Delphi [-]
    Memo1.Lines.Add(Edit1.Text);
    if (Table1.Locate('palabra', Edit1.Text, [loCaseInsensitive])) and
       (Table2.Locate('NUMERO', Table1.fieldByName('NUMERO').AsString, [loCaseInsensitive])) then
      Memo1.Lines.Add(Table2.fieldByName('RESPUESTA').AsString);

pero tienes que tener en cuenta la posibilidad (aunque sea remota) de que el resultado de la búsqueda no retorno resultado alguno y, en esa situación, retornar algún tipo de respuesta estándar como "no entiendo la palabra X, podría explicármelo de otra forma", algo así

Código Delphi [-]
    Memo1.Lines.Add(Edit1.Text);
    if (Table1.Locate('palabra', Edit1.Text, [loCaseInsensitive])) and
       (Table2.Locate('NUMERO', Table1.fieldByName('NUMERO').AsString, [loCaseInsensitive])) then
      Memo1.Lines.Add(Table2.fieldByName('RESPUESTA').AsString)
    else
      Memo1.Lines.Add('no entiendo la palabra X, podría explicármelo de otra forma');

El ejemplo es con las 2 tablas, tendrías que adaptarlo a las 4 que uses ahora claro
Responder Con Cita
  #39  
Antiguo 14-09-2008
Abuelo7 Abuelo7 is offline
Miembro
 
Registrado: ene 2006
Ubicación: Igualada(Barcelona) Spain
Posts: 51
Poder: 19
Abuelo7 Va por buen camino
Hola ninguno.

Tu código ha funcionado perfectamente.
Ya estoy trabajando con las 4 tablas, sin ningún problema.
También he adicionado, en caso de que no encuentre la palabra o frase, el mensaje 'no encuentro lo que me dice, podría definirlo mejor?.Gracias'.

Voy a estar una semana de vacaciones.

De todas formas te comento lo siguiente por si me puedes dar una ayuda.

1.- Quisiera grabar la conversación en una tabla o fichero de texto, según veas mejor.

2.- Como debo hacerlo para que al detectar una palabra que no entiende, dentro de una frase, la guarde para añadirla en la respuesta.
Ejemplo: 'estoy frito'. Hay una frase de respuesta vinculada a 'estoy' que es 'que se siente al estar' y a eso se le ha de añadir 'frito'.

Perdona si estoy abusando mucho de tu amabilidad.
Muchas gracias y un cordial saludo.
Manuel Reixach

P.D. Desde el lugar de vacaciones iré dando un vistazo por el Foro.
Responder Con Cita
  #40  
Antiguo 14-09-2008
ninguno ninguno is offline
Miembro
 
Registrado: sep 2008
Posts: 45
Poder: 0
ninguno Va por buen camino
Hola Abuelo7

Cita:
Empezado por Abuelo7 Ver Mensaje
1.- Quisiera grabar la conversación en una tabla o fichero de texto, según veas mejor.
¿Qué quieres hacer luego con esa información? Es que dependiendo de lo que quieras hacer, será mejor/más fácil una opción u otra.

Cita:
Empezado por Abuelo7 Ver Mensaje
2.- Como debo hacerlo para que al detectar una palabra que no entiende, dentro de una frase, la guarde para añadirla en la respuesta.
Ejemplo: 'estoy frito'. Hay una frase de respuesta vinculada a 'estoy' que es 'que se siente al estar' y a eso se le ha de añadir 'frito'.
Entiendo que la palabra a buscar que puede fallar es lo escrito en Edit1 (si no es así corrígeme), por lo que será sencillo controlar esa palabra en la frase de respuesta:

Código Delphi [-]
    Memo1.Lines.Add(Edit1.Text);
    if (Table1.Locate('palabra', Edit1.Text, [loCaseInsensitive])) and
       (Table2.Locate('NUMERO', Table1.fieldByName('NUMERO').AsString, [loCaseInsensitive])) then
      Memo1.Lines.Add(Table2.fieldByName('RESPUESTA').AsString)
    else
      Memo1.Lines.Add('no entiendo la palabra ' + Edit1.Text + ', podría explicármelo de otra forma');

PD: felices vacaciones
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
consulta a un query en vez de a una tabla eldiegofg SQL 10 19-09-2007 12:46:39
Consulta Estado de una Tabla SQL Alejandro73 SQL 2 24-06-2007 00:03:00
Crear tabla en una BD en Server A desde consulta en tabla B en server B joaquinalberto MySQL 1 18-05-2007 10:39:27
Grabar Consulta en Tabla don malo Varios 1 12-03-2007 23:45:59
Actualizar una tabla con una consulta de otra tabla JODELSA SQL 2 14-09-2006 04:07:01


La franja horaria es GMT +2. Ahora son las 17:47:32.


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