Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   API de Windows (https://www.clubdelphi.com/foros/forumdisplay.php?f=7)
-   -   como moldear un puntero ? (https://www.clubdelphi.com/foros/showthread.php?t=63746)

gaston260 01-03-2009 01:48:07

como moldear un puntero ?
 
Buenas noches ! mi pregunta es esta , como se puede moldear un puntero de tipo P: PByte y convertirlo en un dato entero ?

xEsk 01-03-2009 19:32:21

Imagino que preguntas como convertir un PByte a Byte, para eso debes hacer un casting a Byte:

Ejemplo:
Código Delphi [-]
procedure TForm1.Button1Click(Sender: TObject);
var
  puntero: PByte;

begin
  // obtenemos un PByte con el numero 13
  puntero:=PByte(13);
  // mostramos el valor del byte
  ShowMessage(IntToStr(Byte(puntero)));
end;

Saludos

gaston260 01-03-2009 20:01:43

Hola amigo gracias por contestar , no se nada de punteros esto es algo valido
Código Delphi [-]var P: PByte; begin P:= PByte(lpData); for i:= 1 to dwBytesRecorded do begin Canvas.LineTo(0,P^); Edit1.Text := IntToStr(p^); inc(P); end; end;


esto es solo un trozo de codigo , me interesa saver esta linea Edit1.Text := IntToStr(p^);

gaston260 01-03-2009 20:19:52

Hola amigo gracias por contestar , no se nada de punteros esto es algo valido
Código Delphi [-]var P: PByte; begin P:= PByte(lpData); for i:= 1 to dwBytesRecorded do begin Canvas.LineTo(0,P^); Edit1.Text := IntToStr(p^); inc(P); end; end;


esto es solo un trozo de codigo , me interesa saver esta linea Edit1.Text := IntToStr(p^);

xEsk 01-03-2009 21:11:06

Del código que has puesto, te puedo decir que debes cambiar 2 cosas, y dejarlo algo parecido a esto:
Código Delphi [-]
var
  P: PByte;
begin
  P:= PByte(lpData);
  for i:= 1 to dwBytesRecorded do
    begin
      Canvas.LineTo(0,Byte(P));
      Edit1.Text := IntToStr(Byte(p));
      inc(P);
    end;
end;

Saludos

gaston260 01-03-2009 21:28:25

gracias amigo lo voy a probar y te comento y disculpame por la sintaxis .

gaston260 03-03-2009 18:15:47

var
p byte;
i:integer;
begin
i:= 100; //asigná a una variable el valor que queres
p:=@i; // al puntero de asignas la direccion de i, p vale lo mismo que i
i:=P^; ahora lo apuntado por p lo copiamos a i
edit1.text:= inttostr ; // mostramos i
edit1.text:= inttostr(p^); o tambiem mostramos lo apuntado por p

esto me lo paso un gran amigo que es programador (es un capo !!)

Gracias Maxi

Chris 03-03-2009 23:51:21

Cita:

Empezado por gaston260 (Mensaje 340024)
var
p byte;
i:integer;
begin
i:= 100; //asigná a una variable el valor que queres
p:=@i; // al puntero de asignas la direccion de i, p vale lo mismo que i
i:=P^; ahora lo apuntado por p lo copiamos a i
edit1.text:= inttostr ; // mostramos i
edit1.text:= inttostr(p^); o tambiem mostramos lo apuntado por p

esto me lo paso un gran amigo que es programador (es un capo !!)

Gracias Maxi

Debes cambiar el tipo de la variable P, de Byte a Pointer.

Básicamente, en el código que has posteado expresas el manejo básico de los punteros.
Código Delphi [-]
un_puntero_a_una_variable = @Variable; // la arroba devuelve la dirección de la
                                                       // variable que le sigue.
valor_contenido_en_el_puntero = Puntero^; // el simbolo ^ devuelve el valor 
                                                            //almacenado en la dirección que le antecede.

Recuerda que siempre es recomendable utilizar punteros de tipos, esto es: no utilices una variable de tipo Pointer que es generíco, sino más bien para guardar la dirección a un entero, utiliza PInteger; para una cadena utiliza PString o PAnsiChar y así sucesivamente. Tengo entendido que Delphi predeterminadamente declara tipos de puntero para sus tipos de datos básicos incluyendo los objetos. Te recomiendo que leas el capitulo acerca de los puntero que es incluído en la ayuda de Delphi.

Saludos.


La franja horaria es GMT +2. Ahora son las 22:22:34.

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