Идёт загрузка страницы...

htp://aptem.net.ru





Delphi 1

Копирование большого файла в буфер обмена

Вот общее решение, которое будет работать, даже если у вас размер файла превышает 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;

- Peter Below [000799]