Ir al contenido


Foto

Cómo ejecutar un archivo .ini


  • Por favor identifícate para responder
44 respuestas en este tema

#21 poliburro

poliburro

    Advanced Member

  • Administrador
  • 4.945 mensajes
  • LocationMéxico

Escrito 16 agosto 2011 - 12:53

Veré a ver que logro para hacer la conexión...lo que quiero es ejecutar el soft en cualquier pc.....probaré y les cuento


Si lo sigues haciendo apuntando al archivo simplemente no lo vas a conseguir, Debes hacerlo apuntando al servidor no al archivo.

:p Saludox
  • 0

#22 egostar

egostar

    missing my father, I love my mother.

  • Administrador
  • 14.448 mensajes
  • LocationMéxico

Escrito 16 agosto 2011 - 12:54

En esta página puedes ver varios ejemplos de ConnectionString para diferentes bases de datos.

Salud OS
  • 0

#23 amell2020

amell2020

    Advanced Member

  • Miembros
  • PipPipPip
  • 340 mensajes
  • LocationEn un solo Lugar

Escrito 16 agosto 2011 - 07:29

si es para SQL sever: SQL Server ODBC Connection String - Database Login
Driver={SQL Server};Server=myservername;Database=mydemodb;Uid=myusername;Pwd=mypasswd;
SQL Server ODBC Connection String - Trusted Connection
Driver={SQL Server};Server=mysername;Database=mydemodb;Trusted_Connection=yes;
SQL Server OLEDB Connection String - Database Login
Provider=sqloledb;Data Source=myservername;Initial Catalog=mydemodb;User Id=myusername;Password=mypasswd;
SQL Server OLEDB Connection String - Trusted Connection
Provider=sqloledb;Data Source=myservername;Initial Catalog=mydemodb;Integrated Security=SSPI;
SQL Server .Net Connection String - Database Login
Server=myservername;Database=mydemodb;User ID=myusername;Password=mypasswd;Trusted_Connection=False
SQL Server .Net Connection String - Trusted Connection
Server=myservername;Database=mydemodb;Integrated Security=SSPI;
 
  • 0

#24 lsedr

lsedr

    Advanced Member

  • Miembros
  • PipPipPip
  • 272 mensajes

Escrito 17 agosto 2011 - 11:59

si es para SQL sever:

delphi
  1. SQL Server ODBC Connection String - Database Login
  2. Driver={SQL Server};Server=myservername;Database=mydemodb;Uid=myusername;Pwd=mypasswd;
  3. SQL Server ODBC Connection String - Trusted Connection
  4. Driver={SQL Server};Server=mysername;Database=mydemodb;Trusted_Connection=yes;
  5. SQL Server OLEDB Connection String - Database Login
  6. Provider=sqloledb;Data Source=myservername;Initial Catalog=mydemodb;User Id=myusername;Password=mypasswd;
  7. SQL Server OLEDB Connection String - Trusted Connection
  8. Provider=sqloledb;Data Source=myservername;Initial Catalog=mydemodb;Integrated Security=SSPI;
  9. SQL Server .Net Connection String - Database Login
  10. Server=myservername;Database=mydemodb;User ID=myusername;Password=mypasswd;Trusted_Connection=False
  11. SQL Server .Net Connection String - Trusted Connection
  12. Server=myservername;Database=mydemodb;Integrated Security=SSPI;



Donde va esto, en la variable ConStr ??

No se donde colocar esa cadena de instrucciones...  :embarrassed:
  • 0

#25 lsedr

lsedr

    Advanced Member

  • Miembros
  • PipPipPip
  • 272 mensajes

Escrito 18 agosto 2011 - 12:27





delphi
  1. [BD]
  2. Path="C:\Clients2010\Mibase.MDF"





Es errónea la manera en que estás conectandote a Sql Server por lo siguiente:

1-  Las conexiones apuntan al servidor de base de datos, no a los archivos de datos.
2 - La conexión a la base de datos se realiza una vez conectado al servidor y la referencia es por el nombre de la base de datos nunca por el archivo.

Aclarados esos dos puntos la cadena de conexión en el componente TADOConnection debe quedar de la forma:

Provider=SQLNCLI;Data Source=.\INSTANCIASERVIDOR;Initial Catalog=NOMBREBASEDATOS;User Id=USUARIO;Password=PASSWORD;

Ahora bien. Puedes utilizar un archivo udl en lugar de un ini para armar tu cadena de conexión y almacenarla.


Cómo lo haria ? pues recuerda que mi objetivo es usar el soft en cualquier pc, y por eso necesito que se conecte a la BD de SQL server 2005, ya que cuando lo conecto con el Adoconecction y cambio el soft a otra pc me da error de conexion, entonces me gusta la idea de ejecutar un archivo .ini o con otra extension para que se produzca la conexion entre el soft y la bd...

gracias

  • 0

#26 amell2020

amell2020

    Advanced Member

  • Miembros
  • PipPipPip
  • 340 mensajes
  • LocationEn un solo Lugar

Escrito 18 agosto 2011 - 11:48

en provider del ADOConection que pusiste en el Datamodule.
  • 0

#27 Caral

Caral

    Advanced Member

  • Moderador
  • PipPipPip
  • 4.266 mensajes
  • LocationCosta Rica

Escrito 18 agosto 2011 - 12:15

Hola
INI:

[BD]
Path="C:\Clients2010\"
[Logon]
Auto="No"
Login=""
Pass=""

OnCreate del datamodule:


delphi
  1. procedure TDataModule1.DataModuleCreate(Sender: TObject);
  2. Var BaseDeDatos, ConStr : String;
  3.     IniFile: TIniFile;
  4. begin
  5.   IniFile := TIniFile.Create(ExtractFilePath(Application.ExeName)+'TUINI.ini');
  6.   BasedeDatos := IniFile.ReadString('BD','Path','');
  7. If BasedeDatos = '' then ShowMessage('Error al cargar Base de Datos');
  8.   ConStr := ' Provider = sqloledb; '+
  9.             ' Data Source = '+BaseDeDatos+';'+ // la direccion donde esta la BD
  10.             ' Initial Catalog = A ;'+    // A = al nombre de la BD
  11.             ' User Id = U; '+            // U = Al nombre del usuario
  12.             ' Password = C';              // C = a la clave o contraseña
  13.   AdoConnection1.ConnectionString := ConStr;
  14.   AdoConnection1  .Open;
  15. end;


Saludos
  • 0

#28 lsedr

lsedr

    Advanced Member

  • Miembros
  • PipPipPip
  • 272 mensajes

Escrito 18 agosto 2011 - 12:39

ahora se me perdio el instalador de sql server 2005 express edition

entre aqui y no se cual descargar

http://www.microsoft...&displaylang=es

cual descargo ?

  • 0

#29 lsedr

lsedr

    Advanced Member

  • Miembros
  • PipPipPip
  • 272 mensajes

Escrito 18 agosto 2011 - 12:45

Hola
INI:

[BD]
Path="C:\Clients2010\"
[Logon]
Auto="No"
Login=""
Pass=""

OnCreate del datamodule:


delphi
  1. procedure TDataModule1.DataModuleCreate(Sender: TObject);
  2. Var BaseDeDatos, ConStr : String;
  3.     IniFile: TIniFile;
  4. begin
  5.   IniFile := TIniFile.Create(ExtractFilePath(Application.ExeName)+'TUINI.ini');
  6.   BasedeDatos := IniFile.ReadString('BD','Path','');
  7. If BasedeDatos = '' then ShowMessage('Error al cargar Base de Datos');
  8.   ConStr := ' Provider = sqloledb; '+
  9.             ' Data Source = '+BaseDeDatos+';'+ // la direccion donde esta la BD
  10.             ' Initial Catalog = A ;'+    // A = al nombre de la BD
  11.             ' User Id = U; '+            // U = Al nombre del usuario
  12.             ' Password = C';              // C = a la clave o contraseña
  13.   AdoConnection1.ConnectionString := ConStr;
  14.   AdoConnection1  .Open;
  15. end;


Saludos


me sale este error, disculpa mis burradas caral 
Si mal no recuerdo, creo que no le puse contraseñas a la BD, estoy tratando de bajar el sql server 2005 express mas adecuado, pues este proyecto lo habia dejado por unos meses y en estos dias he vuelto a trabajar en el...

Archivos adjuntos


  • 0

#30 lsedr

lsedr

    Advanced Member

  • Miembros
  • PipPipPip
  • 272 mensajes

Escrito 18 agosto 2011 - 12:59

Tengo el sql desinstalado que lo habia quitado hace unos meses por falta de espacio y borre el instalador...

Puse entre comillas  la ruta e inició el programa pero me da este error de conexion:



Archivos adjuntos


  • 0

#31 Caral

Caral

    Advanced Member

  • Moderador
  • PipPipPip
  • 4.266 mensajes
  • LocationCosta Rica

Escrito 18 agosto 2011 - 01:03

  Hola
Vamos de cero:
1- El archivo INI que creaste TIENE que estar en el mismo directorio que el programa, osea el exe.
2- Del archivo INI se obtiene la direccion, para eso es.
3- Si no se tiene NI usuario, ni clave estos estan en BLANCO.
Intenta esto (SIN CAMBIAR NADA DE NADA), copia y pega.
A ver que error manda:


delphi
  1. procedure TDataModule1.DataModuleCreate(Sender: TObject);
  2. Var BaseDeDatos, ConStr : String;
  3.     IniFile: TIniFile;
  4. begin
  5.   IniFile := TIniFile.Create(ExtractFilePath(Application.ExeName)+'Inicio.ini');
  6.   BasedeDatos := IniFile.ReadString('BD','Path','');
  7. If BasedeDatos = '' then ShowMessage('Error al cargar Base de Datos');
  8.   ConStr := ' Provider = sqloledb; '+
  9.             ' Data Source = '+BaseDeDatos+';'+
  10.             ' Initial Catalog = MiBase.mdf ';   
  11. AdoConnection1.ConnectionString := ConStr;
  12.   AdoConnection1  .Open;
  13. end;


Saludos
  • 0

#32 lsedr

lsedr

    Advanced Member

  • Miembros
  • PipPipPip
  • 272 mensajes

Escrito 18 agosto 2011 - 01:09

  Hola
Vamos de cero:
1- El archivo INI que creaste TIENE que estar en el mismo directorio que el programa, osea el exe.
2- Del archivo INI se obtiene la direccion, para eso es.
3- Si no se tiene NI usuario, ni clave estos estan en BLANCO.
Intenta esto (SIN CAMBIAR NADA DE NADA), copia y pega.
A ver que error manda:


delphi
  1. procedure TDataModule1.DataModuleCreate(Sender: TObject);
  2. Var BaseDeDatos, ConStr : String;
  3.     IniFile: TIniFile;
  4. begin
  5.   IniFile := TIniFile.Create(ExtractFilePath(Application.ExeName)+'Inicio.ini');
  6.   BasedeDatos := IniFile.ReadString('BD','Path','');
  7. If BasedeDatos = '' then ShowMessage('Error al cargar Base de Datos');
  8.   ConStr := ' Provider = sqloledb; '+
  9.             ' Data Source = '+BaseDeDatos+';'+
  10.             ' Initial Catalog = MiBase.mdf ';   
  11. AdoConnection1.ConnectionString := ConStr;
  12.   AdoConnection1  .Open;
  13. end;


Saludos



El archivo .ini esta en la misma carpeta del programa, en C:\Clients2010

pege lo que me enviaste y este error me salio:

Archivos adjuntos


  • 0

#33 Caral

Caral

    Advanced Member

  • Moderador
  • PipPipPip
  • 4.266 mensajes
  • LocationCosta Rica

Escrito 18 agosto 2011 - 01:13

Hola
Pareciera que necesita usuario y clave, no lo se.
No puede conectar con la BD, se necesita autorizacion.
Pregunto:
Por que no cambias de BD a ACCESS, por lo menos momentáneamente, la conexion y todo sera lo mismo, pero podre guiarte con mucha mas propiedad.
Creo que para empezar access es la mejor alternativa.
Saludos
  • 0

#34 lsedr

lsedr

    Advanced Member

  • Miembros
  • PipPipPip
  • 272 mensajes

Escrito 18 agosto 2011 - 01:24

Hola
Pareciera que necesita usuario y clave, no lo se.
No puede conectar con la BD, se necesita autorizacion.
Pregunto:
Por que no cambias de BD a ACCESS, por lo menos momentáneamente, la conexion y todo sera lo mismo, pero podre guiarte con mucha mas propiedad.
Creo que para empezar access es la mejor alternativa.
Saludos


Caral dime algo, cual de estos tengo que descargar ?
http://www.microsoft...&displaylang=es

Porque alguien me borró de mi pc el instalador del SQL server 2005 express y no lo tengo instalado tampoco en esta pc, entonces necesito instalarlo para entrar a ver la BD a ver si yo le puse contrasena..

yo no sabia que para mezclar sql con delphi y conectar una BD había que hacer tanto show jejejeje

Quisiera cambiar a ACCES pero es que ya llevo un poco avanzado leyendo un tutorial de SQL server 2005 express y se me haría mas complicado.... pero...

- cuantos registros soporta ACCES ?
- qué tan solido es como base de datos ?
- estaría bien una BD de ACCES para hacer un programa de facturación para una empresa constructora de un amigo que me dijo que necesita que yo le haga ese soft y por lo menos hago el intento ??

  • 0

#35 Caral

Caral

    Advanced Member

  • Moderador
  • PipPipPip
  • 4.266 mensajes
  • LocationCosta Rica

Escrito 18 agosto 2011 - 01:50

Hola
En mi empresa trabaje hasta hace poco con access, ya tenia mas de 6 años funcionando, imagínate que cantidad de registros.
Estaba en RED y ocho ordenadores.
Para una empresa pequeña es una BD muy buena, la verdad a mi me gusta.
Ahora uso firebird pero mas que nada por que puedo entrar desde mi casa al programa.
Con relacion a que descargar no se con exactitud, nunca he trabajado con sql server, de hecho no lo conozco.
Saludos
  • 0

#36 lsedr

lsedr

    Advanced Member

  • Miembros
  • PipPipPip
  • 272 mensajes

Escrito 18 agosto 2011 - 01:56

Hola
En mi empresa trabaje hasta hace poco con access, ya tenia mas de 6 años funcionando, imagínate que cantidad de registros.
Estaba en RED y ocho ordenadores.
Para una empresa pequeña es una BD muy buena, la verdad a mi me gusta.
Ahora uso firebird pero mas que nada por que puedo entrar desde mi casa al programa.
Con relacion a que descargar no se con exactitud, nunca he trabajado con sql server, de hecho no lo conozco.
Saludos


ok caral te agradezco la explicación, me gustaria saber mas datos tecnicos sobre lo que aguanta ACCES y estudiare el tutorial tuyo sobre la facturacion, me pasas el link por aqui a ver que onda.

gracias...
cualquier otro colega que me puede ayudar con SQL server 2005 express, adelante muchachos, los espero...
  • 0

#37 Caral

Caral

    Advanced Member

  • Moderador
  • PipPipPip
  • 4.266 mensajes
  • LocationCosta Rica

Escrito 18 agosto 2011 - 02:04

Hola
Mira aqui y este video aqui.
No digo que te quedes con access, digo que para empezar entenderas mucho mejor todo con access que con otra bd.
Una vez que el programa camine y lo tengas listo simplemente cambias de BD y ya.
Ademas si lo tienes en access me pasas el programa la BD y te lo pongo a funcionar en menos de lo que canta un gallo. :D
Saludos
  • 0

#38 Jose_Augusto

Jose_Augusto

    Member

  • Miembros
  • PipPip
  • 35 mensajes

Escrito 18 agosto 2011 - 06:52

Hola,

siguiendo el hilo, la configuración que tengas de tu conexion en tiempo de diseño es reemplazada por la que leas de tu archivo ini, te recomiendo que cuando compiles o hagas tu archivo ejecutable cierres la conexion, para que asi tu aplicación no tenga una conexion activa cuando se ejecute por primera vez, eso me pasa cuando cambio algo en las tablas o consultas, automaticamente se activa o abre la conexion, cuando se genera el ejecutable y me lo llevo a otra computadora me sale error de conexion porque se queda configurada mi base de datos de prueba, claro esta, despues de unas lineas de codigo toma la base de datos que debe de ser y se conecta y funciona, pero me deja en mala posición el error de conexion del inicio. es por eso que cierro la conexion en tiempo de diseño.

por otro lado veo o mejor dicho que la mayoria de mis compañeros utilizan configuraciones por medio de archivos ini. yo prefiero usar el registro de windows. asi evito que me borren el archivo ini o que alguien con un poco mas de criterio vea información de más. si lo hago en el registro de windows es mas complejo que sepan en que parte y que variables pertenecen al sistema. te pongo en ejemplo de como se lee el registro para abrir la base de datos. porque la forma de guardar en el esta en otra parte de codigo.



delphi
  1. Reg3 := nil;
  2.   try
  3.   Reg3 := TRegistry.Create(KEY_QUERY_VALUE);
  4.   Reg3.RootKey :=HKEY_LOCAL_MACHINE;
  5.   if Reg3.OpenKey('\Software\Telycom\POS\Sucursal\Sitio',True) then
  6.   begin
  7.       try
  8.         Result := Reg3.ReadString('ServSit');
  9.         If Result <> '' then
  10.         Begin
  11.             Servidor:= Result;
  12.             FrmCfgAvanzada.EdServidorSucursal.Text:=Result;
  13.         End;
  14.  
  15.         Result := Reg3.ReadString('UsSit');
  16.         If Result <> '' then
  17.         Begin
  18.             sUsuario:= Result;
  19.             FrmCfgAvanzada.EdUsuarioSucursal.Text:=Result;
  20.         End;
  21.  
  22.         Result := Reg3.ReadString('RevSit');
  23.         If Result <> '' then
  24.         Begin
  25.             Contrasenia:= Result;
  26.             FrmCfgAvanzada.EdContraseniaSucursal.Text:=Result;
  27.         End;
  28.         Result := Reg3.ReadString('BDDSit');
  29.         If Result <> '' then
  30.         Begin
  31.             Base:= Result;
  32.             FrmCfgAvanzada.EdBaseSucursal.Text:=Result;
  33.         End;
  34.       except
  35.       Begin
  36.         Reg3.CloseKey;
  37.         FrmCfgAvanzada.ShowModal;
  38.         raise;
  39.       End;
  40.       end;
  41.       Reg3.CloseKey;
  42.     end else
  43.     Begin
  44.       FrmCfgAvanzada.ShowModal;
  45.       raise Exception.Create(SysErrorMessage(GetLastError));
  46.     end
  47.   except
  48.   Begin
  49.     FrmCfgAvanzada.ShowModal;
  50.     Reg3.Free;
  51.   end;
  52.     raise;
  53.   end;
  54.   Reg3.Free;
  55.  
  56.   Md.Conexion.ConnectionString:='Provider=SQLNCLI.1;Password=' + Contrasenia + ';Persist Security Info=True;User ID='+ sUsuario +';Initial Catalog='+ Base +';Data Source='+ servidor;
  57.  
  58.   MD.Conexion.Open;


cuando se genera un error porque las variables no existen en el registro de windows por ser la primera vez que se ejecuta la aplicación, abro la ventana de configuración para que se creen.

espero te sirva de ayuda
  • 0

#39 lsedr

lsedr

    Advanced Member

  • Miembros
  • PipPipPip
  • 272 mensajes

Escrito 18 agosto 2011 - 11:30

Hola,

siguiendo el hilo, la configuración que tengas de tu conexion en tiempo de diseño es reemplazada por la que leas de tu archivo ini, te recomiendo que cuando compiles o hagas tu archivo ejecutable cierres la conexion, para que asi tu aplicación no tenga una conexion activa cuando se ejecute por primera vez, eso me pasa cuando cambio algo en las tablas o consultas, automaticamente se activa o abre la conexion, cuando se genera el ejecutable y me lo llevo a otra computadora me sale error de conexion porque se queda configurada mi base de datos de prueba, claro esta, despues de unas lineas de codigo toma la base de datos que debe de ser y se conecta y funciona, pero me deja en mala posición el error de conexion del inicio. es por eso que cierro la conexion en tiempo de diseño.

por otro lado veo o mejor dicho que la mayoria de mis compañeros utilizan configuraciones por medio de archivos ini. yo prefiero usar el registro de windows. asi evito que me borren el archivo ini o que alguien con un poco mas de criterio vea información de más. si lo hago en el registro de windows es mas complejo que sepan en que parte y que variables pertenecen al sistema. te pongo en ejemplo de como se lee el registro para abrir la base de datos. porque la forma de guardar en el esta en otra parte de codigo.



delphi
  1. Reg3 := nil;
  2.   try
  3.   Reg3 := TRegistry.Create(KEY_QUERY_VALUE);
  4.   Reg3.RootKey :=HKEY_LOCAL_MACHINE;
  5.   if Reg3.OpenKey('\Software\Telycom\POS\Sucursal\Sitio',True) then
  6.   begin
  7.       try
  8.         Result := Reg3.ReadString('ServSit');
  9.         If Result <> '' then
  10.         Begin
  11.             Servidor:= Result;
  12.             FrmCfgAvanzada.EdServidorSucursal.Text:=Result;
  13.         End;
  14.  
  15.         Result := Reg3.ReadString('UsSit');
  16.         If Result <> '' then
  17.         Begin
  18.             sUsuario:= Result;
  19.             FrmCfgAvanzada.EdUsuarioSucursal.Text:=Result;
  20.         End;
  21.  
  22.         Result := Reg3.ReadString('RevSit');
  23.         If Result <> '' then
  24.         Begin
  25.             Contrasenia:= Result;
  26.             FrmCfgAvanzada.EdContraseniaSucursal.Text:=Result;
  27.         End;
  28.         Result := Reg3.ReadString('BDDSit');
  29.         If Result <> '' then
  30.         Begin
  31.             Base:= Result;
  32.             FrmCfgAvanzada.EdBaseSucursal.Text:=Result;
  33.         End;
  34.       except
  35.       Begin
  36.         Reg3.CloseKey;
  37.         FrmCfgAvanzada.ShowModal;
  38.         raise;
  39.       End;
  40.       end;
  41.       Reg3.CloseKey;
  42.     end else
  43.     Begin
  44.       FrmCfgAvanzada.ShowModal;
  45.       raise Exception.Create(SysErrorMessage(GetLastError));
  46.     end
  47.   except
  48.   Begin
  49.     FrmCfgAvanzada.ShowModal;
  50.     Reg3.Free;
  51.   end;
  52.     raise;
  53.   end;
  54.   Reg3.Free;
  55.  
  56.   Md.Conexion.ConnectionString:='Provider=SQLNCLI.1;Password=' + Contrasenia + ';Persist Security Info=True;User ID='+ sUsuario +';Initial Catalog='+ Base +';Data Source='+ servidor;
  57.  
  58.   MD.Conexion.Open;


cuando se genera un error porque las variables no existen en el registro de windows por ser la primera vez que se ejecuta la aplicación, abro la ventana de configuración para que se creen.

espero te sirva de ayuda


Usar el registro de windows se me hace mas dificil
  • 0

#40 Caral

Caral

    Advanced Member

  • Moderador
  • PipPipPip
  • 4.266 mensajes
  • LocationCosta Rica

Escrito 19 agosto 2011 - 02:16

Hola
Cambia el archivo ini, copia y pega esto y lo guardas:

[DI]
Path="C:\Clients2010\"
[BD]
BaseD="MiBase.mdf"
[US]
Name=" "
[PS]
Clave=" "

Ahora cambia el codigo del datamodule por este, copialo y pegalo:


delphi
  1. Var BaseDeDatos, ConStr, Base, User, Pass  : String;
  2.     IniFile: TIniFile;
  3. begin
  4.   IniFile := TIniFile.Create(ExtractFilePath(Application.ExeName)+'TUINI.ini');
  5.   BasedeDatos := IniFile.ReadString('DI','Path','');  //La direccion del INI
  6.   Base:= IniFile.ReadString('BD','BaseD','');        //La BD del INI
  7.   User:= IniFile.ReadString('US','Name','');          //El Usuario del INI
  8.   Pass:= IniFile.ReadString('PS','Clave','');        //La Clave del INI
  9.  
  10.   If BasedeDatos = '' then ShowMessage('Error al cargar Base de Datos');
  11.   ConStr := ' Provider = sqloledb; '+
  12.             ' Data Source = '+BaseDeDatos+';'+
  13.             ' Initial Catalog = '+Base+';'+
  14.             ' User Id = '+User+';'+
  15.             ' Password = '+Pass;
  16.   AdoConnection1.ConnectionString := ConStr;
  17.   AdoConnection1.Open;


Como ves ahora la direccion la BD el usuario y la clave estan en el archivo INI.
El programa lee el archivo ini y pasa los valores al datamodule.
A ver que dice ahora el error. :
Saludos
PD: Como ves no hay ni usuario ni clave, estan en blanco en el INI. (y)
  • 0




IP.Board spam blocked by CleanTalk.