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 26-07-2010
darnnezt darnnezt is offline
Miembro
 
Registrado: jul 2010
Posts: 17
Poder: 0
darnnezt Va por buen camino
Arrow Ayuda Con Este Error :s

procedure TForm1.Button1Click(Sender: TObject);
var
pt,a,p,ah,prome1,prome2:real;
s:string;
hombre,c1,n:integer;

begin
a:=0;
p:=0;
prome1:=1;
prome2:=1;
pt:=0;
hombre:=0;
n:=0;
n:=strtoint(inputbox('IGRESE EL NUMERO DE PERSONAS',' N:',''));


for c1:=1 to n do

a:= strtofloat(inputbox('IGRESE LA ALTURA DE LA PERSONA M',' A:',''));
p:=strtofloat(inputbox('INGRESE EL PESO DE LA PERSONA KG ',' P:',''));
s:=string(inputbox('INGRSE EL SEXO DE LA PERSONA',' S:',''));



begin
if (s :=m) then
begin
hombre:=hombre+1;
ah:=ah+a;
end;

pt:=pt+p;
end;
prome1:= pt/n;
prome2:=ah/hombre;

El error se encunetra enmarcado en la zona roja, dice:
[Error] Unit1.pas(52): ')' expected but ':=' found
si alguien puede ayudar mil gracias.
Responder Con Cita
  #2  
Antiguo 26-07-2010
[FGarcia] FGarcia is offline
Miembro Premium
 
Registrado: sep 2005
Ubicación: Cordoba, Veracruz, México
Posts: 1.123
Poder: 20
FGarcia Va por buen camino
Te recomiendo que uses etiquetas para encerrar el codigo delphi y sea mas legible.

Código Delphi [-]
if (s :=m) then
  //lo que sigue

If efectuara una comparacion NO una asignacion. Lo correcto seria :

Código Delphi [-]
if (s = m) then
__________________
ESTO ES UN FORO ... NO UN MÓVIL
¿Por qué no escribir de una manera comprensible para que los humanos lo podamos entender?
Responder Con Cita
  #3  
Antiguo 26-07-2010
Avatar de roman
roman roman is offline
Moderador
 
Registrado: may 2003
Ubicación: Ciudad de México
Posts: 20.269
Poder: 10
roman Es un diamante en brutoroman Es un diamante en brutoroman Es un diamante en bruto
El operador := se usa para asignar valores, no para comparaciones. Lo correcto sería:

Código Delphi [-]
if (s = m) then

Por cierto, bienvenido a ClubDelphi. Recuerda leer la guía de estilo y utilzar las etiquetas adecuadas para poner codigo fuente.

// Saludos
Responder Con Cita
  #4  
Antiguo 26-07-2010
darnnezt darnnezt is offline
Miembro
 
Registrado: jul 2010
Posts: 17
Poder: 0
darnnezt Va por buen camino
Muchasgracias por la bienvenida, pero el error aun se mantiene no tengo idea de q puede ser

Última edición por darnnezt fecha: 26-07-2010 a las 23:40:30.
Responder Con Cita
  #5  
Antiguo 27-07-2010
paranedaf paranedaf is offline
Registrado
 
Registrado: jul 2010
Posts: 4
Poder: 0
paranedaf Va por buen camino
Cita:
Empezado por darnnezt Ver Mensaje
Muchasgracias por la bienvenida, pero el error aun se mantiene no tengo idea de q puede ser
Está bien lo que mencionaron acerca del error al asignar en vez de comparar.

Ahora, estás comparando la variable "m" y veo que no está declarada. Quizá deseas comparar con la variable "n". Cuidado que s y n son de distinto tipo.
Responder Con Cita
  #6  
Antiguo 27-07-2010
darnnezt darnnezt is offline
Miembro
 
Registrado: jul 2010
Posts: 17
Poder: 0
darnnezt Va por buen camino
GRACIAS YA EL PROGRAMA CORRE, pERO ME DI CUENTA Q SE HA CONVERTIDO EN UN BUCLE INFINITO OSEA SE KEDA PIDIENDO RESULTADO HASTA Q DA ERROR Y NUNKA DA LAS RESPUESTAS,INTENTAE

Código Delphi [-]

procedure TForm1.Button1Click(Sender: TObject);
var
pt,a,p,ah,prome1,prome2:real;
f,m,s:string;
hombre,c1,N:integer;

begin
a:=0;
p:=0;


pt:=0;
hombre:=0;
N:=0;

N:=strtoint(inputbox('IGRESE EL NUMERO DE PERSONAS',' N:',''));

a:= strtofloat(inputbox('IGRESE LA ALTURA DE LA PERSONA M',' A:',''));
p:=strtofloat(inputbox('INGRESE EL PESO DE LA PERSONA KG ',' P:',''));

for c1:=1 to n do
  begin

s:=string(inputbox('INGRSE EL SEXO DE LA PERSONA',' S:',''));


if (s = m) then
begin
hombre:=hombre+1;
ah:=ah+a;
end;

end;


pt:=pt+p;
prome1:= pt/n;
prome2:=ah/hombre;

Showmessage(' EL PESO DE LA POBLACION TOTAL '+FLOATTOSTR(prome1));
showmessage('EL PROMEDIO DE LA ALTURA DE LOS HOMBRE ES '+FLOATTOSTR(prome2));
De esta manerael programa funciona solo q no da respuestas
Responder Con Cita
  #7  
Antiguo 27-07-2010
Avatar de Jac fcc
Jac fcc Jac fcc is offline
Miembro
 
Registrado: ene 2010
Posts: 33
Poder: 0
Jac fcc Va por buen camino
intenta asi

Cita:
if (s = m) then
en comparación de cadenas puedes usar
function AnsiCompareStr( const S1, S2: string ): Integer;
function AnsiCompareText( const S1, S2: string ): Integer; o
supongo que hay maneras mnas optimas de hacer lo mismo pero esta
funciona (y como no tengo mucho tiempo)
aqui coloqué a m el valor de 'm' pensando en que la opcion para ingresar es 'masculino'.
tambien coloqué dentro del ciclo las opciones donde pedías la altura y peso,
pues si al final estabas mostrando el promedio, tenias que pedir cada uno de estos datos por persona.


Código Delphi [-]
procedure TForm1.Button1Click(Sender: TObject);
var
pt,a,p,ah,prome1,prome2:real;
m,s:string;
hombre,c1,N:integer;

begin

ah:=0;
pt:=0;
hombre:=0;
m:='m';//suponiendo que es m=masculino
N:=strtoint(inputbox('IGRESE EL NUMERO DE PERSONAS',' N:',''));
for c1:=1 to n do begin
  a:= strtofloat(inputbox('IGRESE LA ALTURA DE LA PERSONA M',' A:',''));
  p:=strtofloat(inputbox('INGRESE EL PESO DE LA PERSONA KG ',' P:',''));
  s:=string(inputbox('INGRSE EL SEXO DE LA PERSONA',' S:',''));
  if AnsiCompareStr(s,m)=0 then begin
    hombre:=hombre+1;
    ah:=ah+a;
  end;
  pt:=pt+p;
end;

try

  if n>0 then  prome1:= pt/n
  else begin
    MessageDlg('Error al promediar el peso con divisor cero. ',mtError,[mbOk], 0);
    exit;
  end;
  if hombre>0 then  prome2:=ah/hombre
  else begin
    MessageDlg('Error al promediar la altura con divisor cero. ',mtError,[mbOk], 0);
    exit;
  end;
  Showmessage('EL promedio del PESO DE LA POBLACION TOTAL '+FLOATTOSTR(prome1));
  showmessage('EL PROMEDIO DE LA ALTURA DE LOS HOMBRE ES '+FLOATTOSTR(prome2));

except
    on e:Exception do
    MessageDlg('Error al promediar. '+char(13)+e.Message, mtError,[mbOk], 0);
end;
saludos!
y me cuentas si funciona.
__________________
Para una vida sana hay que ocupar 30 de 24hrs diarias...Ups!
Responder Con Cita
  #8  
Antiguo 27-07-2010
darnnezt darnnezt is offline
Miembro
 
Registrado: jul 2010
Posts: 17
Poder: 0
darnnezt Va por buen camino
Funciona A La Perfeccion Muchisimas Gracias, solo tuve q agregarle al mio que m:='m' muchas gracias

Última edición por darnnezt fecha: 27-07-2010 a las 03:15:26.
Responder Con Cita
  #9  
Antiguo 27-07-2010
darnnezt darnnezt is offline
Miembro
 
Registrado: jul 2010
Posts: 17
Poder: 0
darnnezt Va por buen camino
De esta Manera queda muy corto

Código Delphi [-]
procedure TForm1.Button1Click(Sender: TObject);
var
pt,a,p,ah,prome1,prome2:real;
f,m,s:string;
hombre,c1,N:integer;

begin
a:=0;
p:=0;
m:='m';

pt:=0;
hombre:=0;
N:=0;

N:=strtoint(inputbox('IGRESE EL NUMERO DE PERSONAS',' N:',''));


for c1:=1 to n do
  begin
a:= strtofloat(inputbox('IGRESE LA ALTURA DE LA PERSONA M',' A:',''));
p:=strtofloat(inputbox('INGRESE EL PESO DE LA PERSONA KG ',' P:',''));

s:=string(inputbox('INGRSE EL SEXO DE LA PERSONA',' S:',''));


if (s = m) then
begin
hombre:=hombre+1;
ah:=ah+a;
end;

end;


pt:=pt+p;
prome1:= pt/n;
prome2:=ah/hombre;

Showmessage(' EL PESO DE LA POBLACION TOTAL '+FLOATTOSTR(prome1));
showmessage('EL PROMEDIO DE LA ALTURA DE LOS HOMBRE ES '+FLOATTOSTR(prome2));

Gracias a todos
Responder Con Cita
  #10  
Antiguo 27-07-2010
Avatar de Jac fcc
Jac fcc Jac fcc is offline
Miembro
 
Registrado: ene 2010
Posts: 33
Poder: 0
Jac fcc Va por buen camino
tomalo en cuenta

claro que es mas corto,

pero siempre toma en cuenta que un usuario puede ingresar valores donde todas las personas sean mujeres. entonces tendrias una division con cero y eso genera una excepcion.

tal vez esta es una practica y no se ve que afecte tanto, pero hay que acostumbrarse a ese tipo de cosas pues uno no controla lo que el usuario ingresa.

en resumen, piensa hasta el minimo detalle en cuanto a manejo de errores (incluso puede que en el codigo me falte o este fuera de lugar algun manejo), con el tiempo y a medida que aumentan tus exigencias de programacion (o en el trabajo) te daras cuenta del porque tiene importancia verificar esos errores o las excepciones.
__________________
Para una vida sana hay que ocupar 30 de 24hrs diarias...Ups!
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
una ayuda con este error please dariana20 SQL 3 14-06-2006 23:14:06
Error 10093 al ver un informe - Que error es este? URBANO Impresión 1 03-02-2006 18:44:39
¿Por qué me da este error?Error creating cursor manejador nuri SQL 2 01-08-2005 17:30:28
Ayuda con este error???? danytorres Varios 1 27-10-2004 11:38:09
Me ayuda alguien con este msg de error? NaZZ Varios 4 12-03-2004 09:31:25


La franja horaria es GMT +2. Ahora son las 22:16:45.


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