Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Internet
Registrarse FAQ Miembros Calendario Guía de estilo Buscar Temas de Hoy Marcar Foros Como Leídos

Grupo de Teaming del ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 23-11-2007
wlad wlad is offline
Registrado
 
Registrado: nov 2007
Posts: 3
Poder: 0
wlad Va por buen camino
Cómo puedo hacer para que una variable valga 2 valores al mismo tiempo

como puedo hacer para que una variable valga 2 valores al mismo tiempo y pueda ejecutar el mismo procedure,pa esos dos distintos valores
Responder Con Cita
  #2  
Antiguo 23-11-2007
Avatar de eduarcol
[eduarcol] eduarcol is offline
Miembro Premium
 
Registrado: ago 2003
Ubicación: En los estados Zulia y Merida de Venezuela
Posts: 4.151
Poder: 25
eduarcol Va por buen camino
Hola te recomiendo leas la Guia de Estilo

Plantea mejor tu pregunta para que te podamos ayudar, con lo que dices lo unico que se me ocurre es un arreglo, pero mientras no escribas mejor no podre darte mas datos
__________________
...Yo naci en esta ribera del arauca vibr@d0r
Soy hermano de la espuma,
de la garza, de la rosa y del sol...
Viva Venezuela
Responder Con Cita
  #3  
Antiguo 23-11-2007
Avatar de marcoszorrilla
marcoszorrilla marcoszorrilla is offline
Capo
 
Registrado: may 2003
Ubicación: Cantabria - España
Posts: 11.221
Poder: 10
marcoszorrilla Va por buen camino
Pues una variable solamente puede contener un valor a la vez, si nos dices que es lo que quieres lograr quizás alguién te pueda ayudar, en un principio pienso que lo quieres lo lograrías utilizando matrices.

Un Saludo.
__________________
Guía de Estilo de los Foros
Cita:
- Ça c'est la caisse. Le mouton que tu veux est dedans.
Responder Con Cita
  #4  
Antiguo 23-11-2007
wlad wlad is offline
Registrado
 
Registrado: nov 2007
Posts: 3
Poder: 0
wlad Va por buen camino
este es el codigo
Código Delphi [-]
procedure TForm2.Image1Click(Sender: TObject);
begin
 Randomize;
  op:=Random(52);
  edit3.Visible:=false;
  case op of
  0 : Mayorarp(36+random(48));
  1 : menorarp(36+random(48));
  2 : aumentadoarp(36+random(48));
  3 : disminuidaarp(36+random(48));
  4 : triMayor(36+random(48));
  5 : trimenor(36+random(48));
  6 : triaumentada(36+random(48));
  7 : tridisminuida(36+random(48));
  8 : Mayormaj7arp(36+random(48));
  9 : menormaj7arp(36+random(48));
 10 : triMayormaj7(36+random(48));
 11 : trimenormaj7(36+random(48));
 12 : triMayor7(36+random(48));
 13 : trimenor7(36+random(48));
 14 : Mayor7arp(36+random(48));
 15 : menor7arp(36+random(48));
 16 : escromatica(36+random(48));
 17 : esfrigida(36+random(48));
 18 : eseolicomenor(36+random(48));
 19 : eslidio(36+random(48));
 20 : esmixolidio(36+random(48));
 21 : esdorio(36+random(48));
 22 : esjonicomayor(36+random(48));
 23 : eslocreo(36+random(48));
 24 : esmenorarmonico(36+random(48));
 25 : esmenormelodico(36+random(48));
 26 : esmenorpentatonica(36+random(48));
 27 : esmayorpentatonica(36+random(48));
 28 : esblues  (36+random(48));
 29 : segmenor (36+random(48));
 30 : segmayor (36+random(48));
 31 : termenor (36+random(48));
 32 : termayor (36+random(48));
 33 : cuartajus(36+random(48));
 34 : cuartaaug(36+random(48));
 35 : quintajus(36+random(48));
 36 : sexmenor (36+random(48));
 37 : sexmayor (36+random(48));
 38 : septmenor(36+random(48));
 39 : septmayor(36+random(48));
 40 : octava   (36+random(48));
 41 : armsegmenor (36+random(48));
 42 : armsegmayor (36+random(48));
 43 : armtermenor (36+random(48));
 44 : armtermayor (36+random(48));
 45 : armcuartajus(36+random(48));
 46 : armcuartaaug(36+random(48));
 47 : armquintajus(36+random(48));
 48 : armsexmenor (36+random(48));
 49 : armsexmayor (36+random(48));
 50 : armseptmenor(36+random(48));
 51 : armseptmayor(36+random(48));
 52 : armoctava   (36+random(48));
end;
caca:=op;
edit3.text:=floattostr(caca);
end;
lo que quiero es que la variable "op" q se guardo en "caca" luego se compare con "op2" para ejecutar cierto procedimiento, pero ese procedimiento debe ejecutarse cuando "op2" tome uno de edos valores.

Código Delphi [-]
 
procedure TForm2.Button9Click(Sender: TObject);
begin
if (op2=29) or (op2=41) then;
correcto:=correcto;
  incorrecto:=incorrecto;
  if op2=caca  then
  correcto:=correcto+1
  else
  incorrecto:=incorrecto+1;
  edit1.text:=floattostr(correcto);
  edit2.text:=floattostr(incorrecto);
  edit3.visible:=true;
end;

Última edición por jhonny fecha: 23-11-2007 a las 15:55:55. Razón: Colocar etiquetas DELPHI
Responder Con Cita
  #5  
Antiguo 23-11-2007
Avatar de eduarcol
[eduarcol] eduarcol is offline
Miembro Premium
 
Registrado: ago 2003
Ubicación: En los estados Zulia y Merida de Venezuela
Posts: 4.151
Poder: 25
eduarcol Va por buen camino
Si no haces caso a las recomendaciones muy poca ayuda recibiras, encierra el codigo entre etiquetas para que sea mas legible.

Segun lo estas haciendo funciona?? no funciona??, que error te da ese codigo??
__________________
...Yo naci en esta ribera del arauca vibr@d0r
Soy hermano de la espuma,
de la garza, de la rosa y del sol...
Viva Venezuela
Responder Con Cita
  #6  
Antiguo 23-11-2007
Avatar de Gabo
[Gabo] Gabo is offline
Miembro Premium
 
Registrado: mar 2007
Ubicación: Murcia (España)
Posts: 684
Poder: 18
Gabo Va por buen camino
No se entiende lo que quieres.
Recuerda que para que alguien se tome el tiempo de responderte, tú debes habértelo tomado para redactar bien la pregunta.

Me parece un problema de lógica...
__________________
Saludos,
Gabo

A menos que se indique lo contrario, el código estará hecho en C++Builder.
Responder Con Cita
  #7  
Antiguo 23-11-2007
wlad wlad is offline
Registrado
 
Registrado: nov 2007
Posts: 3
Poder: 0
wlad Va por buen camino
Thumbs up



mmm,la verdad es que soy nuevo en este foro,he leido el manual de estilo,pido disculpas ,si no m expresé bien en un comienzo,

con respecto al codigo ,no arroja ningun error,solo sucede un problema al ejecutar,este codigo corresponde a un entrenador auditivo ,que genera :escalas,intervalos y acordes de dos formas,arpegiados y armonicos,
lo que propone mi programa es que al ejecutar un boton genere un intervalo,una escala o acorde al azar....ese boton que genera los priocedimientos de las escas y acordes al azar,lo hace llamando los procedimientos por medio de una variable "OP" que se visualiza en toda la unidad(declarada en implementacion).luego el valor que tomo la variable, o sea de 0 a 52 se guardara en la variable "caca".por lo tanto lo que se necesita hacer,es responder a lo que se genero mediante un boton, por ejemplo si el boton que genera los procedimientos al azar ,arrojo un acorde mayor arpegiado, con un boton debiera responder tanto para cuando el acorde sea mayor arpegiado ,o mayor armonico ,o sea cuando "op" valga 0 o 4 en el codigo delphi.
entonces en el click del boton que responde a eso tiene como caption "mayor" (que sirvira para responde cuando el acorde es mayor arpegiado ,o mayor armonico)entonces al ejecutar el click del boton que se está usando para responder tiene que tener una variable que ya valga 0 o 4 , y luego se compare "op2" con la variable "caca" y si son iguales los valores guarde la respuesta en un EDIT para saber si es correcto ,si esos valores al compararse son distintos,la respuesta se guardara en el EDIT correspondiente a incorrecto...

gracias por tomarse el tiempo para leer esto..
Responder Con Cita
  #8  
Antiguo 23-11-2007
pcicom pcicom is offline
Miembro
 
Registrado: may 2003
Ubicación: MONTERREY MEXICO
Posts: 253
Poder: 21
pcicom Va por buen camino
Thumbs up

Cita:
Empezado por wlad Ver Mensaje
como puedo hacer para que una variable valga 2 valores al mismo tiempo y pueda ejecutar el mismo procedure,pa esos dos distintos valores

Creo Entender lo que mencionar, si es asi puedes darte una idea de como una variable puede tener 2 o mas Valores dando el formato que tu decidas:

1er Caso.

Código:
      cVar := '001Juan';

Esta variable es de tipo String y puede contener 2 Valores que puedes resuperar mediante alguna Instriccion.

    nNumero := strtoint(Copy(cVar,1,3)) ;     //  Esto seria = 1
    cNombre := strtoint(Copy(cVar,4)) ;     //  Esto seria = Juan

Entonces en la misma Variable cVar estarias Almacenando 2 Valores..
2do Caso.
Código:
Puedes Usar Variables de tipo registro

Type record cVar
    Numero:integer;
    Nombre:String
end;


Y Usarla Asi.

     cVar.Numero := 1;
     cVar.Nombre := 'Juan';

3er Caso
Código:
Paso de Variables entre funciones con Paso de Variables por Valor

function XValor(pValor:Variant):Integer; overload;
begin
     XValor := 0;
     if pValor>1 then
        XValor := pValor;
end;

function XValor(pValor:Variant):String; overload;
begin
    XValor := '';
    if pValor <> '' then
      XValor := pValor;
end;

Usandola seria asi:

      nSuma := nSUma + XValor(1);

      cNombre := 'Perez ' + XValor('Juan');

4o Caso

Código:
procedure XValor(pValor:Integer);
begin
    pValor := pValor + 100;
end;


Usandola seria asi:

      x := 50;      //   x = 50
      xValor(x);   //    x= 150

Si checas el Valor de X cambio al pasarla por la Funcion..


Este ejemplo se aplica muy sencillamente en el caso de una funcion para 
obtener el factorial de un Numero donde utilizar la recursividad para resolver
el valor usando y cambiando el valor de la variable una y otra vez..



function Fact(nValor:integer):integer;
begin
  if nValor < 1 then Result := 1
  else Result := nValor * Fact(nValor-1) ;
end; 



Ejecutandolo seria

    showmessage('El  Factorial de 5 = ',inttostr(Fact(5)));

// Si checas en la Misma Funcion cambia el Valor de la variable nValor


ESPERO TE SIRVE UN POCO DE AYUDA...
__________________
Poco ha de saber el que no pregunta.. Yo por eso soy un pregunton
Responder Con Cita
  #9  
Antiguo 24-11-2007
Avatar de marcoszorrilla
marcoszorrilla marcoszorrilla is offline
Capo
 
Registrado: may 2003
Ubicación: Cantabria - España
Posts: 11.221
Poder: 10
marcoszorrilla Va por buen camino
Cita:
Código Delphi [-]
cVar := '001Juan';

Esta variable es de tipo String y puede contener 2 Valores que puedes resuperar mediante alguna Instriccion.

    nNumero := strtoint(Copy(cVar,1,3)) ;     //  Esto seria = 1
    cNombre := strtoint(Copy(cVar,4)) ;     //  Esto seria = Juan

Entonces en la misma Variable cVar estarias Almacenando 2 Valores..
Que conste que ya había considerado este caso, pero consideré y sigo haciéndolo que la variable solamente contiene un valor, otra cosa es que nosotros los descompongamos posteriormente.

Un Saludo.
__________________
Guía de Estilo de los Foros
Cita:
- Ça c'est la caisse. Le mouton que tu veux est dedans.
Responder Con Cita
  #10  
Antiguo 01-12-2007
Avatar de courtois
courtois courtois is offline
Miembro
 
Registrado: abr 2006
Ubicación: Mexico DF
Posts: 200
Poder: 19
courtois Va por buen camino
Estoy de acuerdo con marcos, tecnicamente, la variable contiene un solo valor, operativamente ese valor puede representar mas de una cosa... por otro lado no entiendo para que se desea que una variable pueda tener 2 valores simultaneamente si el procedimiento se ejecuta con un valor o con el otro y no precisamente con los 2 al mismo tiempo
Responder Con Cita
  #11  
Antiguo 02-12-2007
jefferson jefferson is offline
Miembro
 
Registrado: dic 2007
Posts: 20
Poder: 0
jefferson Va por buen camino
colavorame

mira hermano lo que pasa es que es primera vez que estoy en este foro. pero la verdad es que necesito conocer aceca de delphi, porque me toca ver esa materia el semestre que viene, entonces necesito unas baces.

nota: sera que me puedes mandar elguna informacion direccion o documento en el cual yo conosca lo bacico de delphi.
puedes mandarlo a este correo jeffermosquera@hotmail.com

telo agradesco.
Responder Con Cita
  #12  
Antiguo 03-12-2007
Avatar de ArdiIIa
[ArdiIIa] ArdiIIa is offline
Miembro Premium
 
Registrado: nov 2003
Ubicación: Valencia city
Posts: 1.481
Poder: 22
ArdiIIa Va por buen camino
Cita:
Empezado por jefferson Ver Mensaje
nota: sera que me puedes mandar elguna informacion direccion o documento en el cual yo conosca lo bacico de delphi.
puedes mandarlo a este correo jeffermosquera@hotmail.com

telo agradesco.

Prueba con la Cara Oculta de Delphi

nota1:Mi corrector ortográfico se ha bloqueado a leer todas la palabras subrayadas de tu post anterior.

nota2: No es muy sano pedir las cosas para que las envíen por correo, de este modo si hay una solución y se publica en el foro, cualquier otra persona con la misma duda puede encontrar la ayuda necesaria.
__________________
Un poco de tu generosidad puede salvar la vida a un niño. ASÍ DE SENCILLO
Responder Con Cita
  #13  
Antiguo 19-12-2007
Avatar de angeluz
angeluz angeluz is offline
Miembro
 
Registrado: jun 2007
Posts: 19
Poder: 0
angeluz Va por buen camino
Lo que puedes hacer es declarar una arreglo de largo 2, donde en la primera posición guardes el primer valor y luego en la segunda posición guardes el segundo valor….

El código seria el siguiente.

//------------------------------------------------

procedure Run;
var
a: array of String;
begin
SetLength(a, 2); //Defines el largo del arreglo
a[0] := 'Valor_1'; //Asignas el valor 1
a[1] := 'Valor_2'; //Asignar el valor 2

Writeln(a[0]); // Muestra la valiable 1 "Valor_1"
end;

//------------------------------------------------


Espero te sirva
Saludos.
Responder Con Cita
  #14  
Antiguo 19-12-2007
Avatar de mamcx
mamcx mamcx is offline
Moderador
 
Registrado: sep 2004
Ubicación: Medellín - Colombia
Posts: 3.911
Poder: 25
mamcx Tiene un aura espectacularmamcx Tiene un aura espectacularmamcx Tiene un aura espectacular
Lo que pasa es que quieres meter un cuadrado en un circulo. En Apolo 13 lo hicieron, pero eran los cientificos de la NASA.

Hay algunos tips elementales para programar:

- Las funciones deben ser "cortas" con anidaciones que ojala no sean muy profundas.
- Una variable para cada cosa. Y solo una cosa a la vez
- Las variables son del tipo de datos preciso, en los lenguajes donde sea posible
- Un codigo bien escrito deberia poder leerse sin la necesidad de comentarios. Para ello:
-- Los nombres deberian de ser claros , anular el deseo de usar abreviaciones a menos que la abreviacion sea la forma mas clara de expresarlo
-- Buena identacion y en el caso de nombres compuestos decidirse por el estilo NombreCompuesto (nota las mayusculas) o Nombre_compuesto o nombreCompuesto. Lo importante es que sea obvia la division.
-- Utilizar bien la identacion, y apegarse a ella. Te recomiendo que adoptes un estilo de formateo de codigo. El oficial es http://dn.codegear.com/article/10280 (aunque los comentarios tan decorados no son practicos, el resto es Ok)

Y del ZEN de python (http://mundogeek.net/archivos/2007/0...zen-de-python/) aplica:

2. Explícito es mejor que implícito.

cVar es de naturaleza implicita y varia su significado. Eso es casi como tener una variable global.


Cuando se necesita una variable mutante se usa un VARIANT o un variable empaquetada como un array, record, o mi favorita, una clase poliformica. Por ejemplo:
Código Delphi [-]
TValor=class
   public
      Valor:Variant;
      function Recuperar
      begin
       //Escribir aqui como se decide que se devuelve esto o aquello. Al ponerlo como una funcion queda explicito en codigo que el valor es poliformico y que regla se sigue para recuperarlo. Ej: Al devolver el precio de un producto, hay una regla que determina que es o no con impuesto.
      end;

7. La legibilidad cuenta.

No es legible el codigo. No esta bien identado y a juzgar por las respuestas, fue dificil darse cuenta para todos de que trataba. Debido a lo especializado de tu codigo (y quizas esas abreviaturas tengan sentido en el ambito que se mueve) la unica forma de volverlo legible es con una nota de que es eso

Tambien te recomiendo que sigas el consejo de las palabras compuestas.

8. Los casos especiales no son suficientemente especiales como para romper las reglas.

Darle muchos significados a una variable por ahorrarse una declaracion tiende a complicar la logica.

9. Aunque lo pragmático gana a la pureza.

Solo es practico usar una vbl poliformica para algo que es de naturaleza poliformica. No como atajos

12. Cuando te enfrentes a la ambigüedad, rechaza la tentación de adivinar.

O sea, si hay que adivinar, el codigo tiene un defecto de diseño!

13. Debería haber una -- y preferiblemente sólo una -- manera obvia de hacerlo.
17. Si la implementación es difícil de explicar, es una mala idea.
18. Si la implementación es sencilla de explicar, puede que sea una buena idea.

__________________
El malabarista.
Responder Con Cita
  #15  
Antiguo 19-12-2007
Avatar de mamcx
mamcx mamcx is offline
Moderador
 
Registrado: sep 2004
Ubicación: Medellín - Colombia
Posts: 3.911
Poder: 25
mamcx Tiene un aura espectacularmamcx Tiene un aura espectacularmamcx Tiene un aura espectacular
P.D. Porque no funciona la etiqueta delphi?
__________________
El malabarista.
Responder Con Cita
  #16  
Antiguo 19-12-2007
[maeyanes] maeyanes is offline
Capo de los Capos
 
Registrado: may 2003
Ubicación: Campeche, México
Posts: 2.732
Poder: 23
maeyanes Va por buen camino
Hola mamcx...

Están deshabilitadas temporalmente en lo que actualizan algunos módulos del foro...


Saludos...
Responder Con Cita
Respuesta


Herramientas Buscar en Tema
Buscar en Tema:

Búsqueda Avanzada
Desplegado

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
Campo de tabla con valores con un mismo nombre kakesoft Conexión con bases de datos 14 28-11-2005 14:40:46
Puedo escribir en dos bases de datos al mismo tiempo ? Jorge Taveras MS SQL Server 4 24-06-2005 17:54:42
Que puedo hacer para conectarme ? Coco_jac Conexión con bases de datos 3 24-05-2005 18:30:29
Como puedo hacer para cojer la fecha del sistema automatico. SaLvaGe SQL 2 06-10-2004 09:18:51
como puedo hacer para enviar un quick report por email?? merlin Impresión 4 05-12-2003 18:06:58


La franja horaria es GMT +2. Ahora son las 19:43:39.


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