Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

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

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 14-09-2006
Avatar de ixMike
ixMike ixMike is offline
Miembro
 
Registrado: feb 2004
Posts: 1.151
Poder: 22
ixMike Va por buen camino
Question Clipboard.GetTextBuf

Hola, amigos.

¿Alguien podría decirme cómo funciona esa función? Yo hago esto, pero aparece un error (algo de puntero inválido, o función de puntero inválido, no lo recuerdo bien).

Código Delphi [-]
procedure TForm1.Button1Click(Sender: TObject);
var P: PChar;
begin
P:='';
If Clipboard.HasFormat(CF_TEXT)then Clipboard.GetTextBuf(P,NUMERO);
Memo1.Text:=P;
end;

En la ayuda de Delphi, donde pongo NUMERO dice que utilice la función GetTextLen, pero el Clipboard no la tiene. En NUMERO también probé con cero y con MAX_PATH (ya no sabía qué hacer).

Por supuesto, esto era un programa de prueba. No quiero "Pegar del portapapeles", sino extraer el texto del Portapapeles para modificarlo.

Utilizo Delphi 3 Standard.

Muchas gracias.
Responder Con Cita
  #2  
Antiguo 14-09-2006
Avatar de seoane
[seoane] seoane is offline
Miembro Premium
 
Registrado: feb 2004
Ubicación: A Coruña, España
Posts: 3.717
Poder: 24
seoane Va por buen camino
Vamos por partes:

En vez de utilizar GetTextBuf podrias usar la propiedad asText del Clipboard que te devuelve el contenido del portapapeles como un string.

Pero vamos con lo que preguntas. El problema es que tu le pasa un puntero, pero ese debe de apuntar a donde se almacenara el texto y no a un texto en concreto. Esto lo podemos solucionar de varias maneras.

Podemos hacer que apunte a un array de caracteres que usaremos como buffer.
Código Delphi [-]
var
  P: PChar;
  Buffer: array[0..1024] of Char;
begin
  P:= @Buffer;
  if Clipboard.HasFormat(CF_TEXT) then
    Clipboard.GetTextBuf(P,Sizeof(Buffer)-1);
  Memo1.Text:=P;
end;

O tambien asi, reservando un pedazo de memoria.
Código Delphi [-]
var
  P: PChar;
begin
  GetMem(P,1025);
  try
    if Clipboard.HasFormat(CF_TEXT) then
      Clipboard.GetTextBuf(P,1024);
    Memo1.Text:= P;
  finally
    FreeMem(P);
  end;
end;

Última edición por seoane fecha: 14-09-2006 a las 13:58:50.
Responder Con Cita
  #3  
Antiguo 14-09-2006
Avatar de dec
dec dec is offline
Moderador
 
Registrado: dic 2004
Ubicación: Alcobendas, Madrid, España
Posts: 13.107
Poder: 34
dec Tiene un aura espectaculardec Tiene un aura espectacular
Hola,

Seoane, muchas gracias, como siempre, muy instructivo.
__________________
David Esperalta
www.decsoftutils.com
Responder Con Cita
  #4  
Antiguo 26-09-2006
Avatar de ixMike
ixMike ixMike is offline
Miembro
 
Registrado: feb 2004
Posts: 1.151
Poder: 22
ixMike Va por buen camino
Primero, pedir perdón por el retraso en contestar, acabo de empezar 2º de Bachillerato, y eso quira mucho tiempo libre.

Segundo, muchísimas gracias por la respuesta, me es de gran ayuda.

Tercero, no utilizo la propiedad AsText porque (al menos en mi versión de Delphi) solo admite 255 carácteres, y yo necesitaba más.

Muchas gracias otra vez
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
Posición del bitmap con clipboard soloriv Gráficos 0 11-06-2005 22:53:00
Una clase al ClipBoard bustio OOP 2 07-07-2004 00:35:16
pasar ListView al Clipboard allende Varios 2 03-12-2003 19:31:36
Texto-Clipboard-imagen OmarPerez Varios 1 25-11-2003 05:02:03
Error con Clipboard chavetaz API de Windows 4 13-11-2003 19:30:25


La franja horaria es GMT +2. Ahora son las 15:33:39.


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