Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Varios (https://www.clubdelphi.com/foros/forumdisplay.php?f=11)
-   -   seguimiento de una varialbe (https://www.clubdelphi.com/foros/showthread.php?t=6724)

maruenda 20-01-2004 15:06:39

seguimiento de una varialbe
 
buenas. tengo delphi 7 version educacion. tengo un form con una variable, que se llama leyendo. es booleana. me gustaria ir viendo el valor de esta variable en tiempo de ejecucion. existe alguna opcion que me permita esto? gracias

Nuria 20-01-2004 16:16:05

Hola Maruenda:

No se en Delphi 7 versión educación, si se podrá pero supongo que si. Pon un punto de Ruptura, en una línea de tú código, pinchando con el ratón dos veces y te aparecerá la línea en rojo. Ejecuta el programa y se parará en esa línea y con F8 irás pasando de línea, y si quieres ver el valor de la variable sólo tienes que poner el ratón encima de ésta y te aparecerá el valor que tiene en esos momentos. Yo lo hago en Delphi 7 Enterprise y funciona perfectamente.

Espero que te sirva.

Saludos!

marcoszorrilla 20-01-2004 19:16:54

Si no funcionara en la versión que tienes, cosa que ignoro, puedes hacer un visor de artesanía, Pones en todos los lugares del programa en donde estés interesado en conocer el valor de dicha variable un ShowMessage(miVariable);

Un Saludo.

roman 20-01-2004 19:21:17

Cita:

Empezado por marcoszorrilla
un visor de artesanía

:confused:

¿Y esta nomenclatura tan artesanal?

// Saludos

__cadetill 20-01-2004 23:26:58

Cita:

Empezado por roman
¿Y esta nomenclatura tan artesanal?

Es que el amigo Marcos siempre nos sorprende :D

Bueno, respecto al problema y ampliando un poco las respuestas dadas, sólo decir que también tienes la opción Watch (no se si está bien escrito, es que no tengo el Delphi aun instalado en este PC :D). En D7 no se donde estará, pero si te posicionas encima de la variable y haces CTRL+F5 se te agregará y te aparecerá dicha ventanita. Has de usarlo junto a los puntos de ruptura (que tambien puedes añadir con un simple clic en la parte derecha del códiga, la gris ;))

maruenda 22-01-2004 22:02:35

otra pregunta
 
hola. bueno intento ver el valor de la variable en tiempode ejecucion, uso showmessage, pero al ser una variable booleana, me da error. ¿ como puedo usar esa funcion con este tipo de variables ? existe alguna forma de convertirla a string ? :confused: gracias

eduarcol 22-01-2004 22:19:53

if Leyendo then ShowMessage('Verdadero')
else ShowMessage('Falso')

pruebalo

__cadetill 22-01-2004 23:39:37

Cita:

Empezado por maruenda
hola. bueno intento ver el valor de la variable en tiempode ejecucion, uso showmessage, pero al ser una variable booleana, me da error. ¿ como puedo usar esa funcion con este tipo de variables ? existe alguna forma de convertirla a string ? :confused: gracias

En D6 o superior : BoolToStr()

roman 24-01-2004 08:00:53

En cualquier versión de Delphi:

Código:

ShowMessage(IntToStr(Integer(VariableBooleana)));
// Saludos

marcoszorrilla 24-01-2004 14:18:49

Estos son los valores que devuelve una variable de tipo lógica aplicando la interesante nomenclatura de Román, en honor a él he llamado a la variable de prueba lRoman, como se vé aquí hemos llegado al sumum de la artesanía, un visor totalmente artesanal y un doble moldeado de datos.

Código:

procedure TForm1.Button1Click(Sender: TObject);
var
lRoman:Boolean;
begin
ShowMessage(IntToStr(Integer(lRoman))); //32
lRoman:=False;
ShowMessage(IntToStr(Integer(lRoman))); //0
lRoman:=True;
ShowMessage(IntToStr(Integer(lRoman)));//1
end;

Un Saludo.

roman 25-01-2004 02:44:57

Cita:

Empezado por marcoszorrilla
Estos son los valores que devuelve una variable de tipo lógica aplicando la interesante nomenclatura de Román, en honor a él he llamado a la variable de prueba lRoman, como se vé aquí hemos llegado al sumum de la artesanía, un visor totalmente artesanal y un doble moldeado de datos.

Y por cierto, dicho valor 32 (204 en mi caso) es de hecho útil ya que nos indicará que pasamos por alto el mensaje del compilador:

Cita:

[Warning] Unit1.pas (n) Variable 'lRoman' might not have been initialized
// Saludos

roman 25-01-2004 03:17:04

Ahora que entiendo que el visor artesanal en el que estamos trabajando es típico de lo que haría un programador en C en donde 0 es false y distinto de cero es true. Si queremos algo más de estilo Pascal podríamos usar:

Código:

// bZorrilla es una variable booleana

ShowMessage(Chr((Ord('T') - Ord('F'))*Integer(bZorrilla) + Ord('F')));

que nos mostraría 'F' si la variable es false y 'T' si es true. Obviamente podemos sustituir 'T' y 'F' por 'Y' y 'N' ('Yes' o 'No') o por 'S' y 'N' ('Sí' o 'No') según convenga a nuestros intereses.

De hecho podemos omitir totalmente el uso de funciones auxiliares como IntToStr, Chr u Ord y utulizar exclusivamente moldeo de tipos:

Código:

ShowMessage(Char((Integer('T') - Integer('F'))*Integer(bZorrilla) + Integer('F')));
// Saludos

__cadetill 25-01-2004 04:23:16

Perdón por el Off Topic, pero, es que Román, cada día se te va más la pelota :D :D

(de buen rollo, eh!!!! ;))

PD: me ha encantado tu solución ;)

Investment 26-01-2004 13:35:01

Como anda el patio...

Personalmente yo no iria mostrando mensajes porque al final vas a acabar un poco harto de tanto aceptar. Pondria una etiqueta en el formulario y le daria valor en cada procedimiento:

if leyendo then
lbLeyendo.caption:= 'Verdadero'
else
lbLeyendo.caption:= 'Falso'

kinobi 26-01-2004 14:10:15

Hola,

Aunque no es exactamente lo que se pide, también podría ser de utilidad el procedimiento Assert, muy utilizada en C:

Código:

  procedure Assert(expr : Boolean [; const msg: string]);
De la ayuda en línea (de Delphi):

"In Delphi code, use Assert as a debugging tool to test that conditions assumed to be true are never violated. Assert provides an opportunity to intercept an unexpected condition and halt a program rather than allow execution to continue under unanticipated conditions.

Assert takes a Boolean expression and an optional message string as parameters. If the Boolean test fails, Assert raises an EAssertionFailed exception. If a message string was passed to Assert, the exception object is created with that string. Otherwise it is created with a default string indicating that the assertion failed. The message is displayed along with the complete path, filename, and the line number on which Assert failed.
"

Saludos

marcoszorrilla 26-01-2004 21:13:06

Tengo que decir a lo que propone Investment que yo lo utilizo cuando se trata por ejemplo de un bucle o se va mostrar em muchos sitios, incluso un memo y así luego podemos ir recorriendo los valores.

Un Saludo.


La franja horaria es GMT +2. Ahora son las 06:03:11.

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