Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   C++ Builder (https://www.clubdelphi.com/foros/forumdisplay.php?f=13)
-   -   Suma StrToInt para Edit vacios (https://www.clubdelphi.com/foros/showthread.php?t=37925)

cocke 27-11-2006 01:51:42

Suma StrToInt para Edit vacios
 
Hola a todos!!
Estoy desarrollando un formulario cliente-servidor que se comunica meidante tcp/ip.
Hay una parte donde debo sumar el valor de los productos, por eso hice un StrToInt para cada texto dentro de los txt, pero el campo de el valor es fijo.
Por ejemplo, solo se pueden ingresar 4 valores de productos y abajo existe otro Edit en cuyo campo va la suma de los anteriores. El problema esta en que cuando solo tengo 2 valores y los sumo, me arroja un error, debido a los otros 2 Edit que no tiene informacion. Un error relacionado con enteros. Solo funciona bien cuando se rellenan los 4 edit.
Como puedo solucionar eso?, ademas de agregar 0 cuando no hayan valores, existe alguna forma para que no me arroje error, o como puedo personalizar ese mensaje de error, diciendo que salga algo como "si no existen valores rellene con 0" ??¿¿ :(

Muchas Gracias :)

Saludos ..

Bicho 27-11-2006 02:16:37

Hola, pues existen muchas respuestas posibles para tu problema. Ahí van unas cuantas:

- Comprobar si el edit contiene texto alguno, es decir, sino está en blanco.
Código Delphi [-]
if edit1->text <> '' then //... aque haces tu StrToInt
else // puedes ignorarlo o mostrar un mensaje de error ShowMessag('debe introducir algún numero');

- Otra, la que tu has comentado, poner a 0 por defecto los edits, o comprobar que si no insertan nada lo deje a 0. Eso lo puedes hacer en el OnExit del Edit. Pones esto:
Código Delphi [-]
if edit1->text <> '' then edit1->text = '0';

- La otra que pides, es la de personalizar el mensaje de error. Esa viene incluida en la primera respuesta que te he dado.

Como ves, hay múltiples soluciones, tú eliges o combinas y las adaptas a tu programa.

Espero te sirva.

Saludos

cocke 27-11-2006 05:24:37

Gracias
 
Gracias por responder.
Olvide comentar que lo estoy desarrollando en Builder.
Hice doble clik encima del edit que quiero "arreglar"y puse el sgte codigo
if (Edit11->Text = '');
ShowMessag('Debe introducir algun numero');
pero me arrojaba errores en las 2 lineas de codigo, luego modifique a

if ("Edit11->Text = ''");
ShowMessag('Debe introducir algun numero');

Finalmente quedo como

if (Edit11->Text = '')
StrToInt(Edit11->Text);
else
ShowMessag('Debe introducir algun numero');

Pero me sigue arrojando errores, creo que deben ser errores basicos, pero empeze con builder hace 1 semana :(

Si me puedes ayudar seria fenomenal :)

Gracias..

Saludos..

Bicho 27-11-2006 11:13:36

Bueno yo de Builder no tengo ni idea, pero seria conveniente que escribieras los errores que te salen, para poder ver donde falla.

Saludos

Neftali [Germán.Estévez] 27-11-2006 11:44:36

Otra opción es utilizar la función StrToIntDef, a la que puedes asignar un valor por defecto en caso del Edit vacío (segun la versión que tengas).

Crandel 27-11-2006 17:48:41

Cita:

Empezado por cocke
if (Edit11->Text = '')
StrToInt(Edit11->Text);
else
ShowMessag('Debe introducir algun numero');

Pero me sigue arrojando errores, creo que deben ser errores basicos, pero empeze con builder hace 1 semana :(

Hola Cocke, bienvenido al club.

primero, las cadenas en Delphi se escriben entre comillas simples, en C++Builder entre comillas dobles y los caracteres en comillas simples.

Ahi ya tenes tus posibles errores.

Otro consejo es que te busques un libro basico de C++ donde aprender un poco la sintaxis de lenguaje y otro de C++Builder para el tema de los componentes y entorno (si ya sabes delphi obvia este ultimo)

cocke 28-11-2006 04:55:14

Gracias..
 
Hola a todos..
Despues de leerlos atte, corregi todo lo aconsejado y aun no funcionaba..
Pueden creer que el error estaba dentro del if,habia olvidado la diferencia entre un = y un == :D
Gracias por todo.. :)
Me podrian ayudar a imprimir el formulario??

Saludos!!

cocke 28-11-2006 05:12:52

TPrinter
 
Hola a todos..
Despues de leerlos atte, corregi todo lo aconsejado y aun no funcionaba..
Pueden creer que el error estaba dentro del if,habia olvidado la diferencia entre un = y un == :D
Gracias por todo.. :)
Estuve leyendo acerca de TPrinter, ya que necesito imprimir el formulario, y encontre lo siguiente
TPrinter Prntr = Printer();
TRect r = Rect(200,200,Prntr->PageWidth – 200,Prntr->PageHeight – 200);
Prntr->BeginDoc();
Prntr->Canvas->TextRect(r, 200, 200, Memo1->Lines->Text);
Prntr->EndDoc();
Pero creo que esta imprimiendo un cuadrado?
Se supone que para imprimir le formulario primero debo capturar el mapa de bits del formulario, y nose como hacerlo :(

Me podrian ayudar a imprimir el formulario??
Gracias nuevamente

Saludos!!

Crandel 28-11-2006 09:19:40

Hola de nuevo, es importante que mantengamos cierto orden en el foro, porque la cantidad de mensajes es enorme, por lo que para tema nuevo, abri un nuevo hilo.

Igualmente te recomiendo que leas La guia de estilo que ayudan bastante al escribir los mensajes y obtener mejor respuesta.


La franja horaria es GMT +2. Ahora son las 20:16:54.

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