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
  #1  
Antiguo 07-11-2005
soto soto is offline
Miembro
 
Registrado: oct 2005
Posts: 17
Poder: 0
soto Va por buen camino
Mysql y Delphi 7

Buenas, les quería preguntar como juntar MySQL con delphi 7. Ya que estube leyendo varias cosas aquí, pero ninguna dice en concreto que hacer(lo que pasa es que el hilo ya venía con contenido de otro lado).

Por ahora molesto con eso, muchas gracias
Responder Con Cita
  #2  
Antiguo 07-11-2005
Avatar de dec
dec dec is offline
Moderador
 
Registrado: dic 2004
Ubicación: Alcobendas, Madrid, España
Posts: 13.107
Poder: 34
dec Tiene un aura espectaculardec Tiene un aura espectacular
Hola,

Tu pregunta es muy general. No sé si te servirán los resultados de esta búsqueda en los Foros. Por ejemplo, en este Hilo roman cómo conectar con una base de datos MySQL desde Delphi.
__________________
David Esperalta
www.decsoftutils.com
Responder Con Cita
  #3  
Antiguo 07-11-2005
chileno chileno is offline
Miembro
 
Registrado: jun 2005
Posts: 121
Poder: 19
chileno Va por buen camino
hola....soto...
hay varias opciones para conectar mysql con delphi (aquellos que conosco):
odbc, dbExpress (viene con delphi) y ZeosLib.
en particular utilizo Zeos lo puedes bajar en: http://sourceforge.net/projects/zeoslib....pero baja el zeosdbo-6.1.5-stable

para instalar dichos componentes debes seguir la guia de intalacion que posee
Responder Con Cita
  #4  
Antiguo 07-11-2005
soto soto is offline
Miembro
 
Registrado: oct 2005
Posts: 17
Poder: 0
soto Va por buen camino
chileno, de todas las cosas que hay para bajar, ¿Cuál bajo?
Estos son los que están para bajarse:

Zeos Controls
Zeos Database Designer
Zeos Database Explorer
Zeos Database Objects
Zeos Database View

Mil gracias por la rápida respuesta.
Responder Con Cita
  #5  
Antiguo 07-11-2005
Avatar de fredo
fredo fredo is offline
Miembro
 
Registrado: oct 2003
Ubicación: Chile, Valparaiso
Posts: 318
Poder: 21
fredo Va por buen camino
hola...

yo trabajo con dbexpress, ahora me siento medio autista, ya que practicamente nadie los ocupa, tube varios problemas, qu e ya resolvi....
te envio el codigo de mis rutinas, si alguien ayuda a mejorarla mejor:

primero debes tener un TSQLConection, e la cual conectar, para ello debes primero hacer doble click en el e informar que tipo de coneccion vas a usar ( mysql), luego de definir esto debes poner la ruta de las dlls necesarias, que son dbexpmysql.dll y c:\mysql\bin\LIBMYSQL.dll por lo general (ojo que el driver funciona ok solo hasta la version 4.0.algo, salvo que funcione bien con la 4.1 o superior y no me halla enterado), luego puedes usar los componentes TSImpledataset para tus consultas y acceso a datos, las coplicaciones van con midas, que nunca me funcionaro bien... por ello cree unas rutinas para solucionar estos problemas, para ello cree una TSQLQuery para manejar las transacciones.... que debe existir con el nombre consulta, el resto es pan comido... en vez de usar applyupdate usas el procedimiento que esta mas a bajo y le pasas como parametro la componente TSimpleDataset que tiene tu consulta a datos: las reglas que puse de estas son:
* linea 1 para select +campos
* linea 2 para from +tabla
* linea 3 para where +condicion
* linea 4 para order by +campos

eso, solo sirve para actualizar 1 tabla para mas habria que arreglar el codigo.... yo las tengo como publicas en frm_main asi que deberas ajustarla a tu formulario...... saludos.

Código Delphi [-]
Function TFrm_Main.Delimitador(DataSet:TSimpleDataSet;Campo:String;Old_Value:Boolean):String;
 var d,m,a:Word;
     TextoAux,Flotante:String;
     i:Integer;
     Nuevo:Boolean;
     FloatAuxouble;
     FechaAux:TDateTime;
 
 Begin
      with DataSet do
      Begin
           Nuevo:=False;
           Try
              If fieldbyname(Campo).DataType in [ftInteger,ftFloat,ftCurrency]
              Then
              Begin
                   FloatAux:=fieldbyname(Campo).OldValue;
              end
              else
              Begin
                   If fieldbyname(Campo).DataType in [ftDate,ftTime,ftDateTime]
                   then FechaAux:=fieldbyname(Campo).OldValue
                   else Flotante:=fieldbyname(Campo).OldValue;
              end;
           except
                 Nuevo:=true;
           end;
           if fieldbyname(Campo).DataType in [ftString,ftBlob] then
           Begin
                Flotante:='';
                If (Old_Value) and (not Nuevo) then TextoAux:=fieldbyname(Campo).OldValue
                                               else TextoAux:=fieldbyname(Campo).AsSTring;
                for i:=1 to length(TextoAux) do
                Begin
                     if (TextoAux[i] = '"') or
                        (TextoAux[i] = '\') or
                        (TextoAux[i] = '''')
                        then Flotante:=Flotante+'\';
                     Flotante:=Flotante+TextoAux[i];
                end;
                Result:='"'+Flotante+'"';
           End
              else
           Begin
                if fieldbyname(Campo).DataType in [ftDate,ftTime,ftDateTime] then
                Begin
                     If (Old_Value) and (not Nuevo)
                     then DecodeDate(fieldbyname(Campo).OldValue,a,m,d)
                     Else DecodeDate(fieldbyname(Campo).AsDateTime,a,m,d);
                     Result:=''''+FormatFloat('00',a)+'-'+FormatFloat('00',m)
                       +'-'+FormatFloat('00',d)+'''';
                End
                   else
                Begin
                     If fieldbyname(Campo).DataType in [ftInteger] then
                     Begin
                          If (Old_Value) and (not Nuevo)
                          then Result:=IntTostr(fieldbyname(Campo).OldValue)
                          else Result:=IntTostr(fieldbyname(Campo).AsInteger);
                     end
                        else
                     Begin
                          If (Old_Value) and (not Nuevo)
                          then Flotante:=fieldbyname(Campo).OldValue
                          else Flotante:=fieldbyname(Campo).AsString;
                          for i:=1 to length(Flotante) do
                          begin
                               if Flotante[i] = ',' then Flotante[i]:='.';
                          end;
                          Result:=Flotante;
                     end;
                end;
           end;
      end;
 end;
 
 
 
 Procedure TFrm_Main.ActualizaRegistro(Query:TSimpleDataset;Refresca:Boolean);
 var AuxSTR,NombreIndice,MYNombreIndice,Tabla,VClave,Linea,Tabladestino,CampoOrigen,
     CampoDestino,Condicion,CondicionOK,Campo:String;
     CONTADOR,XX,ClaveP,Rec_no:Integer;
     X:TStringList;
     a,m,D:Word;
     CampoClave:Array[1..7]of String;
     OKRef,Nuevo:Boolean;
     FloatAux: Double;
     FechaAux:TDateTime;
 
 Begin
      If Query.ClassType = TSimpleDataSet then
      begin
           x:=TStringList.Create;
           x.Clear;
           x.text:=Query.DataSet.CommandText;
           Tabla:=copy(x[1],pos(' ',x[1])+1,length(x[1])-(pos(' ',x[1])));
           ClaveP:=0;
           Try
              Consulta.SQL.Text:='DESCRIBE '+Tabla;
              Consulta.Open;
              while not Consulta.eof do
              Begin
                   If Consulta.Fields[3].AsString <> ''
                   then
                   Begin
                        Inc(ClaveP);
                        CampoClave[ClaveP]:=Consulta.Fields[0].AsString;
                   end;
                   Consulta.next;
              end;
 
              NombreIndice:='';
              MYNombreIndice:='';
              for CONTADOR:=1 to ClaveP do
              Begin
                   if CONTADOR > 1 then
                   Begin
                        NombreIndice:=NombreIndice+' and ';
                        MYNombreIndice:=MYNombreIndice+' and ';
                   end;
                   NombreIndice:=NombreIndice+CampoClave[CONTADOR]+' = '
                     +Delimitador(Query,CampoClave[CONTADOR],True);
                   if not (Query.FieldByName(CampoClave[CONTADOR]).DataType
                     in [ftDate,ftTime,ftDateTime]) then
                       MyNombreIndice:=MyNombreIndice+CampoClave[CONTADOR ]+' = '
                         +Delimitador(Query,CampoClave[CONTADOR],true)
                   else
                   Begin
                        DecodeDate(Query.FieldByName(CampoClave[CONTADOR]).OldValue,a,m,d);
                        MYNombreIndice:=MYNombreIndice+CampoClave[CONTADOR]+' = '''
                          +IntTostr(a)+'-'+IntToStr(m)+'-'+IntToStr(d)+'''';
                   end;
              end;
 
              Consulta.SQL.Clear;
              Consulta.SQL.Add('Select *');
              Consulta.SQL.Add('From '+Tabla);
              Consulta.SQL.Add('Where '+NombreIndice);
              Consulta.Open;
              VClave:=Trim(Consulta.Fieldbyname(CampoClave[1]).asString);
              Consulta.close;
              Consulta.SQL.Clear;
 
              Nuevo:=false;
              try
                 // *C H E Q U E O   D E    N U E V O*
 
                 If Query.FieldByName(CampoClave[1]).DataType in [ftInteger,ftFloat,ftCurrency]
                 Then
                 Begin
                      FloatAux:=Query.FieldByName(CampoClave[1]).OldValue;
                 end
                 else
                 Begin
                      If Query.FieldByName(CampoClave[1]).DataType in [ftDate,ftTime,ftDateTime]
                      then FechaAux:=Query.FieldByName(CampoClave[1]).OldValue
                      else AuxSTR:=Query.FieldByName(CampoClave[1]).OldValue  ;
                 end;
              except
                    Nuevo:=true;
              end;
 
              If (Nuevo) and  (VClave <> '') then
              Begin
                   Showmessage('Error, Clave Duplicada, cambie la clave e intente Nuevamente');
              end
                 else
              Begin
                   If (VClave = '') then
                   Begin
                        Consulta.SQL.Add('Insert into '+Tabla);
                        Consulta.SQL.Add('(');
                        Consulta.SQL.Add('');
                        Consulta.SQL.Add('');
                        Consulta.SQL.Add('');
                        Consulta.SQL.Add('');
                        Consulta.SQL.Add('');
                        Consulta.SQL.Add('');
                        Consulta.SQL.Add('');
                        XX:=1;
                        for CONTADOR:=0 to Query.FieldCount - 1 do
                        BEGIN
                             TRY
                               IF LENGTH(Consulta.SQL[XX]) > 150 THEN INC(XX);
                               If (Query.Fields[contador].FieldKind = fkData) then
                               Begin
                                    if CONTADOR <> 0 then Consulta.SQL[XX]:=Consulta.SQL[XX]+','
                                      +Query.Fields[Contador].DisplayName
                                    else
                                      Consulta.SQL[XX]:=Consulta.SQL[XX]+Query.Fields[Contador].DisplayName;
                               end;
                             except
                             end;
                        end;
                        XX:=4;
                        Consulta.SQL[XX]:=Consulta.SQL[XX]+') Values (';
                        for CONTADOR:=0 to Query.FieldCount - 1 do
                        BEGIN
                             TRY
                               IF LENGTH(Consulta.SQL[XX]) > 200 THEN INC(XX);
                               If (Query.Fields[contador].FieldKind = fkData) then
                               Begin
                                    IF (Query.Fields[Contador].ASSTRING <> '') THEN
                                    Begin
                                         if CONTADOR <> 0
                                         then Consulta.SQL[XX]:=Consulta.SQL[XX]+','
                                           +Delimitador(Query,Query.Fields[contador].DisplayName,false)
                                         else Consulta.SQL[XX]:=Consulta.SQL[XX]
                                           +Delimitador(Query,Query.Fields[contador].DisplayName,false);
                                    end
                                       else
                                    Begin
                                         Consulta.SQL[XX]:=Consulta.SQL[XX]+',Null';
                                    end;
                               end;
                             except
                             end;
                        end;
                        Consulta.SQL[6]:=Consulta.SQL[6]+')';
                        //Showmessage(Consulta.SQL.Text);
                        Consulta.ExecSQL;
                   end
                       else
                   Begin
                        Consulta.SQL.Clear;
                        Consulta.SQL.Add('Update '+Tabla+' Set ');
                        for CONTADOR:=0 to Query.FieldCount - 1 do
                        BEGIN
                             If (Query.Fields[contador].FieldKind = fkData) then
                             Begin
                                  If (Query.Fields[contador].AsString <> '')
                                  then
                                  Begin
                                       if Consulta.SQL.Count = 1
                                       then Consulta.SQL.Add(Query.Fields[contador].DisplayName+' = '
                                         +Delimitador(Query,Query.Fields[contador].DisplayName,false))
                                       else Consulta.SQL.Add(','+Query.Fields[contador].DisplayName+' = '
                                         +Delimitador(Query,Query.Fields[contador].DisplayName,false));
                                  end
                                     else
                                  Begin
                                       if Consulta.SQL.Count = 1
                                       then Consulta.SQL.Add(Query.Fields[contador].DisplayName+' = Null')
                                       else Consulta.SQL.Add(','+Query.Fields[contador].DisplayName+' = Null')
                                  end;
                             end;
                        END;
                        Consulta.SQL.Add('Where '+NombreIndice);
                        Consulta.ExecSQL;
                        //Aplica Integridad Referencial para  acmbios en Cascada
                        try
                           Consulta.SQL.Text:='Select * from system_ir where Tabla = "'+UPPERCASE(Tabla)+'"';
                           Consulta.Open;
                           OKRef:=True;
                           with TSQLQuery.Create(nil)do
                           Begin
                                SQLConnection:=Consulta.SQLConnection;
                                while not Consulta.eof do
                                Begin
                                     Tabladestino:=Consulta.fieldByname('Tabla_Destino').AsString;
                                     CampoOrigen:=Consulta.fieldByname('Campo_Origen').AsString;
                                     CampoDestino:=Consulta.fieldByname('Campo_Destino').AsString;
 
                                     If Consulta.fieldByname('Condicion').AsString = '' then
                                       SQL.Text:='Update '+Tabladestino+' set '+CampoDestino+' = '
                                         +Delimitador(Query,CampoOrigen,false)+' where '+CampoDestino+' = '
                                           +Delimitador(Query,CampoOrigen,True)
                                     else
                                     Begin
                                          Condicion:=Consulta.fieldByname('Condicion').AsString;
                                          If pos('= :', Condicion) = 0
                                          then CondicionOK:=Condicion
                                          else
                                          begin
                                               While pos('= :', Condicion) <> 0 do
                                               Begin
                                                    CondicionOK:=Copy(Condicion,1,Pos('= :', Condicion)+1);
                                                    Condicion:=Copy(Condicion,Pos('= :', Condicion)+3,
                                                      length(Condicion)-(Pos('= :', Condicion)+2));
                                                    If Pos(' ',Condicion) = 0
                                                    then
                                                    Begin
                                                         Campo:=Condicion;
                                                         Condicion:='';
                                                    end
                                                    else
                                                    Begin
                                                         Campo:=copy(Condicion,1,pos(' ',Condicion)-1);
                                                         Condicion:=copy(Condicion,pos(' ',Condicion)+5,
                                                           length(Condicion)-pos(' ',Condicion)+5);
                                                    end;
                                                    CondicionOK:=CondicionOK+Delimitador(Query,Campo,True);
                                               end;
                                               If Condicion <> '' then CondicionOK:=CondicionOK+Condicion;
                                          end;
 
                                          SQL.Text:='Update '+Tabladestino+' set '+CampoDestino+' = '
                                            +Delimitador(Query,CampoOrigen,false)+' where '+CampoDestino+' = '
                                              +Delimitador(Query,CampoOrigen,True)+' and '+CondicionOK;
                                          //Showmessage(SQL.Text);
                                     end;
                                     ExecSQL;
                                     Consulta.Next;
                                end;
                                Free;
                           end;
                        except
                              OKRef:=False;
                        end;
                        If not OKRef then Showmessage('Error de I.R');
                   end;
              end;
         If Refresca then
         Begin
              Rec_no:=query.RecNo;
              query.Close;
              query.Open;
              Query.MoveBy(Rec_no-1);
         end;
         except
               Showmessage('Error: Mostrar este mensage a su administrador:'+#13+Consulta.SQL.Text);
         end;
      end;
 end;
 
 
 Function TFrm_main.Apply_Delete(Query:TSimpleDataset):Boolean;
 var x:TStringList;
     Tabla,NombreIndice,MYNombreIndice:String;
     CampoClave:Array[1..7]of string;
     ClaveP,CONTADOR:Integer;
     a,m,d:Word;
 
 Begin
      Result:=False;
      If Query.ClassType = TSimpleDataSet then
      begin
           x:=TStringList.Create;
           x.Clear;
           x.text:=Query.DataSet.CommandText;
           Tabla:=copy(x[1],pos(' ',x[1])+1,length(x[1])-(pos(' ',x[1])));
           ClaveP:=0;
           Try
              Consulta.SQL.Text:='DESCRIBE '+Tabla;
              Consulta.Open;
              while not Consulta.eof do
              Begin
                   If Consulta.Fields[3].AsString <> ''
                   then
                   Begin
                        Inc(ClaveP);
                        CampoClave[ClaveP]:=Consulta.Fields[0].AsString;
                   end;
                   Consulta.next;
              end;
 
              NombreIndice:='';
              MYNombreIndice:='';
              for CONTADOR:=1 to ClaveP do
              Begin
                   if CONTADOR > 1 then
                   Begin
                         NombreIndice:=NombreIndice+' and ';
                         MYNombreIndice:=MYNombreIndice+' and ';
                   end;
                   NombreIndice:=NombreIndice+CampoClave[CONTADOR]+' = '
                     +Delimitador(Query,CampoClave[CONTADOR],True);
                   if not (Query.FieldByName(CampoClave[CONTADOR]).DataType
                     in [ftDate,ftTime,ftDateTime]) then MyNombreIndice:=
                       MyNombreIndice+CampoClave[CONTADOR ]+' = '
                         +Delimitador(Query,CampoClave[CONTADOR],True)
                   else
                   Begin
                        DecodeDate(Query.FieldByName(CampoClave[CONTADOR]).AsDateTime,a,m,d);
                        MYNombreIndice:=MYNombreIndice+CampoClave[CONTADOR]+' = '''
                          +IntTostr(a)+'-'+IntToStr(m)+'-'+IntToStr(d)+'''';
                   end;
              end;
 
              Consulta.SQL.Clear;
              Consulta.SQL.Add('Delete ');
              Consulta.SQL.Add('From '+Tabla);
              Consulta.SQL.Add('Where '+NombreIndice);
              Consulta.ExecSQL;
              Apply_Delete:=True;
           Except
                 Apply_Delete:=False;
           end;
      end;
 end;
__________________
^_^

http://stna.cl

Última edición por dec fecha: 07-11-2005 a las 16:38:27. Razón: ¡¡Encerrad el código fuente entre las etiquetas [DELPHI] ... [/DELPHI]!!
Responder Con Cita
  #6  
Antiguo 07-11-2005
chileno chileno is offline
Miembro
 
Registrado: jun 2005
Posts: 121
Poder: 19
chileno Va por buen camino
zeosdbo-6.1.5-stable bajate ese archivo y sus dos parches
http://sourceforge.net/project/showf...group_id=35994 busca en esa direccion despues guiate por el post de ROMAN
Responder Con Cita
  #7  
Antiguo 07-11-2005
Avatar de dec
dec dec is offline
Moderador
 
Registrado: dic 2004
Ubicación: Alcobendas, Madrid, España
Posts: 13.107
Poder: 34
dec Tiene un aura espectaculardec Tiene un aura espectacular
Hola,

fredo, a lo mejor estás esperando que te diga que después de más de 100 mensajes en estos Foros debes conocer la existencia de la etiqueta DELPHI, ¿verdad que sí? Por favor, edita tu mensaje y haz uso de dicha etiqueta. Si lo ves oportuno, y puesto que es código lo suficientemente extenso, también sabrás que puedes añadirlo como un archivo adjunto a tu mensaje: incluso al de más arriba, ya publicado, puesto que como usuario registrado puedes editar tus mensajes. Muchas gracias.
__________________
David Esperalta
www.decsoftutils.com
Responder Con Cita
  #8  
Antiguo 07-11-2005
Avatar de fredo
fredo fredo is offline
Miembro
 
Registrado: oct 2003
Ubicación: Chile, Valparaiso
Posts: 318
Poder: 21
fredo Va por buen camino
sorry, la verdad n lo habia cachado.... pero ahi lo ordene, no cae como archivo adjunto por su peso....
__________________
^_^

http://stna.cl
Responder Con Cita
  #9  
Antiguo 07-11-2005
onlytk onlytk is offline
Miembro
 
Registrado: oct 2005
Posts: 53
Poder: 19
onlytk Va por buen camino
Componente MySQL

existe un buen componente que es el que uso, es para conecciones con base de datos MySQL, y no necesita de ninguna dll al distribuir tu programa. este componente es DAC for MySQL TM, yo lo descargue con el eMule, tengo la version 2.x pero al parecer hay mas versiones es pagado pero esta bueno, salu2.
Responder Con Cita
  #10  
Antiguo 07-11-2005
elguille elguille is offline
Miembro
 
Registrado: ene 2005
Posts: 114
Poder: 20
elguille Va por buen camino
Los mejores componentes son MYDAC de corelab. Van por la versión 4 .

http://www.crlab.com
Responder Con Cita
  #11  
Antiguo 07-11-2005
soto soto is offline
Miembro
 
Registrado: oct 2005
Posts: 17
Poder: 0
soto Va por buen camino
bueno, les comento que lo pude hacer andar, así que gracias a todos.
Pero ahora tengo otro problema y es que no puedo hacer ni una simple consulta de sql.
Agregué las tablas a MySQL y desde Delphi las veo, pero no puedo realizar un insert.
Puse un tzconection con mi base de datos(pepe) y un query, pero nada anda. Ni siquiera puedo mostrar los datos...

Si me ayudan, muchas gracias y sino también

Edit: en este post está la solución, perdón por molestar

http://www.clubdelphi.com/foros/show...ht=zeos+enlace

Última edición por soto fecha: 07-11-2005 a las 19:42:56.
Responder Con Cita
  #12  
Antiguo 07-11-2005
chileno chileno is offline
Miembro
 
Registrado: jun 2005
Posts: 121
Poder: 19
chileno Va por buen camino
hola ...
haz una prueba simple

coloca el componente ZConnection en una Ficha y dale valores a las propiedades:
DataBase = "nombre de la base datos"
HostName = LocalHost "si la base de datos esta en el mismo pc"
PassWord = "la contraseña del root o de un usuario"
Protocol = mysql-4.0 "depende de la version de tu base datos"
User = "el nombre del root o un usuario "
connected = true
con esto debiera conectarse tu aplicacion de prueba. ahora pon en la ficha un objeto ZQuery, basicamente hay tres propiedades que debes tarbajar, la primera es:
Connection = "El ZConnection"
RequestLive := true
SQL = "aca debes colocar un sentencia SQl"

si tu problema es SQL coloca esto: SELECT * FROM <nombre de una tabla>
si tienes una tabla empleados quedaria asi:

SELECT * FROM EMPLEADOS

ya colocado tu sentecia sql dale true a la propiedad Active de tu On¡bjeto Zquery si todo va bien ahi
pon en tu ficha un componente DataSource y un DBGrid con esto deberias ver la informacion de la tabla.
Responder Con Cita
  #13  
Antiguo 08-11-2005
soto soto is offline
Miembro
 
Registrado: oct 2005
Posts: 17
Poder: 0
soto Va por buen camino
chileno, estoy agradecido. Pero ya pude hacer andar todo. Aunque me queda una duda, yo ni pelota le di a requestLive. Para que es eso??

Muchas gracias capo1!! A todos!
Responder Con Cita
  #14  
Antiguo 08-11-2005
chileno chileno is offline
Miembro
 
Registrado: jun 2005
Posts: 121
Poder: 19
chileno Va por buen camino
haz tu mismo la prueba dale a false a la propiedad requestlive y trata de insertar o midificar un registro¡¡¡¡
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


La franja horaria es GMT +2. Ahora son las 13:55:36.


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