Club Delphi  
    Paypal   FTP   CCD     Buscar   Trucos   Trabajo   Foros

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

Coloboración Paypal con ClubDelphi

 
 
Herramientas Buscar en Tema Desplegado
  #2  
Antiguo 24-05-2006
Avatar de seoane
[seoane] seoane is offline
Miembro Premium
 
Registrado: feb 2004
Ubicación: A Coruña, España
Posts: 3.717
Poder: 26
seoane Va por buen camino
Un PChar es un puntero a un caracter, se utilizan para manejar cadenas terminadas en caracter nulo como en C. El "truco" esta es mover el puntero por la cadena, adelante o atras segun convenga.

Por ejemplo:
Código Delphi [-]
var
  P: PChar;
  Aux: PChar;
  i: integer;
  s: string;
begin
  GetMem(P, 256);
  try
    FillChar(P^,256,0);
    StrCopy(P, 'Hola mundo');
    // Recorremos el texto sabiendo su longitud
    Aux:= P;
    s:= '';
    for i:= 1 to StrLen(P) do
    begin
      s:= s + Aux^;
      inc(Aux);
    end;
    ShowMessage(s);
    // Recorremos el texto hasta encontrar el caracter nulo
    Aux:= P;
    s:= '';
    while Aux^ <> #0 do
    begin
      s:= s + Aux^;
      inc(Aux);
    end;
    ShowMessage(s);
    // En cualquiera de los 2 casos Aux queda apuntando
    // al caracter nulo
    inc(Aux);
    // Ahora Aux esta apuntando al siguiente caracter si lo hubiese.
  finally
    FreeMem(P);
  end;
end;

Es solo un ejemplo de como recorrer la cadena, para copiar el contenido de un PChar en un String hay metodos mas eficaces:
Código Delphi [-]
var
  P: PChar;
  Aux: PChar;
  s: string;
begin
  GetMem(P, 256);
  try
    FillChar(P^,256,0);
    StrCopy(P, 'Hola mundo');
    // Copaimos el texto en S
    S:= String(P);
    // Colocamos el puntero Aux apuntando al caracter siguiente al nulo
    Aux:= P + StrLen(P) + 1;
    ShowMessage(S);
  finally
    FreeMem(P);
  end;
end;

Y algo parecido a lo que quieres hacer tu, metemos en una misma porcion de memoria un texto y un integer, y luego los volvemos a separar.
Código Delphi [-]
var
  P: PChar;
  Aux: PChar;
  s: string;
  i,j: Integer;
begin
  GetMem(P, 256);
  try
    // Aqui metemos en un mismo buffer un texto y a continuacion un integer
    FillChar(P^,256,0);
    StrCopy(P, 'Hola mundo');
    i:= 1234;
    // Hacemos que Aux apunte al carater siguiente al nulo
    Aux:= P + StrLen(P) + 1;
    move(i,Aux^,sizeof(i));

    // Ahora sacamos de nuevo la informacion
    S:= String(P);
    Aux:= P + StrLen(P) + 1;
    move(Aux^,j,sizeof(j));
    ShowMessage(S + ',' + IntTostr(j));
  finally
    FreeMem(P);
  end;
end;

Son varios ejemplos de como tratar con PChar, revisa tanbien la ayuda de delphi, encontraras un monton de funciones para tratar con este tipo de cadenas de texto. Y si no encuentras lo que buscas vuelve por aqui haber que podemos hacer.
Responder Con Cita
 



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
Recorrer arreglo Perrero80 Varios 3 18-05-2006 22:52:27
Compatibilidad entre PChar y String vick Conexión con bases de datos 5 24-10-2005 21:50:35
¿como pasar de String dentro de un PChar? Moises22 Varios 6 27-09-2005 15:43:47
Pchar y String superhopi Varios 8 19-08-2004 09:54:06
problemas de compatibilidad de tipos pchar y string VRO Varios 2 13-05-2004 10:29:34


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


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