Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   API de Windows (https://www.clubdelphi.com/foros/forumdisplay.php?f=7)
-   -   como saber el valor que muestra un edit (https://www.clubdelphi.com/foros/showthread.php?t=63356)

gaston260 10-02-2009 20:48:18

como saber el valor que muestra un edit
 
Hola foro como va todo ? tengo una preguntita jejeje tengo un edit que cambia de valor continuamente ! y necesito que cuando tenga un valor repetido mi programita pueda saberlo , el valor que se va a repetir varias veces es 0 .

Voy a tatar de explicarlo con un ejemplito ! tengo un edit que cambia de valor continuamente ej : 10 ; 189 ; 34 ;45 etc.
cuando encuentra el valor repetido que yo quiero , el 0 , entonces ejecuto algo ; ej : 12 ; 25 ; 55 ; 139 ; 0 ; 0 ; 0 , el valor cero se repitio 3 veces entonces ejecuto algo !

bueno perdón por dar tantas vueltas es que no soy muy bueno explicando cosas jejeje , gracias al que me entienda lo que escribí !!! :o

marcoszorrilla 10-02-2009 22:11:50

Puedes utilizar el evento OnChange del Tedit y aprovechar para comparar su contenido con el que tu deseas...

Código Delphi [-]
If Edit1.Text = '0' then
ShowMessage('valor cero.');

Un Saludo.

gaston260 10-02-2009 23:13:23

Hola amigo ! disculpame por no ser tan claro ! , en un edit que tengo en el cual llegan muchos valores , lo que necesito es que al repetirse esos valores me ejecute algo

ej : los valores pueden ser 2 , 255 , 34 , 0 , 3 , 8 , 0 , 0 , 0

como se ve el cero aparece una ves pero por detras aparece otro numero haci que no hace nada ! luego aparece el valor 0 repetido 3 veces ! ese me interesa ya que se repitio un numero de veces seguidas !

mi pregunta es como reconocer cuando un valor se repite varias veces , el valor que yo quiero en este caso es el 0 .

muchas gracias amigo !

roman 10-02-2009 23:34:12

Podrías tener una variable de tipo char que guarde el último valor escrito en el edit. Entonces, en el evento OnChange comparas el nuevo valor del edit con el anterior; si coinciden es que tienes una repetición, y si es cero, ya la encontraste:

Código Delphi [-]
procedure TForm1.Edit1Change(Sender: TObject);
begin
  if (Edit1.Text = CaracterPrevio) and (CaracterPrevio = '0') then
    ShowMessage('We have a winner')
  else
    CaracterPrevio := Edit1.Text;
end;

// Saludos

gaston260 10-02-2009 23:39:31

ok amigo lo voy a probar y te cuento que onda ! :)

gaston260 11-02-2009 01:25:49

Muchas gracias amigos por poner interes en un tema haci tan inocente ! , es que no estaba con todas las pilas jejeje , ha lo resolvi de esta manera !
Código Delphi [-]
            if edit1.Text = IntToStr(0) then
begin
    contador := contador + 1
              end
            else
begin
                    contador := 0;
end;

            if contador = 30 then
            begin
                   beep
            end;
otra pregunta que no tiene nada que ver jeje , como se hace para identar en este editor :p alguien que me diga !

gaston260 11-02-2009 04:25:00

y por supuesto inicializas el contador a 0 en el formpaint o en el oncreate del form por ejemplo

alquimista 11-02-2009 12:15:43

Amigo creo que puedes reducir tu código un poco:

Código Delphi [-]
if edit1.Text = IntToStr(0) then
   inc(contador)
            else
  contador := 0;

            if contador = 30 then beep;

Prueba a ver que debe de hacer lo mismo.
Si pones IntToStr(0) te da igual haber puesto if edit1.Text ='0'

Un saludo

Caro 11-02-2009 15:05:31

Cita:

Empezado por gaston260 (Mensaje 337727)
otra pregunta que no tiene nada que ver jeje , como se hace para identar en este editor :p alguien que me diga !

Hola, tu codigo debe estar entre las etiquetas [ delphi] [ /delphi] sin los espacios.

Saluditos

roman 11-02-2009 17:53:47

Y ya entrados en gastos de reducción de código, la comparación

Código Delphi [-]
if edit1.Text = IntToStr(0) then

queda más sencilla así:

Código Delphi [-]
if edit1.Text = '0' then

Así evitas una llamada a función.

// Saludos

Delphius 11-02-2009 18:55:00

Disculpen que interrumpa el debate, pero no puedo sentirme un tanto inquieto por las soluciones que se han estado brindando.

Se ha recomendado hacer uso del evento OnChange, pero me parece fundamental tener presente algo: el evento OnChange se dispara con cada cambio en el TEdit, por tal motivo debe analizarse la forma en el que el TEdit recibe el contenido.

No es lo mismo recibir las pulsaciones de una persona, que el valor de forma directa desde alguna variable, función o algún método de un objeto.
Si el valor lo teclea una persona puede llegarse a detectar lecturas erróneas: digamos que quiere teclear 35; el evento se dispará dos veces: 1) cuando presione 3, donde el valor leído sera 3, y 2) cuando presione 5, donde el valor recién será de 35.

Si el contenido en cambio es leído de forma directa por algún otro medio, la lectura si es posible.

Puede que gaston260 haya resuelto su duda, al parecer recibe los datos de forma directa. Eso es bueno, ¿pero si así no lo fuera?

Saludos,

gaston260 12-02-2009 01:31:35

Gracias delphius !! esas explicaciones son las que me hicieron ser un seguidor tuyo , no pretendo ser un "chupa medias" pero se nota que estas muy instruido y la verdad es un gusto poder leer cada linea de lo que escribes ! , con respecto al tema yo no use el evento onchange simplemente por que queria que se ejecutara mi condicion en otro punto del codigo ! , y no se estas cosas vasicas que me explicas !! gracias por el aporte amigo ! :)

Delphius 13-02-2009 18:57:09

Cita:

Empezado por gaston260 (Mensaje 337853)
Gracias delphius !! esas explicaciones son las que me hicieron ser un seguidor tuyo , no pretendo ser un "chupa medias" pero se nota que estas muy instruido y la verdad es un gusto poder leer cada linea de lo que escribes ! , con respecto al tema yo no use el evento onchange simplemente por que queria que se ejecutara mi condicion en otro punto del codigo ! , y no se estas cosas vasicas que me explicas !! gracias por el aporte amigo !

¿Seguidor?
Gaston260 no se has estado fumando, tomando, o consumiendo:D pero te advierto que no es bueno seguirme demasiado la corriente:p. Falta que me digas que quieres ser como yo:o... ¡el mundo ya tiene suficiente con un Delphius y NewDelphius:D, otro más en el mundo sería un ataque de locura global!:eek:

¿Muy instruído?
¡Por dios, estás enfermo! ¡No estoy instruído, estoy destruído:D! Pero que no cunda el pánico... tengo la cura: te me sales afuera de casa, te vas al centro a pasear, te distraes con los paisajes, llama a alguien y pasa un buen momento.;) La dosis debe ser una vez a la semana, si la locura aumenta dobla la dosis... y debes estar afuera por no menos de 4 horas.

Saludos y gracias por el pedacito que me toca.

gaston260 14-02-2009 01:46:40

jajaja Amigo si piensas que fumo espirales jajaja no es haci ! pero no seas tan modesto por favor ! es muy bueno tener a alguien como vos en el foro ! y te lo digo por que cuando explicas algo lo haces y ademas explicas como funciona ! , no te das cuenta el gran aporte que haces ! , yo no quiero ser como nadie por que simplemente soy yo ! jejeje te repito que cuando explicas algo ademas lo haces dando la explicasion del porque ! y como lo explicas sin ser sobervio ni nada por el estilo eso ami me gusta no se a los demas usuarios del foro ? , recuerdo que una vez pedi si me podias responder vos ! jajaja nunca me respondiste amigo ! bueno los maestros son haci ! no los podes entender bien si no estas en sus "zapatos" ! bueno pido un club de fans !! jajaja :p ha con respecto a la docis ... no hay problema ! esta cubierta ! jajaja

pd : saludos amigo , si me respondes te ago una pregunta de programacion !


La franja horaria es GMT +2. Ahora son las 06:26:09.

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