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

Вниз

Как скопировать текст в буффер обмена с минималь. размером файла?   Найти похожие ветки 

 
Volf_555 ©   (2006-03-18 22:26) [0]

Для того чтобы скопировать в буффер обмена использую следующий код (консольное приложение):

program CTC;

{$APPTYPE CONSOLE}

uses
 ClipBrd, SysUtils;

begin
 { TODO -oUser -cConsole Main : Insert code here }
 ClipBoard.SetTextBuf(PChar(ExtractFileName(ParamStr(1))));
end.


В итоге приложение оказывается с размером 358 килобайт!!!!!
Пустое приложение, то есть:

program CTC;

{$APPTYPE CONSOLE}

begin
 { TODO -oUser -cConsole Main : Insert code here }
end.

занимает 8 килобайт!!!!!! То есть в 45 раз меньше!

Как мне использовать функцию копирования в буффер обмена и намного уменьшить размер файла?


 
Desdechado ©   (2006-03-18 22:50) [1]

Использовать API
пример можно взять из того же класса TClipboard
procedure TClipboard.SetBuffer(Format: Word; var Buffer; Size: Integer);
var
 Data: THandle;
 DataPtr: Pointer;
begin
 Open;
 try
   Data := GlobalAlloc(GMEM_MOVEABLE+GMEM_DDESHARE, Size);
   try
     DataPtr := GlobalLock(Data);
     try
       Move(Buffer, DataPtr^, Size);
       Adding;
       SetClipboardData(Format, Data);
     finally
       GlobalUnlock(Data);
     end;
   except
     GlobalFree(Data);
     raise;
   end;
 finally
   Close;
 end;
end;


 
Volf_555 ©   (2006-03-18 23:17) [2]

Я тоже думал по поводу использования этой процедуры. Но есть одно большое НО, которое заключается в том, что кроме этой процедуры, необходимо копировать в свой код все процедуры, функции, типы..., на которые ссылается данная процедура.
При нажатии F9 сразу останавливается работа программы на Open
Если скопировать процедуру Open, то ошибка снова возникнет в первых строках и тд тп....

И к тому же я использую процедуру SetTextBuf, а не SetBuffer


 
API ©   (2006-03-18 23:41) [3]

При нажатии F9 сразу останавливается работа программы на Open

Заметьте, не "работа программы", а на этой строке компилятор выдает сообщение об ошибке. Т. е., программа еще и не думала начинать "работать".

ошибка снова возникнет в первых строках и тд тп....

Что должно натолкнуть на мысль...


 
Volf_555 ©   (2006-03-18 23:54) [4]


> При нажатии F9 сразу останавливается работа программы на
> Open
>
> Заметьте, не "работа программы", а на этой строке компилятор
> выдает сообщение об ошибке. Т. е., программа еще и не думала
> начинать "работать".

Согласен... немного не так выразился


> ошибка снова возникнет в первых строках и тд тп....
>
> Что должно натолкнуть на мысль...

Мысль какова? Копировать все необходимые функции с процедурами в свой проэкт? Это ж ведь убийство!


 
Palladin ©   (2006-03-19 00:03) [5]


> Мысль какова? Копировать все необходимые функции с процедурами
> в свой проэкт? Это ж ведь убийство!


во первых их не так много, а во вторых без труда не то что рыбку не вытащишь, но и удочку не закинешь...



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

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

Наверх




Память: 0.48 MB
Время: 0.047 c
15-1143620715
Vlad Oshin
2006-03-29 12:25
2006.04.23
Помогите с входом в bios у Compaq


15-1143802154
Virtual FreeBSD 4.10
2006-03-31 14:49
2006.04.23
VMWare


2-1144563094
DimDim
2006-04-09 10:11
2006.04.23
Как заблокировать отдельные пункты в ComboBox?


15-1144049537
Юрий Зотов
2006-04-03 11:32
2006.04.23
И снова о футболе... :о)


15-1143923985
Andy BitOff
2006-04-02 00:39
2006.04.23
Правила русского языка