Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Varios (https://www.clubdelphi.com/foros/forumdisplay.php?f=11)
-   -   Verificar si una imagen existe (https://www.clubdelphi.com/foros/showthread.php?t=34325)

Casimiro Notevi 07-08-2006 10:45:46

Cita:

Empezado por dec
Hola,
Vamos a ver, vamos a ver... ¿qué información técnica te parece un mensaje de error del tipo: "No se pudo abrir el archivo indicado. Por favor, asegúrese de que el mismo existe e inténtelo de nuevo. Contacte con el Servicio de Soporte si necesita ayuda. Disculpe las molestias".

¿Dónde está lo técnico ahí? Y nada te impide guardar (por otro lado) la información técnica que quieras para después poder consultarla si fuera menester. Como dices ahora:

Alto. Aquí no puedo estar más en desacuerdo (creando polémica) ;)

Dices que no mostrarías al usuario mensaje de error alguno... ni ninguna excepción... que le cierre el programa... pero, un momento, ¿las excepciones no existen, entre otras cosas, para evitar el bloqueo del programa y su cierre obligatorio?

Eso tengo entendido: el programa entra en estado de excepción, estas pueden controlarse y el programa puede continuar adelante (siempre que sea posible, claro está).

Pero, lo que me parece curioso es que no informes al usuario del error y pretendas que él se dé cuenta de que hubo algún problema porque el total de una factura no cuadra con las cuentas que estaba haciendo el usuario...

Eso me parece muy peligroso, en el sentido de que el usuario puede pulsar ENTER para cerrar la ventana que le muestra la factura y ni fijarse siquiera en el total... porque se fía del programa, que, en caso de observar algún problema le avisaría como está mandado. :D :D :D

El caso es que si no revisara "manualmente" el resultado (¿Pero no están para eso los programas?) y cerrara la supuesta ventana y el programa no le dijera nada... pudiera estarse guardando en la base de datos (o ni guardarse siquiera) datos erróneos... ¡y el usuario aún creerá que no pasa nada, que todo va bien!

Tú luego irías con tu "log" y le dirías, mira, aquí esta factura puede que no cuadre, porque resulta que un error que... "¿Qué error?", te respondería el usuario, "No, tú es que no lo viste, pero, efectivamente...", "¿Cómo que no lo ví? ¿Y qué dices? ¿Que esta factura no está bien? ¡Pero si está cursada (o como se diga) junto con las del mes pasado? ¿cómo no se me informó del problema?... ¡Llámenme al responsable de este desaguisado!" Y se oiría por ahí... ¡Casimiro, ha sido el puñetero de Casimiro! :D :D

Total, pabernosmatao. ;)

Evidentemente, mensajes "amigables" sí que se los muestro, el ejemplo de la factura no ha sido muy afortunado.
A donde quería llegar es que no sirve de nada sacarles mensajes con códigos, números ni nada que se salga del trabajo del usuario porque, simplemente, lo ignoran, como acaba de escribir Lepe, "Sí, sale un mensaje, pero lo quito y sigue funcionando".


dec 07-08-2006 11:02:40

Hola,

Según la leyenda (algo que leí hace tiempo no recuerdo en qué lugar) en el primer manual de los IBM PC (que ahora cumplen 25 años, parece ser) podía leerse lo siguiente:

Cita:

Los usuarios de ordenadores se dividen en dos grupos:

1º Los que han perdido alguna vez sus datos.
2º Los que están a punto de perder sus datos.
Esto se decía, parece ser, para tratar de concienciar de la importancia de hacer copias de seguridad. Ahora bien, sabiendo como se sabe que hay usuarios que pasan, literalmente, de las copias de seguridad (están a punto de perder sus datos), estas, las copias de seguridad, por supuesto, deben realizarse obligadamente, cosa que saben bien los usuarios del encajados en el primer grupo.

¿Que se cierran las ventanas con mensajes de error informativos muchas veces sin siquiera mirarlas? Es una realidad, yo mismo reconozco que lo he hecho y que lo haré en ciertas ocasiones, y, sin embargo, no creo que eso dé pie a eliminar los mensajes de error informativos,... ¿cuántas veces no te queda más remedio que pararte un momento y leer lo que esas ventanas dicen, porque intuyes la importancia del mensaje?

Otra leyenda dice que hay que tratar a los usuarios de programas de ordenador como tontos (dicho mal y pronto), porque no son informáticos, ni saben de informática (ni tienen por qué, digo yo), ni conocen los intríngulis de los programas, etc., etc., etc. Yo no estoy de acuerdo con esa opinión, como ya he dicho: prefiero tomar a los usuarios como inteligentes, lo suficiente para pensar que leerán los mensajes de error informativos y los prestarán atención. ¿A mí qué se me dá que haya usuarios tontos (todos, alguna vez, actuamos así)? Prefiero estar con los otros, con quienes sí se preocupan de esas cosas.

Además, como he dicho, tal vez pases alguna vez de esas ventanas de error, pero, amigo, entonces uno pasa a ser un poco responsable del problema existente con el programa, porque el programa está diciendo, "Hey, me ocurre esto, ¿sabes? No puedo continuar, presta atención, pide ayuda, haz lo que sea, pero, que sepas que no estoy haciendo bien mi trabajo". Si no se le advierte al usuario de los mensajes de error informativos estás condenando a todos los usuarios, a todos ellos, a no poder hacer nada... me parece que es lo de siempre: pagan justos por pecadores, por decirlo así.

Porque los mensajes de error informativos no están ahí por estar, ni se ponen para hacer bulto, ni nadie quisiera que aparecieran, pero, puesto que los programas no son perfectos (y los usuarios tal vez menos aún, yo me incluyo) es necesario informar de los problemas que topan, reaccionar ante estos, intentar "tratarlos" (¿mediante excepciones?), aprender de ellos, en fin, como dije por ahí arriba, pienso que esto puede ayudar al usuario del programa y a sus desarrolladores, proporcionándoles información muy útil. ¿Que alguien pasa de esa información? En parte entonces es su problema, ya aprenderá de la necesidad de hacer copias de seguridad... tal vez cuando se tarde, cuando pierda sus datos al menos una vez...

Cita:

Empezado por Casimiro
A donde quería llegar es que no sirve de nada sacarles mensajes con códigos, números ni nada que se salga del trabajo del usuario porque, simplemente, lo ignoran, como acaba de escribir Lepe, "Sí, sale un mensaje, pero lo quito y sigue funcionando".

Yo no he sido. O esa, yo nunca he dicho que al usuario hubiera de mostrársele mensajes del tipo "Excepción en el módulo X98237373, la memoria no se puede leer"... todo lo contrario. Al usuario hay que hablarle en su idioma... lo mismo que los menús de los programas no se llaman "Flujos de datos -> Leer un flujo de datos", sino "Archivo -> Abrir un archivo". Pero, cuando digo que al usuario hay que hablarle me refiero exactamente a eso: a tratar de mantener con él un diálogo comprensible acerca de qué está ocurriendo, acerca de los errores que se pueden producir y se producen. La idea es: hay gente que pasa de esos mensajes de error.

Pues muy bien, pero si el programa advierte, informa, especifica, quiere entablar un diálogo y un usuario pasa de él... luego se le podrá preguntar al usuario, ¿hiciste caso de lo que el programa te decía? "Ah, bueno, es que yo paso de los mensajes de error"... ¡que diga eso delante del jefe de turno en cualquier empresa que sepa del valor de su información digitalizada! En ese punto uno hasta podría decir, "pues son 10.000", porque de ese problema estábamos avisando, pero, si no se quiere hacer caso, como se reconoce, ¿qué quieren ustedes que hagamos?"...

No sé. Yo creo que mientras jugamos casi todo vale. Pero, cuando las cosas se ponen serias... decir "yo paso de los mensajes de error"... puede resultar causa de despido por incompetencia.

Casimiro Notevi 07-08-2006 11:31:28

Cita:

Empezado por dec
[...][...] Pues muy bien, pero si el programa advierte, informa, especifica, quiere entablar un diálogo y un usuario pasa de él... luego se le podrá preguntar al usuario, ¿hiciste caso de lo que el programa te decía? "Ah, bueno, es que yo paso de los mensajes de error"... ¡que diga eso delante del jefe de turno en cualquier empresa que sepa del valor de su información digitalizada! En ese punto uno hasta podría decir, "pues son 10.000", porque de ese problema estábamos avisando, pero, si no se quiere hacer caso, como se reconoce, ¿qué quieren ustedes que hagamos?"...

No sé. Yo creo que mientras jugamos casi todo vale. Pero, cuando las cosas se ponen serias... decir "yo paso de los mensajes de error"... puede resultar causa de despido por incompetencia.

Es que jamás van a reconocer que "pasa de los mensajes" y aún menos si le va a ocasionar problemas.
Lo normal es que siempre digan: "el programa falla", aunque el responsable sea el propio usuario

kuan-yiu 07-08-2006 11:46:41

Cita:

Empezado por Casimiro Notevi
Es que jamás van a reconocer que "pasa de los mensajes" y aún menos si le va a ocasionar problemas.
Lo normal es que siempre digan: "el programa falla", aunque el responsable sea el propio usuario

Amén... Una verdad como un mundo, por desgracia. Por eso yo suelo implementar sistemas de log ocultos, para rastrear los pasos de los usuarios y detectar cuando el fallo es suyo o de la aplicación.

dec 07-08-2006 11:52:35

Hola,

Cita:

Empezado por Casimiro
Es que jamás van a reconocer que "pasa de los mensajes" y aún menos si le va a ocasionar problemas.

Ya. Pero esa es una actitud infantil y a veces no se puede ir en contra de lo evidente. No colaría.

Si tú haces tu trabajo informando al usuario de los problemas y éste pasa de ti y de la información que le proporcionas... allá él. Tú hiciste tu trabajo. Que cada palo aguante su vela.

Cita:

Empezado por Kuan-Yiu
(...) yo suelo implementar sistemas de log ocultos, para rastrear los pasos de los usuarios y detectar cuando el fallo es suyo o de la aplicación.

Prefiero pensar que el programa está para ayudar, para sacarle partido... no está ahí para buscar culpables, ni de un lado ni de otro. Los mensajes de error y los "logs" no sirven, principalmente, para "acusar" a unos o a otros de los problemas, sino para intentar echar una mano a la hora de buscar soluciones para los problemas.

Y estos problemas pueden venir de varias fuentes: hardware, software, humanos... pero todos son problemas y no vale de nada decir, ah, no es culpa mía, acusando a otros, sino que habrá que tratar de solucionarlos, vengan de donde vengan.

Casimiro Notevi 07-08-2006 12:22:49

Cita:

Empezado por dec
Hola,
Ya. Pero esa es una actitud infantil y a veces no se puede ir en contra de lo evidente. No colaría.

Si tú haces tu trabajo informando al usuario de los problemas y éste pasa de ti y de la información que le proporcionas... allá él. Tú hiciste tu trabajo. Que cada palo aguante su vela.


Prefiero pensar que el programa está para ayudar, para sacarle partido... no está ahí para buscar culpables, ni de un lado ni de otro. Los mensajes de error y los "logs" no sirven, principalmente, para "acusar" a unos o a otros de los problemas, sino para intentar echar una mano a la hora de buscar soluciones para los problemas.

Y estos problemas pueden venir de varias fuentes: hardware, software, humanos... pero todos son problemas y no vale de nada decir, ah, no es culpa mía, acusando a otros, sino que habrá que tratar de solucionarlos, vengan de donde vengan.

Es que, por desgracia, además de para buscar soluciones a problemas, el .log hay que usarlo para "sacarte las castañas del fuego", incluso para registrar cuando se entra y se sale del programa. No sería la primera vez que intentan culparme (culparnos, a la empresa) exigiendo responsabilidades por problemas/fallos ocasionados por ellos mismos. Incluso, a veces, tras una rotura de un disco duro, un robo, etc. nos han culpado a nosotros por no mantener una copia de seguridad automática para prevenir esos posibles "fallos del programa".

Y es que hay gente para todo, y cuando se trata de "salvar el culo" hacen o dicen cualquier cosa.

Y con los años, a fuerza de golpes, he aprendido que tengo que mantener un registro de TODO lo que hagan los usuarios, aunque ellos no lo sepan, para en caso de necesidad, usarlo como "prueba del delito" y salvarme/nos (la empresa).

Hay mucha gente con muy "mala sangre" por ahí... y aunque te lleves muy bien con ellos y sea tu mejor cliente... a la hora de los problemas siempre suena un "¡¡¡ sálvese quien pueda!!!. Y hay que estar preparado.

P.D. Incluso envío el .log por FTP a un servidor de datos donde se van almacenando todos los .logs de los clientes.
Esto sí lo saben, por supuesto, "es para solucionarles problemas en caso de necesidad".

Lepe 07-08-2006 12:51:21

Cita:

Empezado por dec
No sé. Yo creo que mientras jugamos casi todo vale. Pero, cuando las cosas se ponen serias... decir "yo paso de los mensajes de error"... puede resultar causa de despido por incompetencia.

¿Y si es el propio jefe el que te habla así? ¿el mismo que te paga por el programa¿ :D :D

Normalmente, delante de otra gente dirá "que pasa de los mensajes" delante de tí dirá que no se acuerda de lo que decía, o simplemente te dice que no lo entendió.

Saludos

dec 07-08-2006 13:08:22

Hola,

Cita:

Empezado por Lepe
¿Y si es el propio jefe el que te habla así? ¿el mismo que te paga por el programa¿ :D :D

Normalmente, delante de otra gente dirá "que pasa de los mensajes" delante de tí dirá que no se acuerda de lo que decía, o simplemente te dice que no lo entendió.

... ¡pues cómo está el patio! :D :D :D

Casimiro Notevi 07-08-2006 13:35:55

Cita:

Empezado por dec
Hola,

... ¡pues cómo está el patio! :D :D :D

No lo sabes bien... Acaba de llamarme un cliente (muy cabreado) diciendo que "se le han colado una cantidad enorme de virus, no pueden trabajar y que lo solucionemos ya". Le he preguntado por el antivirus y me contesta que lo han deshabilitado porque no paraban de salir ventanas y así no podían trabajar :confused:.
Le he dicho que no es culpa mía/nuestra, que habrá que actualizar el antivirus, eliminar los que tenga, y volver a instalar el programa, etc... y ha contestado que "acabo de devolver el último recibo que os tengo que pagar, y no pienso pagarlo hasta que me soluciones este fallo":confused::confused::confused:

Y es que siempre es "fallo" del programa o de los programadores :D

Le he pasado una nota al jefe para que lo llame y se aclaren entre ellos, ahí ya, con dinero de por medio, yo no me meto.

egostar 07-08-2006 21:06:25

Hombre, para que tanto alboroto por los mensajes de error, si Microsoft nos da la mejor respuesta, aqui uno que tengo en mi visor de eventos.:mad:

Cita:


Aplicación con errores: iexplore.exe, versión: 7.0.5450.4, módulo con error: unknown, versión 0.0.0.0, dirección de error 0x05b79984.

Para obtener más información, vea el Centro de ayuda y soporte técnico en http://go.microsoft.com/fwlink/events.asp.


Los usuarios de windows estamos tan acostumbrados a estos mensajes, de que hay un error hay un error.:D :D :D

Asi que ya saben pongan su direccion para que les llamen o acudan a ustedes cuando tengan errores en sus aplicaciones.:D

Saludos.


roman 07-08-2006 21:21:54

Cita:

Empezado por egostar
Asi que ya saben pongan su direccion para que les llamen o acudan a ustedes cuando tengan errores en sus aplicaciones.:D

Bueno, ¿y si mejor ponemos la dirección de Microsoft? :D Es decir, cualquier error de nuestra aplicación lo mandamos a Microsoft. Total, le harán el mismo caso que a los de ellos (ninguno) y el usuario quedará con la idea de que el prblema está en MS :)

// Saludos

mamcx 08-08-2006 00:51:29

El problema del manejo de errores es muy interesante. Me voy a referir a lo que me parece mejor:


1. Un programa es un conjunto de errores, que coincidencialmente, da resultados.

Existen multiples capas de error entre la CPU y el usuario, y lo peor que puede pasar es un programa que no saque error.

Es pesimo, porque todo programa OBLIGATORIAMENTE tiene un error. Y si no lo tuviera, OBLIGATORIAMENTE la capa anterior lo TIENE que tener, por ejemplo, si es un exe, la capa anterior es el shell, de alli al OS, sistema de archivos, memoria, CPU, etc...

Si es una pagina Web, el error esta en la pagina. O en el navegador, o la comunicacion http o la de fondo tcp/ip o falla el DNS o lo tiene la version X del servidor Web, o en la seguridad o la Base de datos o el OS y de alli ya sabemos.

Muchos puntos de falla, donde nunca estan cubiertas todas las rutas de ejecucion.

Por lo tanto, una regla que he tenido es solo cubrir los casos esperados y dejar que el condenado programa falle en toda su gloria. Porque ya me ha tocado depurar software en donde arranco en un http GET, donde esta muy lento, luego descubro que el servidor DNS esta sobrecargado (pero el DNS se cachea, no? seria muy raro. Sin embarggo en este caso de este mes, la pagina era lenta el 25% del tiempo, 24*7), luego de pelear con los clientes y con una de las mejores firmas locales en manejo de redes donde cuestionaron el problema, nos vamos mozilla, corro por IE, volteo por el ISA server, las politicas de cacheo DNS de windows y en fin, fueron 8 puntos de falla en total que conspiraron todos juntos. Al final, si era el DNS + Firefox/IE + OS + Servidores intermedios de internet + ISA Server + Maquina con baja memoria + puros restart en el proceso de ASP.NET + poco espacio en disco de la BD.

Y este fue facil. Ya intuia que era el DNS sobrecargado pero demostrar *porque* esa fue toda una mision de 12 horas de analisis.

Por eso, se deberia apedrear a todo programador que haga esto:

Código Delphi [-]
try
  ..algo
except
  ..nada
end;

El silencio es una politica para un ataque sorpresa militiar. Tambien causa sorpresa en los programas.

2. Una excepcion es una excepcion. No tiene mas significado. Si sabes que va a pasar, no es excepcional.


Mientras un try...finally es util en una infinidad de casos, el try..except hay que reservarlo para cosas poco usuales, y solo para corregir una situacion.

Si es un caso muy obvio que un archivo no exista, no es excepcional. Deberia haber un codigo EXPLICITO. Y ser explicito es mejor que ser implicito. Sobre todo, para nosotros los hombres que tenemos poquito de intuicion ;)

Si pongo:

Código Delphi [-]

if FileExist(....) then
begin
  OpenFile(...);
end;

Estoy siendo explicito en mi criterio: El codigo es valido solo si el archivo existe y de alli lo proceso. Pero

Código Delphi [-]

try
  OpenFile(...);
except
  ....
end;

Estoy diciendo, que cuando ocurra un error, hago algo. Eso es <> a decir: "Cuando el archivo exista, lo abro" <> "Abro el archivo. En cualquier punto de falla, hago esto"

Un uso excepcional es por ejemplo que este cargando el archivo INI de configuracion de la aplicacion, que se supone siempre esta ahi, pero en caso que no, que es algo poco probable, hago esto otro. Y sin embargo, ya que lo resolvi, dejo de ser excepcional.

Quizas el unico caso muy claro es:

Código Delphi [-]
IncioTransaccion;
try
  Commit;
except
  abort;
  raise; //siempre dejo que mande el error original.
end;

3. El encapsulamiento es bueno. Pero no con errores

Los que mas detesto despues de los errores silenciosos son los que me distorcionan la realidad.

Código Delphi [-]
IniciarTransaccion;
try
 ....
 Commit;
except
  abort;
  show('No se pudo completar la operacion')
end;

Y porque no? Y se me perdio el stack trace, que cada dia lo quiero mas. Y fallo en un punto mas alejado de donde esta el problema. Y como la mayoria de los componentes que uso tienen codigo, es mejor ver exactamente en donde dentro de todo eso paso. Ademas, esto supone que el programador sabe exactamente lo que fallo, y no estoy muy seguro de eso.

Lo que me lleva a

4. Los mensajes de errores en español son tan indecifrables a los de ingles. Igual el usuario no lo va a entender.

Cuando hablamos de un error, un real error, no existe manera de hacerlo claro. Es imposible.

Igual da:

"Acces violation 0x0000053566"

que:

"El programa ha referenciado una direccion de memoria invalida o que no existe, probablemente porque se referencio un objeto antes de crearse."

No le veo la ventaja a lo segundo. Al principio, si la veia, pero ahora que aprendi a usar google prefiero los numeros hexadecimales porque me han sacado de mas de un lio. Y mientra mas raro e indecifrable es un error, mas facil es saber que esta pasando: Algo raro e indescifrable. Pero mensajes bonitos? Como los busco en google? Como va a ser mi unica forma de escribir un mensaje mejor que la peor manera de un error de MS que tiene cientos de referencias probadas por mucho tiempo por muchos programadores?

En cambio, mi propio mensaje de error, hermoseado, no existe en Internet, nadie mas lo conoce, nadie mas puede ayudar. Quedo solo y aburrido.

No confundamos con un mensaje normal:

"El registro esta duplicado"

No es un error. Es un programa que esta funcionando correctamente.

Esto lleva a:

5. Solo hay que preocuparse por lo que es valido.

Especialmente al hacer chequeos de datos. En vez de:

Código Delphi [-]

procedure AgregarCliente(....);
try
   ...uno
   ...dos
except
   if esto....
   if aquello...
   if lootro...
end;

Es concentrarse en lo que necesito y solo chequear lo que necesito. Que estalle por todo lo demas. Si eso me molesta, entonces AUN el programa no es correcto. Una vez cubri los casos de uso, paro.

6. En la era moderna, hay correo, internet, archivos e imagenes.

De un tiempo para aca no pierdo tiempo. Despues de que obligo al cliente a que me diga el mensaje de error (si lo hay) y me deletree en el peor espanglish posible (pero es mas facil para mi entender espanglish que para el lo que esta pasando) siempre pido un screenshot. Bingo. De muchas horas a pocas horas en tiempos de respuesta y solucion.

Luego estan los logs, herramientas como madexpert, envio de errores a mi correo, etc...

Al usuario solo se puede molestar con los pasos de reproduccion.

Lepe 08-08-2006 09:33:41

Cita:

Empezado por mamcx
obligo al cliente a que me diga el mensaje de error (si lo hay) y me deletree en el peor espanglish posible

... Por eso prefiero un código de error, el cliente ya tuvo que decirme por telefono el texto en inglés y aseguro que era peor escucharlo a él que a la cantante "tamara".


"Digame el error que le da:"
Cita:

Network initialization Failed
Internal OS error opening \\servidor\....
"netuooorkkk initializ... espera mejor te lo deletreo Italia, Navarra Italia, Tarragona.."

Casi mejor esto otro:"digame el código de error"
Cita:

No se ha podido abrir la Base de datos:
Categoría: BDE
Codigo de error:5466


Causa del error:
Network initialization Failed
Internal OS error opening \\servidor\....


Saludos

Casimiro Notevi 10-08-2006 13:03:58

También hay que tener en cuenta la "teoría de la relatividad" :), todo es relativo, por ejemplo: ¿para qué quiere un mensaje de error el cliente de un cajero de banco?, ¿acaso cuando esté sacando dinero y le salga un fallo va a llamar al servicio técnico?, hay casos, como este, en los que no sirve de nada y es mejor "esconder" los errores.

Por supuesto, se debe mostrar al cliente algún mensaje amigable y simpático como:
Cita:

Fecha/Hora: 28-12-2005 / 4:30am
Temperatura: -12º

Este terminal está fuera de servicio, vaya a sacar dinero al próximo más cercano que está en el quinto pino.
Perdone la molestias.

dec 10-08-2006 13:17:43

Hola,

Bueeeeeeeeeeeeeeeeno. Lo cierto es que todo es relativo, así es la verdad. Peeeeeeeeeeeero, como norma general, creo que los errores no deben ocultarse ni al usuario ni a nadie, porque corres cierto riesgo de no enterarte al cabo de lo que está ocurriendo, vamos, digo yooooooooo. ;)

Así que la norma general podría ser la de mostrar siempre los errores y, excepcionalmente, puede resultar apropiado no mostrarlos en modo alguno.

Casimiro Notevi 10-08-2006 13:22:35

Cita:

Empezado por dec
Hola,

Bueeeeeeeeeeeeeeeeno. Lo cierto es que todo es relativo, así es la verdad. Peeeeeeeeeeeero, como norma general, creo que los errores no deben ocultarse ni al usuario ni a nadie, porque corres cierto riesgo de no enterarte al cabo de lo que está ocurriendo, vamos, digo yooooooooo. ;)

Así que la norma general podría ser la de mostrar siempre los errores y, excepcionalmente, puede resultar apropiado no mostrarlos en modo alguno.

En casos "normales", sí, tienes razón. :)

dec 10-08-2006 13:38:05

Hola,

Cita:

Empezado por Casimiro
En casos "normales", sí, tienes razón. :)

Pues ahora mismo me la quito de encima. La razón es a veces una cosa muy pesada que sirve de lastre más que nada. :D


La franja horaria es GMT +2. Ahora son las 16:07:20.

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