Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

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


Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 25-11-2006
[David] David is offline
Miembro Premium
NULL
 
Registrado: may 2003
Ubicación: Málaga
Posts: 417
Poder: 17
David Va por buen camino
Smile uso de punteros

Tengo un código parecido a este :
Código Delphi [-]
type
Registro = Record
icampo1 : integer;
icampo2 : integer;
scampo1 : string;
scampo2 : string;
end;

PRegistro = ^Registro;

TForm1 = class(TForm)
private
//---------------
public
function ObtenerRegistro:PRegistro;
end;
implamentation

TForm1.function ObtenerRegistro:PRegistro;
begin 
Result := PRegistro(valor); // valor puede ser de cualquier tipo , eso creo
end;

vale , el código es parecido al que he puesto , hay cosas que no entiendo .

Qué diferencia hay entre poner PRegistro = ^Registro; y poner PRegistro = Registro;

Por que de la segunda forma no compila .

Luego en la función que he puesto , por que se pone el puntero y entre parentesis un valor , eso que significa , que utilidad tiene .

Un saludo
Responder Con Cita
  #2  
Antiguo 25-11-2006
Avatar de seoane
[seoane] seoane is offline
Miembro Premium
NULL
 
Registrado: feb 2004
Ubicación: A Coruña, España
Posts: 3.717
Poder: 19
seoane Va por buen camino
Caramba, pues parece que estas un poco verde en esto de los punteros

Un puntero es una variable que almacena la posición de la memoria donde esta almacenada otra variable.

Cita:
Qué diferencia hay entre poner PRegistro = ^Registro; y poner PRegistro = Registro;
Pues al ponerle el ^ delante estamos indicando que el tipo PRegistro es un puntero, es decir, una variable de 4 bytes que almacenara la posición en memoria de una variable de tipo Registro.

Cita:
Luego en la función que he puesto , por que se pone el puntero y entre parentesis un valor , eso que significa , que utilidad tiene .
Eso es un Typecast, básicamente se le esta diciendo al compilador que trate una variable de un tipo como si fuera de otro tipo diferente. Supongamos que tenemos un puntero sin tipo (valor) y queremos utilizarlo como un PRegistro, pues hacemos PRegistro(valor) y ya podemos utilizarlo como si se tratase de un PRegistro.
Responder Con Cita
  #3  
Antiguo 25-11-2006
Avatar de roman
roman roman is offline
Moderador
 
Registrado: may 2003
Ubicación: Ciudad de México
Posts: 20.239
Poder: 10
roman Tiene un aura espectacularroman Tiene un aura espectacular
Si quieres hacer preguntas acerca de un código que has visto, lo mejor será que lo escribas tal como es y no como recuerdas.

La línea

PRegistro = ^Registro;

está declarando al tipo de datos PRegistro como un apuntador o puntero a Registro. Si omites el ^, estarás declarando simplemente a PRegistro como un sinónimo de Registro, vamos, que se trataría del mismo tipo de datos. Pero eso no debería dar un error al compilar, así que supongo que el error viene más adelante. En todo caso, siempre es recomendable qe indiques el punto exacto donde obtienes el error y el texto del mensaje que recibes.

En cuanto a lo de PRegistro(valor) pues no puedes poner cualquier cosa en valor, por ello digo que deberás escribir el código tal cual lo has visto. Pero en términos generales lo que está haciendo es un moldeo de tipos. El moldeo de tipos se usa para "engañar" al compilador y convencerlo de que una variable dada es del tipo de datos que nosotros le estamos diciendo aun cuando no esté declarada de esa forma.

Algunas funciones de la API de Windows, por dar un ejemplo, devuelven valores numéricos (LongInt) que en realidad son apuntadores a una estuctura de datos. Para que el compilador pueda compilar nuestro acceso a la estructura es necesario hacer el moldeo.

Así, regresando al código que pones, pudiera ser que valor fuese eso, un entero que obtuviste de otra parte pero que en realidad sea un apuntador a una variable de tipo Registro.

No puedes poner algo como

valor^.scampo1

porque el compilador protesta al ver que valor no es un apuntador. Entonces lo moldeas para forzar al compilador:

PRegistro(valor)^.scampo1

// Saludos

Última edición por roman fecha: 25-11-2006 a las 15:30:36.
Responder Con Cita
  #4  
Antiguo 25-11-2006
[David] David is offline
Miembro Premium
NULL
 
Registrado: may 2003
Ubicación: Málaga
Posts: 417
Poder: 17
David Va por buen camino
El error me da en la función obviamente , si quito el ^ , pero el caso es por que .

Os voy a poner otro ejemplo .

Tengo este código :

Código Delphi [-]
TClase = class
public
icampo : Real;
end;

procedure loquesea(clase:TClase);
var
ivalor : ^Real;
begin 

 ivalor := @Clase.icampo;
end;

Mi pregunta , cual es la diferencia con este otro código :

Código Delphi [-]
TClase = class
public
icampo : Real;
end;

procedure loquesea(clase:TClase);
var
ivalor : Real;
begin
    Clase := TClase.Create;
    ivalor := Clase.icampo;

end;
Saludos
Responder Con Cita
  #5  
Antiguo 25-11-2006
Avatar de seoane
[seoane] seoane is offline
Miembro Premium
NULL
 
Registrado: feb 2004
Ubicación: A Coruña, España
Posts: 3.717
Poder: 19
seoane Va por buen camino
Código Delphi [-]
var
  ivalor : ^Real;
begin 
   ...
  ivalor := @Clase.icampo;

Aquí estas asignando a la variable ivalor la posición de memoria que ocupa la variable icampo.

Código Delphi [-]
var
  ivalor : Real;
begin
   ...    
  ivalor := Clase.icampo;

Aquí sin embargo estas asignando el valor de la variable icampo a la variable ivalor.


Vamos a ver si puedo ponerte un ejemplo sobre punteros:
Código Delphi [-]
var
  i: integer;
  p: ^integer;
begin
  // Aqui asignamos a la variable i el valor 5
  i:= 5;
  // Aqui asignamos a p la direccion de la variable i,
  // para eso utilizamos el operador @
  p:= @i;
  // Ahora vamos a cambiar el valor de i,
  // en este caso el operador ^ inica que queremos
  // acceder a la posicion de memoria a la que apunta p
  p^:= 10;
  // comprobamos que el valor de i a cambiado
  ShowMessage(IntToStr(i));
end;

Espero no haberte liado mas
Responder Con Cita
  #6  
Antiguo 25-11-2006
Avatar de Lepe
[Lepe] Lepe is offline
Miembro Premium
NULL
 
Registrado: may 2003
Posts: 7.424
Poder: 24
Lepe Va por buen camino
A ver si lo termino de complicar o simplificar:
Primero:
Todas las variables se guardan en una dirección de RAM (no todas... pero bueno, aceptamos barco) y la estructura de ram podría asemejarse a esto:
Código:
DIRECCION RAM	NOMBRE VARIABLE		VALOR DE LA MEMORIA	
 200		  i			5
 300		  p			200
Cuando dice i:=5, la variable i se guarda en la dirección 200 de la ram, se accede a esa dirección y se cambia el contenido por un 5.

Cuando dice p := @i se mira donde está la variable "p" que es la dirección 300. Ahora en el valor de la memoria, se debe escribir "la dirección de "i" (por aquello del operador @), y se guarda el 200.

Cuando se accede con p^:= 10 el compilador busca la variable "p", que está en la dirección 300, y a partir de ahí, (como está el operador ^) se trata el contenido de la memoria como una dirección de memoria, o sea, se mira el valor de la memoria (el 200) y como está el operador ^, ahora se busca en la dirección 200 de la memoria, se capta el valor que haya, (el 5) y se sustituye por el 10. Esto si no recuerdo mal se llamaba "modo de direccionamiento indirecto"

Saludos
__________________
Si usted entendió mi comentario, contácteme y gustosamente,
se lo volveré a explicar hasta que no lo entienda, Gracias.

Última edición por Lepe fecha: 25-11-2006 a las 18:15:52.
Responder Con Cita
  #7  
Antiguo 25-11-2006
[David] David is offline
Miembro Premium
NULL
 
Registrado: may 2003
Ubicación: Málaga
Posts: 417
Poder: 17
David Va por buen camino
Vale , ya voy entendiendo algo , aunque me planteo una duda . No veo la necesidad de usar punteros con Delphi.

Si i := 10 , y p:= @ i ; y p^ := 50 , entonces vale i := 50 ;

pero no es lo mismo poner i := 10 -> p := 50 ; -> i := p ;

No le voy pues la utilidad .
Responder Con Cita
  #8  
Antiguo 25-11-2006
Avatar de seoane
[seoane] seoane is offline
Miembro Premium
NULL
 
Registrado: feb 2004
Ubicación: A Coruña, España
Posts: 3.717
Poder: 19
seoane Va por buen camino
Cita:
Empezado por David
No le voy pues la utilidad
Ya le veras la utilidad, cuando tus programas se hagan mas complejos y tengas un poco mas de experiencia, le veras la utilidad. El caso que te pongo de ejemplo es intencionadamente simple, es verdad que en ese caso no ganamos nada al usar punteros, pero en MUCHOS otros caso si.

Podría ponerte muchos ejemplos de punteros, empezando porque en delphi las variables de objetos son punteros, al igual que las de tipo string, aunque delphi las maneja de tal forma que a veces no reparamos en ello, y terminando por muchas de las funciones de la API que utilizan punteros como parámetros. También hay muchas ocasiones en las que tenemos que tratar directamente con la memoria, por ejemplo cuando tenemos que tratar con grandes volúmenes de datos almacenados en ella. Los punteros son algo muy importante en programación y no deberías de subestimarlos.
Responder Con Cita
  #9  
Antiguo 25-11-2006
Avatar de roman
roman roman is offline
Moderador
 
Registrado: may 2003
Ubicación: Ciudad de México
Posts: 20.239
Poder: 10
roman Tiene un aura espectacularroman Tiene un aura espectacular
Cita:
Empezado por David
El error me da en la función obviamente
Hombre, si es tan obvio no entiendo por qué preguntas.

// Saludos
Responder Con Cita
  #10  
Antiguo 25-11-2006
Avatar de roman
roman roman is offline
Moderador
 
Registrado: may 2003
Ubicación: Ciudad de México
Posts: 20.239
Poder: 10
roman Tiene un aura espectacularroman Tiene un aura espectacular
Yo por el contrario diría que en Delphi prácticamente no hay necesidad de usar apuntadores. Cierto que si debemos trabajar con funciones de la API, los necesitaremos y nunca está de más conocerlos y saber usarlos. Pero una gran parte de los casos, no verás apuntadores en tus aplicaciones, a menos, claro, que intencionalmente quieras usarlos

// Saludos
Responder Con Cita
  #11  
Antiguo 25-11-2006
Avatar de seoane
[seoane] seoane is offline
Miembro Premium
NULL
 
Registrado: feb 2004
Ubicación: A Coruña, España
Posts: 3.717
Poder: 19
seoane Va por buen camino
Cita:
Empezado por roman
Yo por el contrario diría que en Delphi prácticamente no hay necesidad de usar apuntadores. Cierto que si debemos trabajar con funciones de la API, los necesitaremos y nunca está de más conocerlos y saber usarlos. Pero una gran parte de los casos, no verás apuntadores en tus aplicaciones, a menos, claro, que intencionalmente quieras usarlos

// Saludos
Tienes razón, si no quieres no tienes porque usar un solo puntero en una aplicación de Delphi. De hecho estaba intentando buscar un ejemplo para poner en mi mensaje anterior, y no encontré nada que se pudiera hacer con punteros y no se pudiera hacer con otro de los recursos de que dispone Delphi (arrays dinámicos, streams, strings, etc ...). Pero el caso, es que internamente lo único que hacen esas herramientas es manejar los punteros por nosotros, y a veces, lo que apetece es bajar un poco y manejar las cosas uno mismo. Aunque por lo visto a mi me suele apetecer mas de lo normal
Responder Con Cita
  #12  
Antiguo 25-11-2006
Avatar de Lepe
[Lepe] Lepe is offline
Miembro Premium
NULL
 
Registrado: may 2003
Posts: 7.424
Poder: 24
Lepe Va por buen camino
Por supuesto que no tiene utilidad ni sentido... es un caso didáctico. Pongamos por ejemplo el caso que indica roman, pero con algo más cercano a nosotros, la propiedad Tag que tienen todos los controles, imaginamos un Checkbox, que al marcarlo, queremos poner un texto en un Edit, podríamos hacer algo así:

En el Oncreate:
Código Delphi [-]
  checkbox1.tag := integer(Edit1);

Al hacer clic en el checkbox:
Código Delphi [-]
TEdit(checkbox1.tag).Text:= 'Opcion activa';

para un checkbox es complicarse la vida, pero extrapolemos las cosas.... 30 checkbox asociados cada uno con un Edit. podemos tener un solo evento Onclick del checkbox, pero común a los 30 checkboxs de esta forma:
Código Delphi [-]
TEdit(    TCheckbox(Sender).tag     ).Text:= 'Opcion activa';
Sender : será el checkbox donde se haga clic
TCheckbox(Sender) : es necesario un moldeo de tipos, para que el compilador trate a ese Tobject como un Tcheckbox
TCheckbox(Sender).tag : Accedemos a su propiedad Tag, aquí se está usando lo ya comentado por roman, usar un tipo de datos integer para almacenar un puntero.
TEdit(TCheckbox(Sender).tag) : moldeo necesario para que ese .Tag lo trate como un TEdit en lugar de un tipo de dato entero.
Por último accedemos a su propiedad Text y lo modificamos.

Si, ya, complejo ¿acaso es mejor algo así?:

Onclic del checkbox1:
Código Delphi [-]
edit1.text:= 'Opcion activa';

Onclic del checkbox2:
Código Delphi [-]
edit2.text:= 'Opcion activa';

Onclic del checkbox3:
Código Delphi [-]
edit3.text:= 'Opcion activa';

... no sigo, ya lo entiendes de sobra .

Saludos.
__________________
Si usted entendió mi comentario, contácteme y gustosamente,
se lo volveré a explicar hasta que no lo entienda, Gracias.
Responder Con Cita
  #13  
Antiguo 25-11-2006
Avatar de Lepe
[Lepe] Lepe is offline
Miembro Premium
NULL
 
Registrado: may 2003
Posts: 7.424
Poder: 24
Lepe Va por buen camino
Ya veo que roman y seoane se han adelantado, abstrayéndome un poco del problema, te diré que los punteros te serán esenciales cuando necesites más potencia en los controles "simplones" que trae delphi, ya que con el simple Tag se pueden hacer virguerías, no solo asociar un TEdit, sino cualquier objeto o clase que exista o tú mismo crees... casi nada esa frasecita .

Saludos
__________________
Si usted entendió mi comentario, contácteme y gustosamente,
se lo volveré a explicar hasta que no lo entienda, Gracias.
Responder Con Cita
  #14  
Antiguo 25-11-2006
Avatar de roman
roman roman is offline
Moderador
 
Registrado: may 2003
Ubicación: Ciudad de México
Posts: 20.239
Poder: 10
roman Tiene un aura espectacularroman Tiene un aura espectacular
Lamento diferir. Usar la propiedad Tag como apuntador a una estructura, puede ser sin duda muy útil y es, de hecho, un muy buen ejemplo del uso de apuntadores en Delphi. No obstante, no me parece que sea una técnica a usar como una metodología corriente. Si requieres Edits que referencien a otro objeto entonces defines un derivado de TEdit al que agregas la propiedad pertinente. Es decir, ese uso de apuntadores puede sacarnos de apuros pero yo no lo tomaría como una práctica de programación. La VCL hace uso de algo muy similar en muchos de sus controles y ciertamente es algo muy potente; pero lo hace así porque no le queda de otra, pues es necesario para comunicarse con la API de Windows.

// Saludos
Responder Con Cita
  #15  
Antiguo 25-11-2006
Avatar de roman
roman roman is offline
Moderador
 
Registrado: may 2003
Ubicación: Ciudad de México
Posts: 20.239
Poder: 10
roman Tiene un aura espectacularroman Tiene un aura espectacular
Otro ejemplo, que seguramente Lepe tiene muy en mente, del uso de apuntadores en Delphi, es el VirtualTreeView. Yo lo pondría como la excepción que hace a la regla. Su autor es un magnífico programador con orígenes en C y, según creo recordar, el VirtualTreeView fue de lo primero que hizo en Delphi, así que no es de extrañar tanto uso de apuntadores. Claro está que no se le puede reprochar nada con tan magnífico componente, pero, lo dicho, es una honrosa excepción.

Tampoco digo que esté prohibido usar apuntadores en Delphi ni mucho menos, pero si una diferencia hay con C, es precisamente la poca necesidad de usarlos, por el tipo de datos que maneja Delphi y porque Delphi es un lenguaje a un nivel un poco más alto que C (alto aquí no tiene nada que ver con mejor).

// Saludos
Responder Con Cita
  #16  
Antiguo 25-11-2006
Avatar de AzidRain
[AzidRain] AzidRain is offline
Miembro Premium
NULL
 
Registrado: sep 2005
Ubicación: Córdoba, Veracruz, México
Posts: 2.914
Poder: 16
AzidRain Va por buen camino
Yo creo que nos complicamos mucho con los apuntadores famosos. Estos vienen diría yo de la prehistoria de Delphi (Pascal) en donde en mas de una ocasión habia que usarlos. A todos nos tocó seguramente lo de las infames listas ligadas o doblemente ligadas que es el ejemplo clásico de como usarlos.

En la actualidad con Delphi pienso que no es necesario utilizarlos directamente dado que han quedado "encapsulados" por así decirlo en la forma de variables de objeto que por lo que no son otra cosa que apuntadores disfrazados de variables simples. De hecho al hacer un simple

Código Delphi [-]
  MyVentana := TForm.Create(nil);

En realidad estamos asignando memoria suficiente para que quepa una estructura TForm y almacenamos la direccion de esa memoria en un puntero que llamaremos MyVentana (aunque para nuestro código MyVentana no es un puntero sino un "objeto").

La abstracción de la implementacion de OOP en Delphi se encaraga de tapar los problemas comunes de usar "^" y todo lo que ya conocemos.

La solución simple es no usar punteros directamente, crear objetos simples que contengan lo que queramos y utilizarlos como lo hariamos con cualquier otro objeto y dejar que Delphi haga el trabajo por nosotros.

Y como dice Roman, me parece que meterse con punteros sin tener mucha experiencia es meterse en camisa de once varas. Sobre todo porque difícilmente requerirás usarlo. Ahora que estoy haciendo otras cosas en Java noté que ahi no existen los punteros como tales aunque en realidad se manejan como objetos.
__________________
AKA "El animalito" ||Cordobés a mucha honra||
Responder Con Cita
  #17  
Antiguo 26-11-2006
Avatar de Lepe
[Lepe] Lepe is offline
Miembro Premium
NULL
 
Registrado: may 2003
Posts: 7.424
Poder: 24
Lepe Va por buen camino
Coincido con AzidRain, pero me atrevería a decir que es necesario saber los conceptos de punteros y demás teoría, para aplicarlos correctamente. Si veo algo definido como Integer, jamás se me ocurriría el truco de asignarle un objeto y después usar un moldeo de tipos.

Hay que saber:
- Qué es un puntero.
- Como funciona.
- Cuanto ocupa un puntero.
- Cuanto ocupa un Integer.

Normalmente todo eso se aprende de forma teórica, pero no se llega hasta el punto que hemos llegado en este hilo ¿no os parece?

Saludos
__________________
Si usted entendió mi comentario, contácteme y gustosamente,
se lo volveré a explicar hasta que no lo entienda, Gracias.
Responder Con Cita
  #18  
Antiguo 27-11-2006
Avatar de roman
roman roman is offline
Moderador
 
Registrado: may 2003
Ubicación: Ciudad de México
Posts: 20.239
Poder: 10
roman Tiene un aura espectacularroman Tiene un aura espectacular
Cita:
Empezado por Lepe
¿no os parece?
De acuerdo contigo. Aunque usualmente no se requieran apuntadores en un programa Delphi, es un concepto que no debe ni puede desdeñarse.

// Saludos
Responder Con Cita
  #19  
Antiguo 12-12-2009
oswaldo77_77 oswaldo77_77 is offline
Registrado
NULL
 
Registrado: dic 2009
Posts: 2
Poder: 0
oswaldo77_77 Va por buen camino
RE: siguiendo con el tema de los punteros

Holas de nuevo

Introduje un tema, en el foro de APIs, pero mas me parece que pertenece a este grupo (y ya lo dije)

El problema basicamente, es que tengo una estructura de registro llamada .... definida en una unidad TAPI.pas, con ella consigo hacer todo, excepto la finalidad, obtener un numero, esta es la estructura:

Código:
 
  LPLineCallInfo = ^TLineCallInfo;                   
  TLineCallInfo = record
    dwTotalSize,
    dwNeededSize,
    dwUsedSize: Longint;
    hLine: THLine;
    dwLineDeviceID,
    dwAddressID,
    dwBearerMode,
    dwRate,
    dwMediaMode,
    dwAppSpecific,
    dwCallID,
    dwRelatedCallID,
    dwCallParamFlags,
    dwCallStates,
    dwMonitorDigitModes,
    dwMonitorMediaModes: Longint;
    DialParams: TLineDialParams;
    dwOrigin,
    dwReason,
    dwCompletionID,
    dwNumOwners,
    dwNumMonitors,
    dwCountryCode,
    dwTrunk,
    dwCallerIDFlags,
    dwCallerIDSize,
    dwCallerIDOffset,
    dwCallerIDNameSize,
    dwCallerIDNameOffset,
    dwCalledIDFlags,
    dwCalledIDSize,
    dwCalledIDOffset,
    dwCalledIDNameSize,
    dwCalledIDNameOffset,
    dwConnectedIDFlags,
    dwConnectedIDSize,
    dwConnectedIDOffset,
    dwConnectedIDNameSize,
    dwConnectedIDNameOffset,
    dwRedirectionIDFlags,
    dwRedirectionIDSize,
    dwRedirectionIDOffset,
    dwRedirectionIDNameSize,
    dwRedirectionIDNameOffset,
    dwRedirectingIDFlags,
    dwRedirectingIDSize,
    dwRedirectingIDOffset,
    dwRedirectingIDNameSize,
    dwRedirectingIDNameOffset,
    dwAppNameSize,
    dwAppNameOffset,
    dwDisplayableAddressSize,
    dwDisplayableAddressOffset,
    dwCalledPartySize,
    dwCalledPartyOffset,
    dwCommentSize,
    dwCommentOffset,
    dwDisplaySize,
    dwDisplayOffset,
    dwUserUserInfoSize,
    dwUserUserInfoOffset,
    dwHighLevelCompSize,
    dwHighLevelCompOffset,
    dwLowLevelCompSize,
    dwLowLevelCompOffset,
    dwChargingInfoSize,
    dwChargingInfoOffset,
    dwTerminalModesSize,
    dwTerminalModesOffset,
    dwDevSpecificSize,
    dwDevSpecificOffset: Longint;
    dwCallTreatment,                                { TAPI v2.0 }
    dwCallDataSize,                                 { TAPI v2.0 }
    dwCallDataOffset,                               { TAPI v2.0 }
    dwSendingFlowspecSize,                          { TAPI v2.0 }
    dwSendingFlowspecOffset,                        { TAPI v2.0 }
    dwReceivingFlowspecSize,                        { TAPI v2.0 }
    dwReceivingFlowspecOffset: Longint;             { TAPI v2.0 }
  end;
La logro usar asi:

Código:
 
              var
              wLPCALLINFO:  TLineCallInfo;
              r:            Integer;

              r:=LineGetCallInfo(hCall, wLPCALLINFO);
Y como me devuelve el offset y el size en:

Código:
 
              wNum:=wLPCALLINFO.dwCallerIDSize;
              wNum:=wLPCALLINFO.dwCallerIDOffset;
trato de acceder a el valor del numero telefonico, que se supone debería de obtenerlo en una formula mas o menos asi:

Código:
              www:=copy(StrPas(PChar(@wlpCallInfo)+wLPCALLINFO.dwCalledIDOffset),1,wLPCALLINFO.dwCalledIDSize);
Como veis el problema es acceder ese valor, no se como hacerlo. Este problema es basicamente manejo de punteros.

Aver si alguien me echa una mano. gracias.

Osw
Responder Con Cita
  #20  
Antiguo 14-12-2009
Avatar de Ñuño Martínez
Ñuño Martínez Ñuño Martínez is offline
Moderador
 
Registrado: jul 2006
Ubicación: Ciudad Catedral, Españistán
Posts: 5.809
Poder: 20
Ñuño Martínez Tiene un aura espectacularÑuño Martínez Tiene un aura espectacular
En lugar de reflotar este hilo debiste crear uno nuevo.

Respecto al problema, no lo entendí muy bien.
__________________
Proyectos actuales --> Allegro 5 Pascal ¡y Delphi!|MinGRo Game Engine
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
Problemas con punteros Victor_TlrSoft Varios 4 01-02-2006 16:57:46
Punteros davitcito Varios 2 25-04-2005 22:46:24
Punteros y Variables Flores OOP 7 23-04-2005 22:09:55
Punteros rafadrover OOP 8 18-09-2003 10:09:47


La franja horaria es GMT +2. Ahora son las 06:20:33.


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