Club Delphi  
    Paypal   FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Varios
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Coloboración Paypal con ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 21-03-2009
Iron Iron is offline
Miembro
 
Registrado: mar 2009
Posts: 16
Poder: 0
Iron Va por buen camino
¿Similar al Choose de Visual Basic?

Buenas noches,

Última pregunta, para escoger un valor en función de un número, en Visual uso : z = Choose(d, 60, 55, 50, 45, 40, 35, 30, 25, 20, 15, 10). Donde z coge el valor en función de d, es decir, si por ejemplo d vale 4, z valdrá 45.
Esto me reduce bastante el código, ya que el Delphi estoy usando If.
¿Existe algo equivalente en Delphi?.

Muchas gracias y enhorabuena por el foro.
Responder Con Cita
  #2  
Antiguo 21-03-2009
cmm07 cmm07 is offline
Miembro
 
Registrado: nov 2007
Posts: 526
Poder: 19
cmm07 Va por buen camino
no sé, pero lo que se me ocurre es que si estas poniendo muchos if del mismo tipo, ¿porque no creas esos if como una unica función y la mandas a llamar?, asi ahorrarias mucho el codigo...
Responder Con Cita
  #3  
Antiguo 21-03-2009
Iron Iron is offline
Miembro
 
Registrado: mar 2009
Posts: 16
Poder: 0
Iron Va por buen camino
Gracias de nuevo cmm07!!. En algunos casos pongo hasta 15 If . Se hacer funciones en Delphi pero no llego a comprender lo que me dices. ¿Serías tan amable de aclararmelo?, Gracias.
Responder Con Cita
  #4  
Antiguo 21-03-2009
Avatar de Delphius
[Delphius] Delphius is offline
Miembro Premium
 
Registrado: jul 2004
Ubicación: Salta, Argentina
Posts: 5.582
Poder: 27
Delphius Va camino a la fama
Hola Iron,

Desconozco si existe alguna función ya hecha en Delphi que haga lo que pides. Pero no creo que resulte tan complicado hacerlo.

Por ejemplo, valiendome del tipo TIntegerDynArray que es un array dinámico de tipo entero es posible hacer dicha función.

Código Delphi [-]
function TForm1.Choose(Position: integer; ArrayNumber: TIntegerDynArray): integer;
begin
  if (Position <= High(ArrayNumber)) AND (Position >= 0)
     then result := ArrayNumber[Position]
     else raise exception.Create('Position out of range');
end;

Y un modo de usarla sería algo como éste:

Código Delphi [-]
procedure TForm1.Button1Click(Sender: TObject);
var arreglo: TIntegerDynArray;
    i: integer;
begin
  SetLength(arreglo,6);
  for i := Low(arreglo) to High(arreglo) do
     arreglo[i] := random(123);

  ShowMessage(IntToStr(Choose(2,arreglo)));

  SetLength(arreglo,0);
  arreglo := nil;
end;

Se puede mejorar evidentemente. Pero al menos es una aproximación.

Saludos,
__________________
Delphius
[Guia de estilo][Buscar]

Última edición por Delphius fecha: 21-03-2009 a las 22:46:25. Razón: etiquetas delphi!
Responder Con Cita
  #5  
Antiguo 21-03-2009
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
Yo tengo otra versión:

Código Delphi [-]
function Choose(d: integer; values: array of Integer): Integer;
begin
  Result := values[d];
end;

Ejemplo de uso:

Código Delphi [-]
z := Choose(d, [60, 55, 50, 45, 40, 35, 30, 25, 20, 15, 10]);

// Saludos
Responder Con Cita
  #6  
Antiguo 21-03-2009
Avatar de dec
dec dec is offline
Moderador
 
Registrado: dic 2004
Ubicación: Alcobendas, Madrid, España
Posts: 13.142
Poder: 36
dec Tiene un aura espectaculardec Tiene un aura espectacular
Hola,

¿No habría que comprobar si existe el índice en el Array Román?

PD. Acabo de probarlo, y, parece que si nos "salimos" con el índice, obtenemos valores "aleatorios", que, no termino de comprender... de todas formas me atrevo a proponer algo como esto:

Código Delphi [-]
function Choose(d: integer; values: array of Integer): Integer;
begin
  if Length(values) >= d then
    Result := values[d]
  else
    Result := -1;
end;

De esta forma, si el índice no existe, retornamos "-1"... y todavía así podría haber problemas, igual hay que levantar una excepción o algo así... ¿qué opináis?
__________________
David Esperalta
www.decsoftutils.com

Última edición por dec fecha: 21-03-2009 a las 23:21:58.
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
Mi programa en visual basic soler Varios 13 13-11-2007 17:10:11
Algo similar a "FindComponent" en visual basic 6 Hugorr .NET 1 03-08-2007 14:44:35
Visual Basic con FireBird luiz_leo Firebird e Interbase 2 25-07-2007 21:23:57
Visual Basic carols018 Varios 1 05-12-2006 02:15:35
Carga DLL y Visual Basic torito Varios 4 21-05-2004 19:32:31


La franja horaria es GMT +2. Ahora son las 23:11:51.


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