Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Varios
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Grupo de Teaming del ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 21-02-2012
Avatar de danielmj
danielmj danielmj is offline
Miembro
 
Registrado: jun 2011
Posts: 383
Poder: 13
danielmj Va por buen camino
ayuda con una comparacion if

Hola, estoy aqui comiendome el coco con este trozo del codigo que aun siendo una tonteria me trae loco, y os pido ayuda
El codigo es este...

Código Delphi [-]
for i:= 0 to cmbfecha.Items.Count do
begin     
  label1.caption:= DateToStr(now);     
  if (cmbFecha.Items.Text = label1.Caption) and //(DateToStr(now))) and  (TimeToStr(now) < '10:18:00') then         
    label2.caption:= IntToStr(i)          
  else
    ...      

end;

Si omito la linea
Código Delphi [-]
label1.caption:= DateToStr(now);

y en el if hago la comparacion directamente con un
Código Delphi [-]
dateToStr(now)

no devuelve ningun valor, pero si comparo de esta manera si:
Código Delphi [-]
if (cmbFecha.Items.Text = label1.Caption)

¿por que?

y por otra parte, según está el codigo, si cambio los valores de la hora y el signo de mayor o menor para que la comparacion sea negativa, me sigue mostrando la fecha actual en la etiqueta lo cual no deberia pasar al no cumplirse una de las condiciones.

¿Alguien puede ayudarme?

gracias.

Última edición por Casimiro Notevi fecha: 21-02-2012 a las 14:35:16.
Responder Con Cita
  #2  
Antiguo 21-02-2012
Avatar de newtron
[newtron] newtron is offline
Membrillo Premium
 
Registrado: abr 2007
Ubicación: Motril, Granada
Posts: 3.462
Poder: 21
newtron Va camino a la fama
¿Algún mode que ponga ese código legible?
__________________
Be water my friend.
Responder Con Cita
  #3  
Antiguo 21-02-2012
Avatar de danielmj
danielmj danielmj is offline
Miembro
 
Registrado: jun 2011
Posts: 383
Poder: 13
danielmj Va por buen camino
Pues perdon, no se que ha pasado, use las etiquetas para codigo delphi y cuando le di a previsualizar se veia estructurado correctame, de todos modos he intentado editar mi mensaje pero no veo la opcion por ninguna parte. Asi que habro un nuevo hilo y que un moderador elimine este. Lo siento.

Perdon y a ver si me podeis ayudar.
Responder Con Cita
  #4  
Antiguo 21-02-2012
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.040
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
No repitas mensajes, recuerda nuestra guía de estilo, gracias.

Borro el otro.

Si no puedes editarlo, avisa y cualquier moderador lo hace.
Y en todo caso, vuelve a escribirlo aquí, no abras un nuevo hilo.

Última edición por Casimiro Notevi fecha: 21-02-2012 a las 14:36:31.
Responder Con Cita
  #5  
Antiguo 21-02-2012
Avatar de danielmj
danielmj danielmj is offline
Miembro
 
Registrado: jun 2011
Posts: 383
Poder: 13
danielmj Va por buen camino
vale casimiro, una vez mas perdon, no pretendo molestar ni entorpecer el foro.

un saludo.
Responder Con Cita
  #6  
Antiguo 21-02-2012
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.040
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
Cita:
Empezado por danielmj Ver Mensaje
vale casimiro, una vez mas perdon, no pretendo molestar ni entorpecer el foro.
un saludo.
No te preocupes, es sólo que lo tengas en cuenta para las futuras consultas
Responder Con Cita
  #7  
Antiguo 21-02-2012
Avatar de Al González
[Al González] Al González is offline
In .pas since 1991
 
Registrado: may 2003
Posts: 5.604
Poder: 29
Al González Es un diamante en brutoAl González Es un diamante en brutoAl González Es un diamante en brutoAl González Es un diamante en bruto
Hola Daniel.

¿Podrías poner el código de cada caso en particular? (veo que mencionas al menos dos situaciones). Para entender mejor el problema.

Gracias.
Responder Con Cita
  #8  
Antiguo 21-02-2012
luisgutierrezb luisgutierrezb is offline
Miembro
 
Registrado: oct 2005
Ubicación: México
Posts: 925
Poder: 19
luisgutierrezb Va por buen camino
Independientemente del código, yo te haría una recomendación no compares strings, mejor convierte la hora a datetime y compara con la hora de now recuerda que con los strings son especiales por llamarles de algún modo
Responder Con Cita
  #9  
Antiguo 21-02-2012
Avatar de danielmj
danielmj danielmj is offline
Miembro
 
Registrado: jun 2011
Posts: 383
Poder: 13
danielmj Va por buen camino
Question

Hola, para no meter la pata con la estructura del codigo he preferido hacerle una captura y ponerla en internet, asi me aseguro que se ve bien.



Ahora el problema... básicamente lo que me ocurre es que cuando comparo el contenido del combobox con la instrucción "DateToStr(now)", no devuelve nada, pero si antes por ejemplo en una etiqueta, le asigno el valor del DateTo...(now), y realizo la comparacion entre el contenido del combo y el de la etiqueta, si devuelve un valor. Y no entiendo cual es la diferencia si realmente es lo mismo, solo que uso la etiqueta como "puente".

Por otra parte, y usando la etiqueta para realizar la comparación con el if, me devuelve un valor aunque no se cumplan las dos condiciones. Y ahí me tiene to pillao jeje.
Por cierto, las partes del codigo que estan como comentarios estan así aunque realmente exista un proceso "enviar.click" por que antes quiero solucionar esto que esta pasando, una vez arreglado ya dejaran de ser comentarios.

un saludo y gracias.
Responder Con Cita
  #10  
Antiguo 21-02-2012
Avatar de Al González
[Al González] Al González is offline
In .pas since 1991
 
Registrado: may 2003
Posts: 5.604
Poder: 29
Al González Es un diamante en brutoAl González Es un diamante en brutoAl González Es un diamante en brutoAl González Es un diamante en bruto
No sé por qué con el "puente" Label1 no ocurre lo mismo que sin él (habría que ver el código exacto de cómo lo haces sin ese puente ).

Lo que sí veo algo extraño es que tomes todos los elementos concatenados del cuadro combinado, cmbFecha.Items.Text, en lugar de tomar solamente el elemento de la posición I: cmbFecha.Items [i]. ¿Será eso?

Te invito a hacer este experimento:

Código Delphi [-]
ShowMessage (cmbFecha.Items.Text);
ShowMessage (cmbFecha.Items [0]);

Un curioso abrazo.

Al.
Responder Con Cita
  #11  
Antiguo 21-02-2012
Avatar de Caral
[Caral] Caral is offline
Miembro Premium
 
Registrado: ago 2006
Posts: 7.659
Poder: 25
Caral Va por buen camino
Hola
1-La comparación se saca de un dato Texto (combobox).
2-La comparación es de un solo dato, osea, no de varios ITEMS del combobox.
3-La hora si es Time no se podrá comparar con un string (tal como lo pretendes hacer).

Código Delphi [-]
var
 i: integer;
 Fecha, Hora : String;
begin
  Fecha:= FormatdateTime('mm/dd/yyyy',(now));
  Hora:= FormatdateTime('hh:nn:ss',(now));
  for i:= 0 to cmbfecha.Items.Count do
begin
  if (cmbFecha.Text = Fecha)
  and  (Hora < '10:18:00') then
  label2.caption:= IntToStr(i);
end;
end;

Saludos
__________________
Siempre Novato
Responder Con Cita
  #12  
Antiguo 21-02-2012
Avatar de Chris
[Chris] Chris is offline
Miembro Premium
 
Registrado: abr 2007
Ubicación: Jinotepe, Nicaragua
Posts: 1.678
Poder: 19
Chris Va por buen camino
Hola!

Antes que todo, que condiciones se deben haber para que "(TimeToStr(Now) < '10:18:00')" devuelva True?.

Con respecto a lo anterior, mi punto es que te fijes que en realidad estás comparando dos cadenas de texto, no dos fechas. Por lo que utilizar el operador < para cadenas de texto es demasiado ambiguo.

Creo que tu código, casi es su totalidad está mal en conceptos, pues estás utilizando cadenas de texto para hacer comparaciones de fechas. Aún que conviertas correctamente las fechas y horas a texto, tienes que tener en cuenta que esto depende de la configuración regional. No puedes esperar que TimeToStr(Now) devuelva siempre '10:18:00', ya que te podría devolver "10:18:10 AM o PM" y muchas otras variaciones. Lo mejor es que siempre trabajes con fechas y horas de forma nativa.

Código Delphi [-]
var
    I: Integer;
    cmbDate: TDate;
begin
    for I := 0 to (cmbFecha.Items.Count - 1) do
    begin
        
        cmbDate := StrToDate(cmbFecha.Items[i]);
        
        if cmbDate = Date then
        begin
            // comparar hora
            if (CompareDate(Now, EncodeTime(10, 18, 0, 0)) = LessThanValue) then
                Label2.Caption := IntToStr(I);
        end
        else
            ...
        
    end;
end;

Talvez ese código te sirva. Pruebalo, que no estoy seguro que te sirva al 100%.

Saludos!
__________________
Perfil Github - @chrramirez - Delphi Blog - Blog Web
Responder Con Cita
Respuesta



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
comparación de text lisc_dla Varios 2 02-08-2011 20:04:15
comparacion de fechas alejitoo Varios 7 25-06-2010 15:08:56
Ayuda para hacer un algoritmo de busqueda y comparacion JoAnCa Varios 7 23-12-2008 22:55:28
Ayuda comparacion campos AdoQuery Jaros SQL 4 27-05-2008 19:54:58
Comparación de Fechas sierraja Varios 5 19-06-2005 06:56:20


La franja horaria es GMT +2. Ahora son las 21:21:47.


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
Copyright 1996-2007 Club Delphi