Вниз
Скачать: 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 вся ветка

Скачать: CL | DM;



Память: 0.46 MB
Время: 0.027 c
15-1143677066
San1
2006-03-30 04:04
2006.04.23
декомпиляция


3-1141056218
Sollo
2006-02-27 19:03
2006.04.23
dbexpress нужна временная таблица ?


3-1140981306
Sorter
2006-02-26 22:15
2006.04.23
Сортировка


2-1144314324
Cneltyn
2006-04-06 13:05
2006.04.23
Как вывести в Имидж содержимое другого Ммиджа в опр-ые координаты


9-1127156871
KOT_BEGEMOT
2005-09-19 23:07
2006.04.23
Поворот спрайта в сторону курсора (DelphiX)




   Наверх