![]() |
проблема в #0 в CopyFilesToClipboard
Привет Всем. У меня вот такая проблемка не понятная. использую процедуру
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 работает а с массивом и пробовал с переменными не работает. Может кто поможет, как она работает эта процедура. |
Версия Delphi?
И что значит не работает? Покажи описание TDropFiles. А вообще в таких случаях вызывают процедуру с рабочими параметрами и идут дебаггером смотря где что нужно. А потом по этим данным смотришь что тебе нужно подать на вход. Если я правильно понял по коду, то тебе нужно передать в функцию строку содержащую имена файлов разделенные #0. Т.е. вызываешь с константой, ставишь бряк на begin функции и смотришь что тебе пришло. Потом сам сформируй такую же строку. |
Версия делфи 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 сталкиваюсь в первые |
CHAR[1] + #0 + CHAR[2] не взлетит?
CHAR[1] - как это объявлено? |
Цитата:
Тему можно считать закрытой. Спасибо oszony |
che.ramzes, Для изучения функционала форума, пожалуйста, отредактируйте ваши сообщения, оформив код тегом [code][/code]. Ну и пометьте тему решённой самостоятельно. :)
|
Время: 15:54. |
Время: 15:54.
© OSzone.net 2001-