Foros del Web » Programación para mayores de 30 ;) » Programación General »

Problema con Edit

Estas en el tema de Problema con Edit en el foro de Programación General en Foros del Web. Holas; Estaba realizando unas pruebas con los edit, es decir, juntar la información de varios y desplegarlos en un edit como un informe: Informe Cliente ...
  #1 (permalink)  
Antiguo 11/08/2005, 15:21
 
Fecha de Ingreso: diciembre-2004
Ubicación: Iquique, Chile
Mensajes: 150
Antigüedad: 19 años, 4 meses
Puntos: 0
Pregunta Problema con Edit

Holas;

Estaba realizando unas pruebas con los edit, es decir, juntar la información de varios y desplegarlos en un edit como un informe:

Informe Cliente
Nombre :
Apellido:
etc

La condición es, si estan vacios, no escribir, pero no resulta.

Fijo el texto del Edit

GetWindowText(hNombre,strNombre,20);

if(strNombre == "") SetWindowText(hstatic1,"Vacio");

Pero, no hace nada, al sacar la longitud de la cadena vacia del edit, me encuentro que dice "4", al cambiar a:

if(strNombre != "") SetWindowText(hstatic1,"Vacio"); Incluso inicio en WM_INITDIALOG SetWindowText(hNombre,"") como vacio.

Me escribe en el Edit "Vacio". Me explico con detalle:

Código:
GetWindowText(hEditNombre,strNombre,20);//Capturo dato del Edit
vari = sizeof(hEditNombre);//Obtengo el tamaño
sprintf(informe,"%s",strNombre);//lleno la variable informe con lo del Edit
if(informe != "")// Como no tengo nada, no debe escribir vacio en el static
{
    SetWindowText(hstatic1,"vacio");
}
if(informe != ""), además de colocar "!=", lo realize con "==" el cual en el static no se escribe nada.

Por último, agrego vari

sprintf(informe,"%s%d",strNombre,vari);, en el SetWindowText, quito "vacio" y lo reemplazo con informe:

Código:
if(informe != "")
{
    SetWindowText(hstatic1,informe);
}
en el static, se escribe "4", no se que hacer para respetar la consulta si Edit esta vacio, por lo tanto, np hagas nada.

Nos vemos.
  #2 (permalink)  
Antiguo 11/08/2005, 15:47
Avatar de Eternal Idol  
Fecha de Ingreso: mayo-2004
Ubicación: Lucentum
Mensajes: 6.192
Antigüedad: 19 años, 11 meses
Puntos: 74
Es un problema de conceptos de cadenas de caracteres. La comprobacion que estas haciendo nunca funcionara por una simple razon, estas comparando la direccion de memoria de strNombre con la direccion de memoria de la cadena vacia.

Generalmente lo que se usa es strlen() que devuelve el tamaño de una cadena, en este caso en particular podes usar el valor de retorno de GetWindowText() que sera justamente el tamaño de la cadena copiada.

Aca tenes un mini tutorial sobre cadenas de caracteres:
http://www.c0d3rz.com.ar/foro/viewtopic.php?t=37
__________________
¡Peron cumple, Evita dignifica! VIVA PERON CARAJO

Última edición por Eternal Idol; 11/08/2005 a las 23:26
  #3 (permalink)  
Antiguo 11/08/2005, 16:37
 
Fecha de Ingreso: diciembre-2004
Ubicación: Iquique, Chile
Mensajes: 150
Antigüedad: 19 años, 4 meses
Puntos: 0
Holas;

Te agradesco tu ayuda y tus observaciones, esto me terminó de convencer de dar paso atrás y volver a nivelar conocimientos, tenias razón en el strlen, lo ví cuando estaba en consola, que tontera la mía.

Vi el tutorial que recomendaste, volvere a repasar todo.....

Gracias
  #4 (permalink)  
Antiguo 11/08/2005, 23:29
Avatar de Eternal Idol  
Fecha de Ingreso: mayo-2004
Ubicación: Lucentum
Mensajes: 6.192
Antigüedad: 19 años, 11 meses
Puntos: 74
Cita:
Iniciado por nostromo_
Holas;

Te agradesco tu ayuda y tus observaciones, esto me terminó de convencer de dar paso atrás y volver a nivelar conocimientos, tenias razón en el strlen, lo ví cuando estaba en consola, que tontera la mía.

Vi el tutorial que recomendaste, volvere a repasar todo.....

Gracias
De nadas y no te desanimes que por las otras preguntas que hiciste se notaba que venias bien Ademas siempre es bueno dar un repaso teorico, nunca se pierde nada y siempre se recuerda o se aprende algun truco o forma nueva de programar.
__________________
¡Peron cumple, Evita dignifica! VIVA PERON CARAJO
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 02:32.