Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2005.06.06;
Скачать: CL | DM;

Вниз

текстовый файл в буфер обмена   Найти похожие ветки 

 
heady   (2005-05-18 23:15) [0]

Не подскажите рабочую процедурку? в delphiworld нашел:
Копируем файл в буфер обмена

uses
 ShlObj, ClipBrd;

procedure CopyFilesToClipboard(FileList: string);
var
 DropFiles: PDropFiles;
 hGlobal: THandle;
 iLen: Integer;
begin
 iLen := Length(FileList) + 2;
 FileList := FileList + #0#0;
 hGlobal := GlobalAlloc(GMEM_SHARE or GMEM_MOVEABLE or GMEM_ZEROINIT,
   SizeOf(TDropFiles) + iLen);
 if (hGlobal = 0) then raise Exception.Create("Could not allocate memory.");
 begin
   DropFiles := GlobalLock(hGlobal);
   DropFiles^.pFiles := SizeOf(TDropFiles);
   Move(FileList[1], (PChar(DropFiles) + SizeOf(TDropFiles))^, iLen);
   GlobalUnlock(hGlobal);
   Clipboard.SetAsHandle(CF_HDROP, hGlobal);
 end;
end;

// Example, Beispiel:

procedure TForm1.Button1Click(Sender: TObject);
begin
 CopyFilesToClipboard("C:\Bootlog.Txt"#0"C:\AutoExec.Bat");
end;  

//Separate the files with a #0.

не работает :( буфер пустой даже если указывать сущ. и непустые текстовые файлы

еще(оттуда же):
Копирование большого файла в буфер обмена
Вот общее решение, которое будет работать, даже если у вас размер файла превышает 64Кб:

function _hread(FileHandle: word; BufPtr: pointer;
 ByteCount: longint): longint; far;
 external "KERNEL" index 349;

procedure CopyFileToClipboard(const fname: string);
var
 hmem, hFile: THandle;
 size: LongInt;
 p: Pointer;
begin
 hFile := FileOpen(fname, fmOpenRead);
 try
   size := FileSeek(hFile, 0, 2);
   FileSeek(hfile, 0, 0);
   if size > 0 then
   begin
     hmem := GlobalAlloc(GHND, size);
     if hMem <> 0 then
     begin
       p := GlobalLock(hMem);
       if p <> nil then
       begin
         _hread(hFile, p, size);
         GlobalUnlock(hMem);
         Clipboard.SetAsHandle(CF_TEXT, hMem);
       end
       else
         GlobalFree(hMem);
     end;
   end;
 finally
   FileClose(hFile);
 end;
end;

procedure TForm1.SpeedButton2Click(Sender: TObject);
var
 fname: string[128];
begin
 if OpenDialog1.Execute then
 begin
   fname := OpenDialog1.Filename;
   CopyFileToClipboard(fname);
 end;
end;


 
heady   (2005-05-18 23:16) [1]

последняя выдает ошибку при выполнении "KERNEL..."


 
heady   (2005-05-18 23:17) [2]

пусть даже файл содержит только английские буквы. Зарание благодарен.


 
Andy BitOff ©   (2005-05-18 23:22) [3]

Попробуй так.

procedure TForm1.Button2Click(Sender: TObject);
var
 s:TStringList;
begin
 s:=TStringList.Create;
 try
   s.LoadFromFile(FileName);
   Clipboard.AsText:=s.Text;
 finally
   s.Free;
 end;
end;


 
heady   (2005-05-19 09:57) [4]

Работает! Andy BitOff - спасибо и респект!!!



Страницы: 1 вся ветка

Текущий архив: 2005.06.06;
Скачать: CL | DM;

Наверх




Память: 0.47 MB
Время: 0.039 c
14-1116586617
lookin
2005-05-20 14:56
2005.06.06
Новый альбом ДДТ


1-1115537920
LugSer
2005-05-08 11:38
2005.06.06
Шифрование содержимого EXE


14-1116477797
+Серега+
2005-05-19 08:43
2005.06.06
Операционная система


14-1116577335
_RusLAN
2005-05-20 12:22
2005.06.06
Delphi World 6.0 со всеми базами и сразу. Скачать


8-1108712654
tradakad
2005-02-18 10:44
2005.06.06
работа с видео файлом