Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Varios (https://www.clubdelphi.com/foros/forumdisplay.php?f=11)
-   -   Establecer parametros determinados en funciones y procedimientos (https://www.clubdelphi.com/foros/showthread.php?t=47612)

emeceuy 02-09-2007 21:13:21

Establecer parametros determinados en funciones y procedimientos
 
hola, la pregunta que tengo es sencilla, pero la verdad que no se bien como se hace...

como se le pasa parametros acotados a una funcion? por ejemplo, si tengo:

Código Delphi [-]
function MyFunction(Parametro: Char):boolean;

quiero poder restringir que "Parametro" solo sea la letra "A" o "B" por ejemplo... se puede?
tambien cuando se defnen arrays de Chars creo que se puede decir que los chars admitidos sean tales, o arrays de numeros, que sean de tal numero a tal otro... como se hace?

Muchas gracias !!! :)

Emilio 02-09-2007 21:43:28

Entiendo que para eso debes poner un condicional dentro de tu función.

Delphius 02-09-2007 22:20:53

Hola emeceuy,
Creo entender lo que pides.
Una manera de conseguir lo que pides, es declarar un tipo que acepte esto, se lo conoce como del tipo enumerado.

Código Delphi [-]
type
TSoloAyB: 'A'..'B'; // solo se acepta A o B

TRango: 1..10; // solo se acepta desde el 1 al 10

E incluso puedes usar estos "rangos" para otros tipos. Por ejemplo:
Código Delphi [-]
Type
TArray10Int = array[TRango] of integer;
TArray2Str = array[TSoloAyB] of char;

La otra opción es que dentro de la función incorpores un control del parámetro es decir IFs, como bien dijo Emilio.

Saludos,

emeceuy 02-09-2007 22:50:04

muchas gracias por las respuestas ! pensaba que se podía definir el tipo en la misma declaracion de la funcion, pero así está bien igual :)

gracias !

emeceuy 03-09-2007 18:27:19

me quedó una duda... como hago para definir un tipo que tenga solo determinados caracteres?

por ejemplo, si pongo 'A'..'C' mi tipo aceptará A, B y C... pero que pasa si quiero que tenga 'L','C','T' y 'U'? como se define?

salu2 gracias ;)

egostar 03-09-2007 18:31:56

Hola

Yo lo haría con un Case, algo así

Código Delphi [-]
 
MiFuncion(Letra:Char):Boolean;
begin
  Case Letra of
      'A'..'C' : begin
          //hago lo que quiera
         result := True;
      end;
      else begin
               ShowMessage('Letra invalida');
               result := False;
      end;
  end;
end;

Salud OS.

Chris 03-09-2007 18:44:47

Cita:

Empezado por emeceuy (Mensaje 227979)
me quedó una duda... como hago para definir un tipo que tenga solo determinados caracteres?

por ejemplo, si pongo 'A'..'C' mi tipo aceptará A, B y C... pero que pasa si quiero que tenga 'L','C','T' y 'U'? como se define?

salu2 gracias ;)

Código Delphi [-]
TSoloChars: 'A'..'C', 'L','C','T', 'U';

emeceuy 03-09-2007 19:12:04

gracias por las respuestas !! pero sigo sin poder hacerlo funcionar...

podría hacerlo dentro de la funcion, pero me gustaria tener mas seguridad en tiempo de edicion, por eso es que quiero que solo admita ciertas letras.

si pongo
Código Delphi [-]
type
   TSoloChars : 'A'..'C', 'L','C','T', 'U';
end;
en la parte de arriba, donde se declaran los otros tipos, me dice que se esperaba = pero que se encontró :
entonces pongo = y me dice, que se esperaba ; y se encontró , como si no dejara definir más de una letra o conjunto de letras...

como es? que confusion !!!

Delphius 03-09-2007 19:23:50

Hola,

En ese caso puedes hacer algo como esto:

Código Delphi [-]
function CaracterPermitido(Caracter: Char): boolean;
begin
  result := Pos(Caracter,SOLO_CHARS) > 0;
end;

Siendo, SOLO_CHARS de esta forma:

Código Delphi [-]
const
  SOLO_CHARS = 'ABCLTU';

De modo que sólo tienes que hacer tu función (o procedimiento) de modo tal que llame a la función anterior para comprobar si es un caracter válido y de allí hacer la operatoria necesaria.

Saludos,


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

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