PDA

Ver la Versión Completa : seguimiento de una varialbe


maruenda
20-01-2004, 15:06:39
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
un visor de artesanía

:confused:

¿Y esta nomenclatura tan artesanal?

// Saludos

__cadetill
20-01-2004, 23:26:58
¿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
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
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:


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.


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
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:


[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:


// 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:


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:


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.