Foro de elhacker.net

Programación => Programación C/C++ => Mensaje iniciado por: Riki_89D en 5 Agosto 2010, 22:00 pm



Título: Crear Variable en runtime con nombre propio
Publicado por: Riki_89D en 5 Agosto 2010, 22:00 pm
Hola que tal andan?¿

bueno tengo una duda,con el operador "new" y "delete" creamos variables dinamica en tiempo de ejecutación y las podemos destruir cuando se nos entoje,pero mi caso es otro ahora,necesito (si es posbibe) crear una variable en runtime pero mediante un control EDIT poner el nombre de dicha variable tmb,por ejemplo en el control edit escribir "Texto" i que se cree una variable que se llame Texto y que sea de tipo char (en este caso claro),osea que haga esto:
Código
  1. char Texto;
  2.  

lo de "Texto" es el nombre que yo escribo en el EDIT,como se puede hacer eso?¿


salu2


Título: Re: Crear Variable en runtime con nombre propio
Publicado por: leogtz en 5 Agosto 2010, 22:12 pm
Que yo sepa no se puede, tienen que ser nombres ya establecidos.


Título: Re: Crear Variable en runtime con nombre propio
Publicado por: Riki_89D en 5 Agosto 2010, 22:17 pm
Lo imaginaba...:(


gracias por tu respuesta


Título: Re: Crear Variable en runtime con nombre propio
Publicado por: bizco en 5 Agosto 2010, 22:39 pm
realmente es absurdo, el nombre de la variable es valido para ti, luego se transforma en una direccion de memoria, no tiene mucho sentido. ¿que intentas hacer?


Título: Re: Crear Variable en runtime con nombre propio
Publicado por: Riki_89D en 5 Agosto 2010, 22:45 pm
Bueno no son mas que pruebas que realizo yo no intento hacer nada pero keria probar aver si se podria hacer eso i despues desde otro control edit pues indicarle el nombre de la variable a acceder y pues acceder a esa variable,,no es mas que eso,puede sonar tonteria pero necesito hacerlo,claro es una posicion de memoria pero nse como hacerlo :(


Título: Re: Crear Variable en runtime con nombre propio
Publicado por: bizco en 5 Agosto 2010, 22:49 pm
pues si quieres ponerle un nombre te haces una lista que contenga un campo char[N] y ahi pones el nombre.

struct tal
{
char Nombre[N]
int valor
otra *tal
}

con eso podras tener tantas variables como quieras con su nombre.


Título: Re: Crear Variable en runtime con nombre propio
Publicado por: Riki_89D en 5 Agosto 2010, 22:55 pm
Hola ctlon,perdona mi ignorancia,gracias a gente como tu aprendo por eso:)

es que no entiendo muy bien lo de la estructura,

es decir por ejemplo en lo de char[N] esa N que es lo que iria alli?¿


saludos


Título: Re: Crear Variable en runtime con nombre propio
Publicado por: bizco en 5 Agosto 2010, 23:59 pm
N es el numero de caracteres.


Título: Re: Crear Variable en runtime con nombre propio
Publicado por: carlitos_jajajajaja en 6 Agosto 2010, 08:55 am
Puede que este codigo sea demasiado avanzado, pero es la unica forma que conozco para crear variables de usuario, lo comente lo mejor q pude, pero pregunta no mas si no entendiste aslgo

Tendras que averiguar por el contenedor map de la libreria c++, que te permite crear "tablas" de datos
Código
  1. #include <iostream>
  2. #include <map> //el contenedor map, investiga sobre el
  3. #include <string>
  4. using namespace std;
  5.  
  6. typedef map<string, int> TablaVariables;
  7.  
  8. void mostrar_menu();
  9.  
  10. /*Un par es un tipo que contiene 2 valores
  11. En este caso una cadena y un entero
  12. que es lo q necesita una variable: nombre y valor
  13. */
  14. typedef pair<string, int> variable;
  15.  
  16. int main()
  17. {
  18. TablaVariables variables_del_usuario;
  19.    char opcion_elegida = 0;
  20.  
  21.    while(opcion_elegida != 4)
  22.    {
  23.        mostrar_menu();
  24.        cin >> opcion_elegida;
  25.        cin.get();
  26.        switch(opcion_elegida)
  27.        {
  28.            case '1':
  29.            {
  30.                     string nombre;
  31.  
  32.                     /*Creamos un par con informacion sobre el elemento que agregaremos,
  33.                      y un valor bool que indica si la variable era nueva o repetida
  34.                      */
  35.                     pair<TablaVariables::iterator, bool> resultado;
  36.                     cout << "Introduzca el nombre de la nueva variable" << endl;
  37.                     getline(cin, nombre);
  38.  
  39.                     /*Usamos el metodo insert de map, con una variable con el nombre especificado
  40.                      y el valor por defecto de los enteros: 0
  41.                      el resultado nos dira si la variable ya existia o no
  42.                      */
  43.                     resultado = variables_del_usuario.insert(variable(nombre, 0));
  44.                     if(resultado.second == true)
  45.                     {
  46.                         cout << "Variable agregada ;)" << endl;
  47.                     }
  48.                     else
  49.                     {
  50.                         cout << "ERROR!! Ya existe una variable con ese nombre" << endl;
  51.                     }
  52.                     break;
  53.            }
  54.            case '2':
  55.            {
  56.                     string nombre;
  57.  
  58.                     /*Contendra el valor de la variable buscada
  59.                      si esa variable no existe, sera igual a variables_del_usuario.end()
  60.                      */
  61.                     TablaVariables::iterator resultado;
  62.                     cout << "Introduzca el nombre de la variable que quiere ver" << endl;
  63.                     getline(cin, nombre);
  64.                     resultado = variables_del_usuario.find(nombre);
  65.  
  66.                     if(resultado == variables_del_usuario.end())
  67.                     {
  68.                         cout << "ERROR!!! Esa variable no existe" << endl;
  69.                     }
  70.                     else
  71.                     {
  72.                         /*resultado es un iterador (algo asi comop un puntero) al tipo variable*/
  73.                         cout << "El valor de la variable " << nombre << " es " << resultado->second << endl;
  74.                         cout << "desea modificarlo??? (y/n)" << endl;
  75.                         char yn;
  76.                         cin >> yn;
  77.                         if(yn == 'y')
  78.                         {
  79.                             int nuevovalor;
  80.                             cout << "Introduzca nuevo valor para " << nombre << endl;
  81.                             cin >> nuevovalor;
  82.                             variables_del_usuario[nombre] = nuevovalor;
  83.                         }
  84.                     }
  85.            }
  86.        }
  87.    }
  88.  
  89.  
  90. }
  91.  
  92.  
  93. void mostrar_menu()
  94. {
  95.    cout << "\n\n\n";
  96. cout << "-----MENU-----" << endl;
  97. cout << "Presione 1 para agregar una variable" << endl;
  98. cout << "Presione 2 para ver el valor de una variable" << endl;
  99. cout << "Presione 3 para salir :) " << endl;
  100. cout << "introduzca su opcion " << endl;
  101. }
  102.  
  103.  



Espero que te sirva :D