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 28-07-2006
Avatar de ixMike
ixMike ixMike is offline
Miembro
 
Registrado: feb 2004
Posts: 1.151
Poder: 22
ixMike Va por buen camino
Question Texto del portapapeles sin Clipbrd.dcu

Hola, gente del foro

Quería saber cómo obtener el texto del portapapeles usando la API de windows, y no la uses Clipbrd.

Hice un proyecto de prueba, pero no me funciona (solo consigue los carácteres #10#13)

Este es el código:
Código Delphi [-]
program ClipBoardTextFileCreator;
 
uses Windows;
 
var
  Puntero: PChar;
  HC: THandle;
  F: TextFile;
 
begin
OpenClipboard(GetModuleHandle(nil));
HC:=GetClipboardData(CF_TEXT);
Puntero:=GlobalLock(HC);
AssignFile(F, ParamStr(0)+'.txt');
ReWrite(F);
WriteLn(F, string(Puntero));
CloseFile(F);
GlobalUnlock(HC);
CloseClipboard;
end.

¿Alguien puede decirme dónde está el fallo?

Gracias.
Responder Con Cita
  #2  
Antiguo 28-07-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
El problema es una cosa sencillita, pero ya puestos, he retocado un poco el código espero que no te moleste

Código Delphi [-]
var
  hText: THandle;
  pText: PChar;
  F: TextFile;
begin
  if IsClipboardFormatAvailable(CF_TEXT) then
    if OpenClipboard(0) then
    try
      hText:= GetClipboardData(CF_TEXT);
      if hText <> 0 then
      begin
        pText:= GlobalLock(hText);
        if pText <> nil then
        begin
          AssignFile(F, ParamStr(0)+'.txt');
          {$I-}
            Rewrite(F);
          {$I+}
          if IOResult=0 then
          begin
            // Aqui estaba el error, para que lo convierta en string primero hay que indicarle que es un PChar
            WriteLn(F, String(PChar(pText)));
            CloseFile(F);
          end;
          GlobalUnlock(hText);
        end;
      end;
    finally
      CloseClipboard;
    end;
end;
Responder Con Cita
  #3  
Antiguo 29-07-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,

Joroba Seoane, eres como un libro abierto, no dejas de sorprender con el código fuente que escribes como un poeta... de los buenos.
__________________
David Esperalta
www.decsoftutils.com
Responder Con Cita
  #4  
Antiguo 29-07-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
Cita:
Empezado por dec
Hola,
Joroba Seoane, eres como un libro abierto, no dejas de sorprender con el código fuente que escribes como un poeta... de los buenos
Me vas a hacer sonrojar. Citando a los clásicos "Hasta el mas tonto hace relojes"
Responder Con Cita
  #5  
Antiguo 29-07-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,

"Hasta el más tonto hace relojes", ¡Ay!, ya lo creo yo que sí. Pero, no es tu caso Seoane, no es tu caso. Y no digo que no pudieras dedicarte a relojero.
__________________
David Esperalta
www.decsoftutils.com
Responder Con Cita
  #6  
Antiguo 29-07-2006
Avatar de roman
roman roman is offline
Moderador
 
Registrado: may 2003
Ubicación: Ciudad de México
Posts: 20.269
Poder: 10
roman Es un diamante en brutoroman Es un diamante en brutoroman Es un diamante en bruto
Oigan, todo esto está muy bonito, de veras que sí, y coincido con David en que seoane es sorprendente; tal pareciera que cualquier cosa que se pregunte, él tiene justo enfrente un pedazo de código apropiado. Pero hay algo que me da curiosidad, sólo eso, ¿por qué no usar la unidad clipbrd?

// Saludos
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
Copiar del portapapeles a un DBGrid bbjb Varios 1 31-05-2006 18:23:10
De cómo pueden robarte el contenido del portapapeles en una página Web dec Seguridad 9 02-10-2005 16:05:55
Monitorizar el portapapeles de windows rsantosr API de Windows 3 26-09-2005 07:29:38
Portapapeles... Perio Varios 3 29-07-2005 16:27:41
StringGrid -> Portapapeles acertij022 OOP 3 17-10-2003 17:14:16


La franja horaria es GMT +2. Ahora son las 04:38:59.


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