Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  | Правила  

Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Программирование и базы данных » Delphi - [решено] проблема в #0 в CopyFilesToClipboard

Ответить
Настройки темы
Delphi - [решено] проблема в #0 в CopyFilesToClipboard

Новый участник


Сообщения: 42
Благодарности: 2


Конфигурация

Профиль | Отправить PM | Цитировать


Привет Всем. У меня вот такая проблемка не понятная. использую процедуру
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;
Сама процедура рабочая.Вызывается она так CopyFilesToClipboard('C:\Bootlog.Txt'#0'C:\AutoExec.Bat');
Но у меня имена файлов заранее не извесны и сколько их тоже. Создал массив CHAR (типа string) и заполнил его именами файлов.
Вызываю проц. CopyFilesToClipboard(CHAR[1]#0CHAR[2]) и делфи ругается на #0. Если писать сразу имена 'File1.txt'#0'File2.txt' bce работает а с массивом и пробовал с переменными не работает. Может кто поможет, как она работает эта процедура.

Отправлено: 21:43, 24-12-2011

 

Старожил


Сообщения: 435
Благодарности: 63

Профиль | Отправить PM | Цитировать


Версия Delphi?
И что значит не работает?

Покажи описание TDropFiles.
А вообще в таких случаях вызывают процедуру с рабочими параметрами и идут дебаггером смотря где что нужно.
А потом по этим данным смотришь что тебе нужно подать на вход.

Если я правильно понял по коду, то тебе нужно передать в функцию строку содержащую имена файлов разделенные #0.
Т.е. вызываешь с константой, ставишь бряк на begin функции и смотришь что тебе пришло.

Потом сам сформируй такую же строку.

-------
black-eric.livejournal.com


Последний раз редактировалось BlackEric, 25-12-2011 в 14:50.


Отправлено: 14:42, 25-12-2011 | #2



Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети.

Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля.


Новый участник


Сообщения: 42
Благодарности: 2

Профиль | Отправить PM | Цитировать


Версия делфи 7,0
Вызываю вот так к примеру :
procedure TForm1.Button8Click(Sender: TObject);
begin
CopyFilesToClipboard(CHAR[1]#0CHAR[2]); ругается на эту строку, курсор стоит после #0
end;
Ошибка- Missing operator or semicolon
(массив естественно прописан в var)
если так:
procedure TForm1.Button8Click(Sender: TObject);
begin
CopyFilesToClipboard('File1.txt'#0'File2.txt' );
end;
Все работает, принимает имена а если имена возвращает переменная, массив или функция то уже не хочет. Если так CopyFilesToClipboard(CHAR[1]); - одна переменная или обект с массива то тоже работает
Как передать несколько имен ???
описание TDropFiles: Я не очень то еще опытный, с clipboard сталкиваюсь в первые

Отправлено: 17:51, 25-12-2011 | #3


Старожил


Сообщения: 435
Благодарности: 63

Профиль | Отправить PM | Цитировать


CHAR[1] + #0 + CHAR[2] не взлетит?

CHAR[1] - как это объявлено?

-------
black-eric.livejournal.com


Отправлено: 18:03, 25-12-2011 | #4


Новый участник


Сообщения: 42
Благодарности: 2

Профиль | Отправить PM | Цитировать


Цитата BlackEric:
CHAR[1] + #0 + CHAR[2] не взлетит? »
Сработала !!! ура Спасибо BlackEric, все перепробЫвал а с + как то недопер.
Тему можно считать закрытой. Спасибо oszony

Отправлено: 22:10, 25-12-2011 | #5


Аватара для Drongo

Будем жить, Маэстро...


Сообщения: 6694
Благодарности: 1393

Профиль | Сайт | Отправить PM | Цитировать


che.ramzes, Для изучения функционала форума, пожалуйста, отредактируйте ваши сообщения, оформив код тегом [code][/code]. Ну и пометьте тему решённой самостоятельно.

-------
Правильная постановка вопроса свидетельствует о некотором знакомстве с делом.
3нание бывает двух видов. Мы сами знаем предмет — или же знаем, где найти о нём сведения.
[Quick Killer 3.0 Final [OSZone.net]] | [Quick Killer 3.0 Final [SafeZone.cc]] | [Парсер логов Gmer] | [Парсер логов AVZ]

http://tools.oszone.net/Drongo/Userbar/SafeZone_cc.gif


Отправлено: 22:52, 25-12-2011 | #6



Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Программирование и базы данных » Delphi - [решено] проблема в #0 в CopyFilesToClipboard

Участник сейчас на форуме Участник сейчас на форуме Участник вне форума Участник вне форума Автор темы Автор темы Шапка темы Сообщение прикреплено

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
Проблема в ноутбуке Dell Inspiron N5110 . Странная проблема.... STRELOK Непонятные проблемы с Железом 2 12-11-2011 23:27
2008 - [решено] Проблема с ГП в AD., проблема при создании ГП к отдельным OU kozemit Windows Server 2008/2008 R2 2 15-07-2009 10:52
Разное - Проблема установки Adobe Flash Player и проблема Windows Live RubinSky Microsoft Windows 7 3 26-03-2009 21:23
Ошибка - Странная проблема с кодировкой(похоже проблема с преобразованием кодировок) Mertvii Microsoft Windows 2000/XP 1 13-07-2008 16:05
Как быстро и точно определить, в чём проблема? Явная проблема в железе UTU Непонятные проблемы с Железом 16 22-05-2006 01:27




 
Переход