PREGUNTAS CONTESTADAS - FoxPro/Visual FoxPro

 Hay un total de 1456 Preguntas.<<  >> 

    Pregunta:  30572 - PROBLEMA DE PERFORMANCE CON FOXPRO Y SCO UNIX
Autor:  Ydo Aguero
Alguien podria ayudarme en solucionar el problema de velocidad (performance) cuando genero listados en FoxPro 2.6 para sco unix?
que parametros deveria de modificar (revisar)?
  Respuesta:  gustavo ramos
Tu inquietud es un poco confusa, ya que el performance de la impresora esta en funcion de su velocidad de fabrica, en fox para sco la salida la envia a un archivo y lo libera este al sistema operativo(esto es en forma transparente) y es en el sistema operativo en donde defines el tipo de "impresora" para que a su vez lo envie al dispositivo de salida en este caso la impresora.
Por favor se un poco mas especifico y si puedo ayudarte lo hare con gusto
Saludos...

    Pregunta:  30585 - FUNCION DE MESES DE 30 DIAS. CALCULOS FINANCIEROS
Autor:  MANUEL ALFREDO LINARES MANRIQUE
Necesito que me hagan el favor y me informen si existe en visual foxpro una función o comando, para manejar meses exactos de 30 dias. Es para calculos financieros. Por ejemplo , tomar a febrero con 30 dias y sumarle 150 dias. Gracias por su colaboración
  Respuesta:  David Fúnez
Te recomiendo crear una tabla aparte con lo meses del año asi:

tabla meses.dbf

mes nombre días
***** ********* *****
1 enero 30
2 febrero 30
3 marzo 30
.....
12 diciembre 30

asi tendras contra que hacer tus comparaciones.

Espero te sirva.

    Pregunta:  30618 - BASURA EN LA INFORMACIóN EN LAS TABLAS DE TIPO DBF
Autor:  Roger Navia Pérez
Hola.-
Por favor si alguien pueda colaborarme en un pequeño problema que tengo:

1.- He desarrollado un Sistema Completo para el control académico de Colegios y Escuelas, manejo cualquier cantidad de tablas relacionadas entre si.
2.- De un tiempo a esta parte la información introducida apareció con basura en algunos archivos.
3.- He revisado si el problema era a consecuencia de algún VIRUS, pero no fué así.
4.- En algunos campos la información está completa, pero en otros se encuentra con basura.

No se cual fué la causa para que suceda este problema.
Lo puedo solucionar en forma individual por cada registro, pero eso me llevará mucho tiempo, necesito saber cual fué la causa de este problema.

GRACIAS.
  Respuesta:  Luis Falconi
El Problema que tu tienes puede ser a causa de la transferencia de información de la red, ya que a mi tambien que ocurrio cuenado instale un programa en un lugar donde la transferencia de información era muy rapida, la solucion fue instalar tarjetas de red de 100 BaseT (en vez de 10 BaseT), un hub tambien de 100 BaseT (pueden see tcom), y utilizar un cableado estructurado.
  Respuesta:  anger p
Primeramente si lo tienes como sistema para redes cliente-servidor el problema (>>>>podria<<<) estar en la configuracion de la misma, ya que si genera trafico o cuellos de botella puede hacer que parte del paquete de informacion quede rondeando por la red indefinidamente. sin llegar a su destino establecido

En caso contrario de ser un sistema monousuario, debes depurar la lineas de codigo del proceso de actualizacion (Guardar) ya que puedes estar odbiando parte de la programacion basica del proceso.

Si estas usando Scatter,gatter (le aconsejo que tengo experiencias con sistemas (en ambiente cliente-servidor) que han dado problemas similares a los que tu tienes ... Particularmente usaria el {replace} ya que tu sabes que solo esta guardando una sola variable que esta almacenada en el buffer del teclado y no un cojunto de variables almacenadas en memoria que quien sabe que cuanto hay almacenado temporalmente

si no has realizado pruebas pilotos lo mas seguro es que el sistema quedo mal desarrollado a nivel de diseño o programacion (aunque exite la posibilida de que parte de los campos faltantes no sean requeridos obligatoriamente y estan ciendo obiados por el operador del sistema.

Espero aberlo ayudado, en caso de cualquier duda, puede enviarme un e-mail, que con gusto le colaboro.

    Pregunta:  30638 - UTILIZAR LOS COMANDOS COMMIT Y ROLLBACK CON MYSQL
Autor:  Laura Núñez
Estoy haciendo un sistema en VFox que accesa una base de datos MYSQL, y necesito utilizar los comandos Commit y Rollback, pero como MySQL no es transaccional me graba cada cambio que hago.

Si alguien sabe como hacer para trabajar con estos comando le agradecería mucho la ayuda, traté con sqlsetprop() pero no me funciona.
  Respuesta:  Pedro Camargo
Te mando un ejemplo de como genero un nuevo registro o actualizo un registro, utilizando transacciones.
Espero se de tu ayuda.

If Empty( ThisForm.txt_nompa.Value )
MessageBox( 'Faltan Datos en Pantalla', 0+16, 'Aviso ...' )
ThisForm.txt_codpa.Setfocus
Return
Endif
nx = Sqlconnect( 'dns_misdatab' )
IF nx <= 0
MessageBox( 'Error de Conexión SQL.', 16, 'MAGNO Plus.' )
Return
Endif
nx1 = Sqlexec( nx, 'Select * From filepaga Where codem_f = ?cCodEmp And codpa_f = ?ThisForm.txt_codpa.Value', 'crssql' )
If nx1 < 0
MessageBox( 'Error en Sentencia SQL.', 16, 'MAGNO Plus.' )
Sqldisconn(1)
Return
Endif
If Reccount() = 0
nx1= Sqlexec( nx, 'Begin' )
nx1= Sqlexec( nx, 'Insert Into filepaga (codem_f,codpa_f,nompa_f,dirpa_f,telpa_f,ciupa_f,caspa_f,cdepa_f,tippa_f,'+;
'fpapa_f,fafpa_f,embpa_f) Values (?cCodEmp,?ThisForm.txt_codpa.Value,?ThisForm.txt_nompa.Value,'+;
'?ThisForm.txt_dirpa.Value,?ThisForm.txt_telpa.Value,?ThisForm.txt_ciupa.Value,?ThisForm.txt_caspa.Value,'+;
'?ThisForm.cmb_cdepa.Value,?ThisForm.cmb_tippa.Value,?ThisForm.cmb_fpapa.Value,?ThisForm.txt_fafpa.Value,'+;
'?ThisForm.chk_embpa.Value)' )
If nx1 < 0
MessageBox( 'Error en Sentencia SQL al Insertar en [FILEPAGA]', 16, 'MAGNO Plus.' )
nx1 = Sqlexec( nx, 'Rollback' )
Sqldisconnect(1)
Return
Endif
nx1= Sqlexec( nx, 'Commit' )
Else
nx1 = Sqlexec( nx, 'Begin' )
nx1 = Sqlexec( nx, 'Update filepaga Set nompa_f=?ThisForm.txt_nompa.Value,dirpa_f=?ThisForm.txt_dirpa.Value,'+;
'telpa_f=?ThisForm.txt_telpa.Value,ciupa_f=?ThisForm.txt_ciupa.Value,caspa_f=?ThisForm.txt_caspa.Value,'+;
'cdepa_f=?ThisForm.cmb_cdepa.Value,tippa_f=?ThisForm.cmb_tippa.Value,fpapa_f=?ThisForm.cmb_fpapa.Value,'+;
'fafpa_f=?ThisForm.txt_fafpa.Value,embpa_f=?ThisForm.chk_embpa.Value '+;
'Where codem_f = ?cCodEmp And codpa_f = ?ThisForm.txt_codpa.Value' )
If nx1 < 0
MessageBox( 'Error en Sentencia SQL al Actualizar en [FILEPAGA]', 16, 'MAGNO Plus.' )
nx1 = Sqlexec( nx, 'Rollback' )
Sqldisconnect(1)
Return
Endif
nx1 = Sqlexec( nx, 'Commit' )
Endif
Sqldisconnect(1)
MessageBox( 'AVISO.'+Chr(13)+'Registro Grabado OK.', 0+64, 'MAGNO Plus.' )
  Respuesta:  Raul Villaverde villaverde
Hola que tal ?
la version de Mysql 3.24.46a (o algo parecido, ultima disponible) ya soporta transacciones y la version 4.1 soportara procedimientos almacenados de hecho las ayudas disponibles que tienes, al instalar Mysql ya figuran las instrucciones BEGIN/COMMIT/ROLLBACK, hasta aqui las buenas noticias ahora un poco de las otras.
Tengo el mismo problema con VFP-Mysql hace un mes que estoy tratando de solucionarlo y no lo consigo, me acepta como validos el
BEGIN Y COMMIT pero me rechaza el ROLLBAK y no consigo que deshaga los cambios hechos sobre los registros.
He puesto preguntas en cuanto foro he encontrado pero nadie me responde sobre el tema, sinceramente estoy a punto de descartar la
conbinacion de trabajo VFP-Mysql y utilizar tablas de fox, te pido por favor si tenes alguna noticia sobre el tema, pudieras si no es mucha molestia ponerme al tanto.

Desde ya muchas gracias y lamento no haberte podido ayudar.

Raul Villaverde
[email protected]

    Pregunta:  30649 - CONVERTIR BMP A JPG
Autor:  Marlon Villaverde
Actualmente necesito capturar la pantalla de un equipo o estacion para visualizarla en otro equipo central. El problema que trengo es que con la API de window capturo la imagen de formato BMP, pero para enviarla por un socket, necesito convertirla a JPG para disminuir tamaño. Si alguien me puede decir como convertir al archivo BMP a JPG, se lo agradecere bastantye
  Respuesta:  carlos zela
MIRA AMIGO NO ENTIENDO MUY BIEN LO QUE INVENTAS, PERO TE DIRE ALGO... SI TIENES EL OFFICE, CUALQUIER OFFICE QUE TENGAS EN EL PROGRAMA DE Microsft Photo Editor, QUE EL OFFICE TIENE HAY OPCIONES COMO RE-GUARDAR ESTAS IMAGENES BMP A FORMATO JPG, PERO SI TIENES ALGUNA DUDA SOBRE MI SUGERENCIA, ESTOY EN EL MESSENGER OSEA EN EL MSN, CON ESTE MISMO CORREO POR SI ME QUIERES CONTACTAR POR MEDIO DE CHAT... OK-.-- NOS VEMOS Y SUERTE

    Pregunta:  30650 - COMO GRABAR DATOS EN ARCHIVOS DE TEXTO
Autor:  BRANDON TORRES
HOLA , DESEO SABER COMO GUARDAR DATOS EN vfp, EXISTE ALGUNA FUNCION COMO LA WRITE DE V BASIC??? ESPERO SU AYUDA Y MUCHAS GRACIAS
  Respuesta:  jose de jesus ramirez aviles
es lo mas facil del mundo

arc=fopen('c:\miarchivo') &&abrimos el archivo mandando el nombre a una variable
Fseek (arc,0,2)
FPUTS(arc,variables o lo que quieras) && va al final y escribe lo que quieras retornando el carro como una maquina de escribir
Fclose(arc)

FOPEN(cNombreArchivo [, nAtributo])
nAtributo Privilegios de lectura-escritura Con búfer/Sin búfer
0 Sólo lectura (predeterminado) Con búfer
1 Sólo escritura Con búfer
2 Lectura y escritura Con búfer
10 Sólo lectura Sin búfer
11 Sólo escritura Sin búfer
12 Lectura y escritura Sin búfer

FCREATE(cNombreArchivo [, nAtributoArchivo])
nAtributoArchivo Atributos de archivo
0 (Predeterminado) Lectura/Escritura
1 Sólo lectura
2 Oculto
3 Sólo lectura/Oculto
4 Sistema
5 Sólo lectura/Sistema
6 Sistema/Oculto
7 Sólo lectura/Oculto/Sistema

FPUTS(nControladorArchivo, cExpresión [, nCaracteresEscritos])
Argumentos

nControladorArchivo

Especifica el numero de controlador del archivo o puerto de comunicaciones al que FPUTS( ) escribe datos.

cExpresión

Especifica la expresión alfanumérica que escribe FPUTS( ) en el archivo o puerto.

nCaracteresEscritos

Especifica el número de caracteres de cExpresión que se deben escribir en el archivo o puerto.
FPUTS( ) escribirá toda la expresión de caracteres cExpresión en el archivo o puerto en caso de que omita nCaracteresEscritos. Si incluye nCaracteresEscritos, escribirá en el archivo o puerto el número de caracteres indicado en nCaracteresEscritos. Si nCaracteresEscritos es menor que el número de caracteres de cExpresión, solamente se escriben en el archivo o puerto los caracteres especificados en nCaracteresEscritos. Si nCaracteresEscritos es igual o mayor que el número de caracteres en cExpresión, se escribe cExpresión completa en el archivo o puerto.


FWRITE(nControladorArchivo, cExpresión [, nCaracteresEscritos])

Argumentos

nControladorArchivo

FWRITE( ) escribe en el archivo o el puerto de comunicación especificado por el número de control de archivo.

cExpresión

FWRITE( ) escribe la expresión de tipo Carácter en el archivo o el puerto especificado con nControladorArchivo.

nCaracteresEscritos

FWRITE( ) escribe la expresión de tipo Carácter completa en el archivo o en el puerto de comunicación a menos que se incluya nCaracteresEscritos
. Cuando se incluye nCaracteresEscritos, se escriben nCaracteresEscritos caracteres en el archivo o puerto. Si nCaracteresEscritos es inferior al número de caracteres de cExpresión, únicamente se escribirán en el archivo o puerto nCaracteresEscritos caracteres. Si cExpresión es igual o mayor que el número de caracteres de nCaracteresEscritos, se escribirán todos los caracteres de cExpresión.

FCLOSE(nControladorArchivo)

Argumentos

nControladorArchivo

Especifica el controlador del archivo de bajo nivel que desea cerrar. El controlador numérico de archivo se devuelve al crear el archivo con FCREATE( ) o al abrirlo con FOPEN( ).
Si abre un puerto de comunicaciones mediante una función de archivo de bajo nivel, podrá cerrarlo especificando el controlador de archivo asignado al puerto.
En Visual FoxPro y en FoxPro para Windows no se pueden cerrar puertos mediante funciones de archivo de bajo nivel.
  Respuesta:  Aramis Ferrer
Si!, si existe, si tu problema es que no encuentras funciones de bajo nivel para grabar datos, por ejemplo, en un archivo de texto, entonces puedes utilizar las funciones de bajo nivel de VFP las cuales son:

FOPEN(), FREAD, FWRITE(), FSEEK(), FPUTS, entre las mas utilizadas

Por supuesto que hay mas.... y casi todas comienzan por la letra F.

    Pregunta:  30665 - MAS DE UNA LINEA EN EL MESSAGEBOX
Autor:  Leopoldo Villa Martinez
Estoy practicando el diseño de los messagebox, Pero quiero pedirles que por favor me Orienten porque no comprendí como se usa ó define el retorno de carro (CHR(13)) dentro del codigo. ó sea, ¿Qué debo hacer para diseñar un messagebox que muestre mas de un renglon en el mensaje?

Gracias de antemano, y un saludo desde México, d.f.
  Respuesta:  Leandro Alvarez
Colega, Hay te va un ejemplo
-----------------------------------------

=MESSAGEBOX(" Ahora el Sistema de Nóminas saldrá al Windows "+CHR(13)+" Vuelva el Entrar para verificar la Instalación ",64," Instalación de las Nóminas")
  Respuesta:  cARLOS nOE zELAYA
MIRA AMIGO ESO ASIMPLE VISTA PARACE CONFUSO, PERO ES PORQUE ESOS INEPTOS DE LA MICROSOFT, NUNCA DAN UNA COSA BUENA EN LOS EJEMPLOS Y SI LO DAN LO DAN A LA FUERZA, PERO TE DARE UN EJEMPLO PARA QUE VEAS COMO SE UTILIZA ESA COSA OK-.... AHIIIII VAMOS...

messageb("Linea1 "+chr(13)+"Linea2"+char(13)+"Linea3",0,"Nota:")
Ok... prueba ese ejemplo, o almenos alverlo creo que acatestes la idea verdad.. Ok... me alegra ... que pases buen dia---
  Respuesta:  jose de jesus ramirez aviles
messagebox('linea1'+chr(13)+'linea2'+chr(13)+'linea3',64,[titulo])

chr(13) &&indica que tiene que agregra otro

Muestra un cuadro de diálogo definido por el usuario.

Sintaxis

MESSAGEBOX(cTextoMensaje [, nTipoCuadroDiálogo [, cTextoBarraTítulo]])

Argumentos

cTextoMensaje

Especifica el texto que aparece en el cuadro de diálogo. Utilice un retorno de carro (CHR(13)) en cTextoMensaje para mover una parte del mensaje a la siguiente línea del cuadro de diálogo. La altura y la anchura del cuadro de diálogo aumentan lo que sea necesario para que quepa cTextoMensaje.

nTipoCuadroDiálogo

Especifica los botones y los iconos que aparecen en el cuadro de diálogo, el botón predeterminado cuando se muestra el cuadro de diálogo, y el comportamiento del mismo.
En las tablas siguientes, los valores 0 a 5 del botón del cuadro de diálogo especifican los botones que aparecen en el mismo. Los valores de icono 16, 32, 48 y 64 especifican el icono que aparece en el cuadro de diálogo. Los valores predeterminados 0, 256 y 512 especifican qué botón del cuadro de diálogo es el botón predeterminado. El botón predeterminado se selecciona cuando aparece el cuadro de diálogo.
Omitir nTipoCuadroDiálogo es lo mismo que especificar un valor de 0 para nTipoCuadroDiálogo.

Configuración Botones del cuadro de diálogo
0 Sólo botón "Aceptar".
1 Botones "Aceptar" y "Cancelar".
2 Botones "Anular", "Reintentar" e "Ignorar".
3 Botones "Sí", "No" y "Cancelar".
4 Botones "Sí" y "No".
5 Botones "Reintentar" y "Cancelar".
Configuración Icono
16 Punto.
32 Signo de interrogación.
48 Signo de exclamación.
64 Icono de información (i).
Configuración Botón predeterminado
0 Primer botón.
256 Segundo botón.
512 Tercer botón.
nTipoCuadroDiálogo puede ser la suma de hasta tres valores, uno de cada una de las tablas anteriores. Por ejemplo, si nTipoCuadroDiálogo es 290 (2+32+256), el cuadro de diálogo especificado tendrá las siguientes características:

· Botones "Anular", "Reintentar" e "Ignorar".
· El cuadro de mensaje muestra el icono del signo de interrogación.
· El segundo botón, "Reintentar", es el botón predeterminado.

cTextoBarraTítulo

Especifica el texto que aparece en la barra de título del cuadro de diálogo. Si omite cTextoBarraTítulo, en la barra de título aparecerá el título "Microsoft Visual FoxPro".

Tipos devueltos

Numérico

Comentarios

El valor que devuelve MESSAGEBOX( ) indica qué botón del cuadro de diálogo se ha elegido. En los cuadros de diálogo con un botón "Cancelar", al presionar la tecla ESC para salir del cuadro de diálogo se devolverá el mismo valor (2) que al elegir "Cancelar".
Observe que la abreviatura más corta para esta función es MESSAGEB( ).
La tabla siguiente muestra los valores que devuelve MESSAGEBOX( ) para cada botón.

Configuración devuelta Botón
1 Aceptar
2 Cancelar
3 Anular
4 Reintentar
5 Ignorar
6 Sí
7 No

Devuelve el carácter asociado al código ANSI numérico especificado.

Sintaxis

CHR(nCódigoANSI)

Argumentos

nCódigoANSI

Especifica un número entre 0 y 255 cuyo carácter ANSI equivalente devuelve CHR( ).
Utilice ASC( ) para devolver el valor ANSI de un carácter especificado.

Tipos devueltos

Carácter

Comentarios

CHR( ) devuelve un único carácter correspondiente a la posición numérica del carácter en la tabla de caracteres de la tabla de códigos actual. CHR( ) puede utilizarse para enviar códigos de control a una impresora.

espero te sirva si necesitas mas ayuda escribeme
  Respuesta:  marlon villaverde
Compañero, intenta con esta linea a ver si te funciona

a = Messagebox( "Esta es la primera linea que aparece" + chr(13) + "Esta es la segunda linea" + chr(13) + "Esta es la tercera linea" + chr(13) + "Esta es la cuarta linea", 30, "Mensaje" )

El segundo parametro (30 ), lo puse por ponerlo, puedes cambairlo segun tu criterio o necesidad
  Respuesta:  marlon villaverde
Compañero, intenta con esta linea a ver si te funciona

a = Messagebox( "Esta es la primera linea que aparece" + chr(13) + "Esta es la segunda linea" + chr(13) + "Esta es la tercera linea" + chr(13) + "Esta es la cuarta linea", 30, "Mensaje" )

El segundo parametro (30 ), lo puse por ponerlo, puedes cambairlo segun tu criterio o necesidad
  Respuesta:  Aramis Ferrer
el retorno de carro CHR(13) en la funcion de messagebox() se utiliza por ejemplo asi:

...
messagebox("Esta es una linea de"+CHR(13)+"texto myu larga que quiero separar"+CHR(13)+"en varias lineas para que se vea mejor",64,"titulo")
...

    Pregunta:  30721 - MOSTRAR IMAGENES .TIF SCANEADAS
Autor:  Edgar Paredes
Hola a todos.

Estoy desarrollando un proyecto y necesito mostrar imagenes que digitalice desde el scanner, lo cual ya hice, pero cuando deseo visualizar el archivo .tif resultante desde otro formulario me dice que el archivo es muy grande o tiene un formato incorrecto, utilizo un control de imagen y la ruta del archivo, lo curioso es que puedo ver los archivos de imagen (.jpg, .bmp, .ico) pero no los .tif del scanner.

Agradezco de antemano su ayuda... Gracias...
  Respuesta:  Cacho Sistemas
Quizás el control que usás no soporta ese formato. Fijate en la página de FoxPress, allí hay algo sobre el uso del control Image que viene con Windows.
  Respuesta:  henry vargas
existen unos controles activex de Kodak
uno es el control de digitalizacion de imagen de kodak y el otro el control de edicion de imagen de kodak.
para insertar estos controles en el formulario inserte un control ole y en el cuador de dialogo seleccione insertar control y en la lista busque estos alguno de los controles mencionados anteriormente e insertelos
con el control de digitalizacion de imagen de kodak me permite escanear en cualquier formato de imagen siempre y cuando tenga instalado un escaner a el debo asociarle en las propiedades el control de edicion de imagen de kodak que es donde se va a visualizar la imagen a digitalizar.
pruebe los controles y cacharrielos.
en mi concepto estos controloes son buenos para el manejo de graficas

    Pregunta:  30823 - OCULTAR UNIDAD DE DRIVE
Autor:  Eduardo Garcia
Hola Necesito saber como ocultar una unidad de drive como c: u cualquiera en el explorador de windows desde Visula Foxpro
  Respuesta:  Sergio Sanchez
Bien, esto lo he hecho usando programas como el Tweak Profesional, xqSystems (gratuito), Partition Magic. No desde Fox, pero lo que he observado es que hay que cambiar una linea en el registro de Windows para ocultar dichas unidades. Creo que en el programa de xqSystems, vienen los diferentes lineas de registro que se modifican para realizar alguna accion, con ello, se accesaria mediante una API al registro de Windows para cambiar dicho valor y la unidad quedaria oculta o mostrada. Checa las APIS tanto en www.portalfox.com como en www.universalthread.com y quiza haya algun codigo por ahi. De lo contrario primero necesitaras saber que linea de registro es la que hace referencia a las unidades y a continuacion manipularlas desde Fox.

    Pregunta:  30826 - NO SE PUEDE GENERAR DISCOS DE INSTALACIóN EN WINDOWS XP
Autor:  Mauricio Parra
Al tratar de generar los dicos de instalación de una aplicación que tengo desarrollada en FoxPro 2.6 para Windows, me genera el siguiente error " No hay alias REQUIRED", después de escoger el tipo de dicos, lo cual impiden su creación.
  Respuesta:  Sergio Sanchez
Esto es debido a que asi viene el asistente y no es problema de XP, me paso en Windows98. Tienes cerrados todos tus archivos? Incluido el Proyecto porque una vez me paso que lo tenia abierto y no funciono. De todas maneras, esto mismo me sucedio con VFP. Prueba cerrar todas tus tablas y regenerar el FoxUser.dbf.
Como tip, busca el programa GKSETUP que es gratuito y es un instalador muy profesional (casi tanto como InstallShield) y de una manera muy sencilla con lo que las instalaciones de tu software quedara mucho, mucho mas profesional. Yo lo utilizo y la diferencia es enorme en cuanto a FPW y VFP. Ya que te permite poner logos, controles, archivos, y personalizar tu instalacion con licencias, no. de serie, etc. etc. Buscalo a traves de www.download.com o www.google.com

|<  <<  89 90 91 92 93 94 95 96 97 98 99  >>  >|