|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
|
Опции темы | Поиск в этой теме |
12.08.2012, 16:59 | #11 | ||||||
Старожил
Регистрация: 13.08.2009
Сообщений: 2,581
|
Цитата:
Цитата:
Если бы ты написал "вот модуль с операциями по работе с оболочкой" - я бы такое не написал. Вместо этого я бы написал: Цитата:
Код:
Цитата:
Окей, в свете новой информации, внимание, вопрос: а какое описатель внешний код будет передавать в функцию? Буфера обмена? Хм, а сама функция не может его, что-ли получить? Может. А зачем тогда его передавать? Почему это модуль Clipbrd с его объектом Clipboard не просят передавать им никаких описателей, а твой код без них обойтись не может, странно, да? Цитата:
Действительно, чего такого-то... работает же. И там же (в следующем сообщении) написано "как иначе сделать". Цитата:
Это было домашнее задание и ты с ним не справился. Тебе нужно было почитать и понять, что написано по этой ссылке. А написано там следующее: информация о модификаторе перетаскивания представлена комбинацией констант DROPEFFECT_XYZ. И твой 5 - это, на самом деле, DROPEFFECT_COPY + DROPEFFECT_LINK. Т.е. это вовсе даже не копирование, а создание ярлыка.
Опытный программист на C++ легко решает любые не существующие в Паскале проблемы.
|
||||||
12.08.2012, 17:11 | #12 | ||||
Старожил
Регистрация: 30.12.2009
Сообщений: 11,430
|
Цитата:
В любом случае, система сама заботится о хранении строки в буфере при помещени оной туда, системной функцией из поля ввода. Цитата:
Хотя это мое предположение, и я думаю, что реализован автомат на такой случай, чтобы возвращалось то, о чем я скажу ниже. В общем правильным решением будет вернуть указатель на этот обьект, а не сам обьект. Код:
Смысл указателя в том, что созданный объект всегда в одном месте, а указать на него можно откуда угодно. Цитата:
Цитата:
Последний раз редактировалось Человек_Борща; 12.08.2012 в 17:14. |
||||
12.08.2012, 17:16 | #13 | |
Старожил
Регистрация: 28.01.2009
Сообщений: 21,000
|
Цитата:
учитывая что указатель на обьект локальная переменная, и указатель на нее возвращать нельзя. лучше не возвращать обьект, а если функция должна заполнить обьект, то передать этот обьект как параметр. Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел. Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите. |
|
12.08.2012, 17:30 | #14 | |
Старожил
Регистрация: 30.12.2009
Сообщений: 11,430
|
Цитата:
Код:
Последний раз редактировалось Человек_Борща; 12.08.2012 в 17:34. |
|
12.08.2012, 17:49 | #15 | |
Старожил
Регистрация: 13.08.2009
Сообщений: 2,581
|
Цитата:
Объект - это уже указатель. Объекты, строки, динамические массивы, интерфейсы и варианты в Delphi представлены как указатели на данные. Поэтому конструкции вида "указатель на объект", "указатель на строку", "указатель на дин. массив", "указатель на интерфейс", "указатель на вариант" - бессмысленны в 99% случаев и указывают на то, что ты не понимаешь, о чём говоришь. Ещё раз. Когда есть: Код:
Если же, у функции нет готового объекта, то тогда этот прототип нужно переделать по двум альтернативным друг к другу вариантам: 1. Функция создаёт объект: Код:
2. Функция оперирует с объектом, передаваемым извне: Код:
Опытный программист на C++ легко решает любые не существующие в Паскале проблемы.
|
|
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
скопировать файл в буфер обмена | Rolls | Общие вопросы Delphi | 15 | 17.02.2012 01:03 |
Как макросом Vba определить содержит ли буфер обмена рисунок? | roborrr | Microsoft Office Excel | 2 | 27.02.2011 14:24 |
КАк поместить файл в буфер обмена? | Paul Hindenburg | Общие вопросы Delphi | 1 | 16.07.2009 10:17 |
Как очистить буфер обмена? | StasSv | Microsoft Office Excel | 2 | 11.08.2008 17:38 |