Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

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

Grupo de Teaming del ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 17-05-2020
usuario1000 usuario1000 is offline
Miembro
 
Registrado: nov 2016
Posts: 86
Poder: 8
usuario1000 Va por buen camino
Variables Apuntando A Otra Variable

Hola a todos.
¡¡¡Espero que estéis todos bien!!!
Tengo una duda y después de buscar por ahí y en el foro no he encontrado mucho que me sirva.
Es algo tan sencillo como guardar "el nombre de una variable" en UNA "variable" y luego utilizar esa "variable" para asignarle un valor, pero que realmente se lo estás asignando a la variable que está guardada en esa segunda variable.
En otros lenguajes sería algo así como(no recuerdo exactamente la sintaxis)

b = &c; // guardo en b el nombre de la variable que contiene C.
&c = 15; // Estaría guardando 15, no en C, sino en el nombre de la variable que contiene C.

Saludos.

Última edición por Casimiro Notevi fecha: 17-05-2020 a las 19:05:59.
Responder Con Cita
  #2  
Antiguo 17-05-2020
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.043
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
Creo que te refieres a punteros, no a "nombre de la variable".

Código Delphi [-]
var
  i: integer; 
  a: integer;     
  Pi: PInteger;
begin
  i:= 100;
  Pi:= @i;  <<--- Fill pointer to i with the address of i
  a:= Pi^;  <<--- Complicated way of writing (a:= i)
            <<--- Read: Let A be what the pointer_to_i points to
  Pi^:= 200;<<--- Complicated way of writing (i:= 200)
  writeln('i = '+IntToStr(i)+' and a = '+IntToStr(a));
Responder Con Cita
  #3  
Antiguo 17-05-2020
usuario1000 usuario1000 is offline
Miembro
 
Registrado: nov 2016
Posts: 86
Poder: 8
usuario1000 Va por buen camino
Muchas gracias por tu pronta respuesta.

Lo pondré en práctica.

Gracias.

Última edición por Casimiro Notevi fecha: 17-05-2020 a las 21:47:27.
Responder Con Cita
  #4  
Antiguo 17-05-2020
usuario1000 usuario1000 is offline
Miembro
 
Registrado: nov 2016
Posts: 86
Poder: 8
usuario1000 Va por buen camino
Red face

Siento decir que no me ha funcionado.


El problema es que tengo 5 variables globales declarada de la siguiente forma:





aux_reg1_remesas: array[0..299] of char;
aux_reg2_remesas: array[0..299] of char;
aux_reg3_remesas: array[0..299] of char;
aux_reg5_remesas: array[0..299] of char;



Las posiciones de cada una de las variables las voy rellenando mediante una "función en comun" que utilizo con la siguiente estructura:


Código Delphi [-]
function encomun(variable:PInteger; cadena:string; longitud:integer); // no sé como declarar el parámetro de la funcion "variable", pero así no funciona.

var 

  i:integer;

begin
     // aquí asigno el valor a la posición que me interesa de la variable que quiera de las 5 anteriores.
   ...

     variable[i] := cadena; // no es exactamente así pero la idea es esta. No se como ponerlo aquí para que el compilador lo acepte.

   ...

end




procedure registro;
begin
     ....

     encomun(aux_reg1_remesas, cadena, 3); // La idea es que le mando a la funcion "encomun" la variable que quiero rellenar con la cadena que quiero y con las posiciones que quiero.
     encomun(aux_reg2_remesas, cadena, 5); // La idea es que le mando a la  funcion "encomun" la variable que quiero rellenar con la cadena que  quiero y con las posiciones que quiero.
     ....
     ....

end;

Espero haberme explicado.


Gracias.
Responder Con Cita
  #5  
Antiguo 17-05-2020
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.043
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
Si declaras esto:
Código Delphi [-]
aux_reg1_remesas: array[0..299] of char;
Y a la función envías ese array de char:
Código Delphi [-]
encomun(aux_reg1_remesas, cadena, 3);
No puedes esperar allí un puntero a entero (pinteger)
Código Delphi [-]
function encomun(variable:PInteger; cadena:string; longitud:integer);
O no lo he entendido.
Responder Con Cita
  #6  
Antiguo 18-05-2020
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
Existe razones para usar punteros.

MUY raramente.

---

Una de las lecciones para mantener un código sin líos es EVITAR MUTACIONES (osea: reducir al máximo el alterar los datos desde multiples puntos). Un ejemplo concreto es todo lo que se parezca a una variable global (que es lo que esto parece).

Es mejor pasar los datos, y crear nuevos en base a estos. Algo asi:

Código Delphi [-]
function generar(entrada):array[0..299] 
begin
  nuevo := array[0..299];
  //copias o generas los datos desde entrada y retornas
  result:= nuevo;
end
__________________
El malabarista.
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
¿BCB6 Como Cambiar valor Variable que esta en otra unit? JXJ C++ Builder 3 03-10-2013 01:17:36
Asignar el valor de una variable de php a una variable js que puede no existir jandroruiz PHP 5 04-03-2013 12:23:02
Almacenando datos en una variable de otra unidad R0M3R0 OOP 11 21-08-2008 21:09:04
Refrescar un DBGrid y que el puntero siga apuntando donde estaba Carmelo Cash OOP 11 11-04-2008 10:59:39
¿informe de Crystal apuntando a diferentes usuarios de oracle? dnieto Varios 0 30-09-2005 13:21:33


La franja horaria es GMT +2. Ahora son las 01:13:47.


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