Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Varios (https://www.clubdelphi.com/foros/forumdisplay.php?f=11)
-   -   Procedimiento mal invocado (https://www.clubdelphi.com/foros/showthread.php?t=45946)

gerupc 18-07-2007 23:33:33

Procedimiento mal invocado
 
Hola,

tengo un problema al llamar al procedimiento 'absoluto', ya que quiero que el resultado me lo de como valor absoluto y donde yo quiero(donde doy el resultado en cm cuadrados).. EL problema radica en que no sé como llamarlo para que cumpla esa función :confused: . Aquí os dejo el código:

Código Delphi [-]
 
var
 resultado,x1,x2,y1,y2: integer;

procedure absoluto(parametro: integer);
 Begin
  if parametro < 0 then
  parametro := -parametro;
  write(parametro);
 End;
Begin
 {Omito esta parte del código, por no ser necesaria}

 Resultado := (x2-x1)*(y2-y1);
 
 Write('El resultado es: ', absoluto(resultado),' cm cuadrados');
 readln;
End.

Pues a ver si alguine me puede guiar un poco, muchísimas gracias de antemano ;) .

Un saludo,

Geru.

jhonny 18-07-2007 23:39:02

La función de valor absoluto es ABS

gerupc 18-07-2007 23:48:22

Aupa,

gracias, pero cómo la tendría que poner?? :o

he probado de la siguiente manera y nada... :

Código Delphi [-]
 
write(ABS ('El resultado es: ', [resultado], ' cm cuadrados'));
readln;

Un saludo,

Geru.

roman 18-07-2007 23:49:09

gerupc, para que pudieras usar absoluto como indicas, necesitarías que fuera una función, pero tú la definiste como procedimiento. Tendría que ser así:

Código Delphi [-]
function absoluto(parametro: integer);
begin
  if parametro < 0 then
    parámetro := -parametro

  Result := parametro;
end;

Pero, como te comenta Jhonny, ya existe una función que hace eso.

// Saludos

dec 18-07-2007 23:51:59

Hola,

Ah... poder "corregir" a Román... ¡qué gusto! :D :D

Código Delphi [-]
function absoluto(parametro: integer): integer;
begin
  if parametro < 0 then
    parámetro := -parametro

  Result := parametro;
end;

jhonny 18-07-2007 23:57:08

Cita:

Empezado por dec
Hola,
Ah... poder "corregir" a Román... ¡qué gusto! :D :D

Hola, Ah... poder "corregir" a Román y a dec... ¡qué gusto! :D :D

Código Delphi [-]
function absoluto(parametro: integer): integer;
begin  
   if parametro < 0 then    
     parametro := -parametro; //No se noto mucho la negrilla en este punto y coma ;)
   Result := parametro;
end;

gerupc 19-07-2007 00:08:35

Aupi,

bien, ahora, desde donde llamo a la función?? ya que me dice que el identificador 'Result' no lo encuentra...

He puesto lo siguiente (la funcion tal y como me comentais), pero la llamo asi:

Código Delphi [-]
 
write(absoluto ('El resultado es: ', [resultado], ' cm cuadrado'); readln;

De todas maneras, porqué la necesidad de hacerlo con una función en lugar de un procedimiento??
Acabo de encontrar en un libro de Delphi 2006, el siguiente procedimiento:

Código Delphi [-]
 
procedure MakeAbsolute(Num: integer);
begin
      if Num < 0 then
      Num := -Num;
WriteLn('Valor absoluto = ', Num);
end;

Por eso no entiendo la necesidad de hacerlo mediante una función en lugar de un procedimiento como este, si los dos tienen la misma función, no?

Un saludo,

Gracias.

jhonny 19-07-2007 00:14:59

Lo que sucede es que una función te devuelve un valor, mientras que un procedimiento no.

Si usas la función abs, que viene en Delphi solo tendrías que hacer algo asi:
Código Delphi [-]
 
WriteLn('Valor absoluto = ', Abs(Num));

gerupc 19-07-2007 00:19:42

De acuerdo, una vez más, todo perfecto :) .

Muchísimas gracias y un saludo,

Geru.


La franja horaria es GMT +2. Ahora son las 02:24:06.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi