Общие вопросы Delphi — среда быстрой разработки, где в качестве языка программирования используется Object Pascal. На сегодняшний день позволяет разрабатывать ПО для Microsoft Windows, Mac OS, iOS и Android и входит в состав Embarcadero RAD Studio https://delphi-hlp.ru/index.php/obshchie-voprosy.feed 2022-09-13T04:32:24+07:00 Delphi help info@delphi-hlp.ru Joomla! - Open Source Content Management BEEP для дельфи, который работает, как в TP 2013-08-15T15:57:59+07:00 2013-08-15T15:57:59+07:00 https://delphi-hlp.ru/index.php/obshchie-voprosy/beep-dlya-delfi-kotoryj-rabotaet-kak-v-tp.html Super User toto44@inbox.ru <p><span style="color: #000000;">BEEP , для дельфи , который работает, как в B.Pascal 7.0</span></p> <p> </p> <p><span style="color: #000000;">Я применяю следующий код, однако он работает только под Win9x/me</span></p> <p><span style="color: #000000;">(Под WinNT/2000/XP вы можете использовать Beep(Tone, Duration)</span></p> <p><span style="color: #000000;">- задавать тон и продолжительность звучания). </span></p> <p> </p> <p class="feed-readmore"><a target="_blank" href ="/index.php/obshchie-voprosy/beep-dlya-delfi-kotoryj-rabotaet-kak-v-tp.html">Подробнее...</a></p> <p><span style="color: #000000;">BEEP , для дельфи , который работает, как в B.Pascal 7.0</span></p> <p> </p> <p><span style="color: #000000;">Я применяю следующий код, однако он работает только под Win9x/me</span></p> <p><span style="color: #000000;">(Под WinNT/2000/XP вы можете использовать Beep(Tone, Duration)</span></p> <p><span style="color: #000000;">- задавать тон и продолжительность звучания). </span></p> <p> </p> <p class="feed-readmore"><a target="_blank" href ="/index.php/obshchie-voprosy/beep-dlya-delfi-kotoryj-rabotaet-kak-v-tp.html">Подробнее...</a></p> GUI. Перегрузка контролами (статья) 2013-08-15T16:06:35+07:00 2013-08-15T16:06:35+07:00 https://delphi-hlp.ru/index.php/obshchie-voprosy/gui-peregruzka-kontrolami-statya.html Super User toto44@inbox.ru <p> </p> <p><span style="color: #000000;">Навороченные формы с огромным количеством визуальных компонентов, помноженные на количество этих форм, могут вызвать ряд серьезных проблем при разработке и использовании программы. </span></p> <p> </p> <p><span style="color: #000000;">Приложение надолго подвисает при загрузке. Время уходит на инициализацию большого количества форм, стоящих в AutoCreate. </span></p> <p><span style="color: #000000;">Наблюдаются многочисленные глюки при прорисовке, сообщения системы об ошибках и перерасходе ресурсов без видимых причин, вплоть до убиения приложения системой или краха системы. Характерно для Windows линии 9X, у которых максимальное количество графических и оконных ресурсов (GDI и USER) сильно ограничено. </span></p> <p><span style="color: #000000;">Зачастую, чтобы не расставлять и настраивать множество однообразных контролов на форме вручную, программист пишет код для их программной инициализации и вставки, не учитывая при этом нюансы, о которых он не подозревал при визуальной разработке. В результате он может получить утечку памяти и прочих ресурсов, если форма создается/уничтожается динамически многократно в процессе работы. </span></p> <p><span style="color: #000000;">Пользователь теряется в перегруженном интерфейсе программы, будучи не в состоянии использовать все его возможности и затрудняясь в выполнении простых задач. </span></p> <p> </p> <p><span style="color: #000000;">ТИПОВЫЕ РЕШЕНИЯ.</span></p> <p> </p> <div style="text-align: left; text-indent: 0px; margin: 0px 0px 0px 13px; padding: 0px;"> <table style="line-height: normal;" border="0" cellspacing="0" cellpadding="0"> <tbody> <tr valign="baseline"> <td width="27"><span style="color: #000000;">1.</span></td> <td><span style="color: #000000;">Уменьшить количество автоматически создаваемых форм. Создавать тяжелые формы в тот момент, когда они понадобятся, и уничтожать при закрытии. При этом нужно следить за своевременной очисткой и проверкой глобальных ссылок на формы. </span></td> </tr> </tbody> </table> </div> <div style="text-align: left; text-indent: 0px; margin: 0px 0px 0px 13px; padding: 0px;"> <table style="line-height: normal;" border="0" cellspacing="0" cellpadding="0"> <tbody> <tr valign="baseline"> <td width="27"><span style="color: #000000;">2.</span></td> <td><span style="color: #000000;">У динамически создаваемых компонентов устанавливать владельца и родителя. Подробности - в статье "Жизнь и смерть в режиме run-time". </span></td> </tr> </tbody> </table> </div> <div style="text-align: left; text-indent: 0px; margin: 0px 0px 0px 13px; padding: 0px;"> <table style="line-height: normal;" border="0" cellspacing="0" cellpadding="0"> <tbody> <tr valign="baseline"> <td width="27"><span style="color: #000000;">3.</span></td> <td><span style="color: #000000;">Большое количество форм не всегда оправдано. Если пользователь не получает дополнительных удобств от того, что может открыть много форм (часто он не может их увидеть одновременно или работает постоянно с одной), то это неверное архитектурное решение.</span></td> </tr> </tbody> </table> </div> <div style="text-align: left; text-indent: 0px; margin: 0px 0px 0px 13px; padding: 0px;"> <table style="line-height: normal;" border="0" cellspacing="0" cellpadding="0"> <tbody> <tr valign="baseline"> <td width="27"> </td> <td><span style="color: #000000;">Интерфейс MDI - хорошая концепция. Но всякое техническое решение имеет свою область применения. Это удобно, когда пользователю нужно работать с однотипными объектами в разных окнах и переходить от одного к другому, причем количество их заранее неизвестно, и допускается изменение размеров окна. Примеры - работа с документами (Word, Excel, etc.). </span></td> </tr> </tbody> </table> </div> <div style="text-align: left; text-indent: 0px; margin: 0px 0px 0px 13px; padding: 0px;"> <table style="line-height: normal;" border="0" cellspacing="0" cellpadding="0"> <tbody> <tr valign="baseline"> <td width="27"><span style="color: #000000;">4.</span></td> <td><span style="color: #000000;">Как правило, многочисленные элементы управления не нужны пользователю одновременно (вспомните о правиле 7±2 - именно таково среднее количество объектов, за которыми человек может следить одновременно, не напрягаясь). Их можно разделить на группы и расположить на страницах компонента TPageControl. Таким способом можно скрыть видимую сложность очень большого интерфейса по вводу и редактированию данных.</span></td> </tr> </tbody> </table> </div> <div style="text-align: left; text-indent: 0px; margin: 0px 0px 0px 13px; padding: 0px;"> <table style="line-height: normal;" border="0" cellspacing="0" cellpadding="0"> <tbody> <tr valign="baseline"> <td width="27"> </td> <td><span style="color: #000000;">Если группы компонентов однотипны (меняются только данные), то решение еще более упрощается, с одновременным снятием нагрузки на ресурсы системы. Компонент TTabControl, который внешне выглядит также, как и TPageControl, содержит только одну группу контролов, а программист по событию смены закладки OnChange имеет возможность сменить данные. </span></td> </tr> </tbody> </table> </div> <div style="text-align: left; text-indent: 0px; margin: 0px 0px 0px 13px; padding: 0px;"> <table style="line-height: normal;" border="0" cellspacing="0" cellpadding="0"> <tbody> <tr valign="baseline"> <td width="27"><span style="color: #000000;">5.</span></td> <td><span style="color: #000000;">Большое количество регулярно расположенных контролов TEdit, TLabel успешно заменяется на TStringGrid, специально для этого предназначенный. Кроме всего прочего, он имеет удобную прокрутку, размеры таблицы не будут ограничены размерами формы.</span></td> </tr> </tbody> </table> </div> <div style="text-align: left; text-indent: 0px; margin: 0px 0px 0px 13px; padding: 0px;"> <table style="line-height: normal;" border="0" cellspacing="0" cellpadding="0"> <tbody> <tr valign="baseline"> <td width="27"> </td> <td><span style="color: #000000;">В случае, если нужно много TComboBox, применяют следующую хитрость. Для визуализации используют TStringGrid, а для редактирования в текущую ячейку вставляют TComboBox, устанавливая ему размеры и координаты по ячейке и набивая его программно (если набор элементов меняется). Один и тот же экземпляр редактирующего контрола используется во всех ячейках, поскольку он не нужен одновременно везде. Эта же техника используется и в VCL для редактирования ячеек TStringGrid, TDBGrid.</span></td> </tr> </tbody> </table> </div> <div style="text-align: left; text-indent: 0px; margin: 0px 0px 0px 13px; padding: 0px;"> <table style="line-height: normal;" border="0" cellspacing="0" cellpadding="0"> <tbody> <tr valign="baseline"> <td width="27"> </td> <td><span style="color: #000000;">Есть масса компонентов типа TStringGrid сторонних разработчиков, которые расширяют возможности стандартного. </span></td> </tr> </tbody> </table> </div> <div style="text-align: left; text-indent: 0px; margin: 0px 0px 0px 13px; padding: 0px;"> <table style="line-height: normal;" border="0" cellspacing="0" cellpadding="0"> <tbody> <tr valign="baseline"> <td width="27"><span style="color: #000000;">6.</span></td> <td><span style="color: #000000;">DB-aware визуальные компоненты - такие как TDBGrid - способны обрабатывать огромный объем данных, не требуя при этом пропорциональное количество ресурсов GDI/USER. В конце концов, если не хочется связываться с СУБД, можно загнать информацию в TClientDataSet и кормить из него DB-aware controls на форме. Одновременно получаешь все прелести сортировки и фильтрации данных.</span></td> </tr> </tbody> </table> </div> <div style="text-align: left; text-indent: 0px; margin: 0px 0px 0px 13px; padding: 0px;"> <table style="line-height: normal;" border="0" cellspacing="0" cellpadding="0"> <tbody> <tr valign="baseline"> <td width="27"> </td> <td><span style="color: #000000;">В случае сложного набора контролов для каждой записи, при необходимости видеть несколько таких групп одновременно, хорошо подходит компонент TDBCtrlGrid. </span></td> </tr> </tbody> </table> </div> <div style="text-align: left; text-indent: 0px; margin: 0px 0px 0px 13px; padding: 0px;"> <table style="line-height: normal;" border="0" cellspacing="0" cellpadding="0"> <tbody> <tr valign="baseline"> <td width="27"><span style="color: #000000;">7.</span></td> <td><span style="color: #000000;">Следует стремиться уменьшить количество компонентов - потомков TWinControl (например - TButton), заменяя их на потомки TGraphicControl (пример - TSpeedButton). Последние не используют объекты USER, поскольку не являются окнами в понятиях Windows. </span></td> </tr> </tbody> </table> </div> <div style="text-align: left; text-indent: 0px; margin: 0px 0px 0px 13px; padding: 0px;"> <table style="line-height: normal;" border="0" cellspacing="0" cellpadding="0"> <tbody> <tr valign="baseline"> <td width="27"><span style="color: #000000;">8.</span></td> <td><span style="color: #000000;">Рекомендуется разрабатывать и эксплуатировать ресурсоемкие приложения в среде Windows NT и ее наследников (2000, XP).</span></td> </tr> </tbody> </table> </div> <p> </p> <p><span style="font-family: 'Times New Roman'; color: #ff0000; font-size: 10pt; font-weight: bold;">Автор:</span>Александр Малыгин</p> <p style="text-align: right;"><span style="font-family: 'Arial Unicode MS', 'Lucida Sans Unicode', 'Arial'; color: #ff6600; font-size: 8pt; font-weight: bold;"> </span></p> <p> </p> <p><span style="font-family: 'Times New Roman'; color: #000000; font-weight: bold;">Взято с </span>https://delphiworld.narod</p> <p> </p> <p><span style="color: #000000;">Навороченные формы с огромным количеством визуальных компонентов, помноженные на количество этих форм, могут вызвать ряд серьезных проблем при разработке и использовании программы. </span></p> <p> </p> <p><span style="color: #000000;">Приложение надолго подвисает при загрузке. Время уходит на инициализацию большого количества форм, стоящих в AutoCreate. </span></p> <p><span style="color: #000000;">Наблюдаются многочисленные глюки при прорисовке, сообщения системы об ошибках и перерасходе ресурсов без видимых причин, вплоть до убиения приложения системой или краха системы. Характерно для Windows линии 9X, у которых максимальное количество графических и оконных ресурсов (GDI и USER) сильно ограничено. </span></p> <p><span style="color: #000000;">Зачастую, чтобы не расставлять и настраивать множество однообразных контролов на форме вручную, программист пишет код для их программной инициализации и вставки, не учитывая при этом нюансы, о которых он не подозревал при визуальной разработке. В результате он может получить утечку памяти и прочих ресурсов, если форма создается/уничтожается динамически многократно в процессе работы. </span></p> <p><span style="color: #000000;">Пользователь теряется в перегруженном интерфейсе программы, будучи не в состоянии использовать все его возможности и затрудняясь в выполнении простых задач. </span></p> <p> </p> <p><span style="color: #000000;">ТИПОВЫЕ РЕШЕНИЯ.</span></p> <p> </p> <div style="text-align: left; text-indent: 0px; margin: 0px 0px 0px 13px; padding: 0px;"> <table style="line-height: normal;" border="0" cellspacing="0" cellpadding="0"> <tbody> <tr valign="baseline"> <td width="27"><span style="color: #000000;">1.</span></td> <td><span style="color: #000000;">Уменьшить количество автоматически создаваемых форм. Создавать тяжелые формы в тот момент, когда они понадобятся, и уничтожать при закрытии. При этом нужно следить за своевременной очисткой и проверкой глобальных ссылок на формы. </span></td> </tr> </tbody> </table> </div> <div style="text-align: left; text-indent: 0px; margin: 0px 0px 0px 13px; padding: 0px;"> <table style="line-height: normal;" border="0" cellspacing="0" cellpadding="0"> <tbody> <tr valign="baseline"> <td width="27"><span style="color: #000000;">2.</span></td> <td><span style="color: #000000;">У динамически создаваемых компонентов устанавливать владельца и родителя. Подробности - в статье "Жизнь и смерть в режиме run-time". </span></td> </tr> </tbody> </table> </div> <div style="text-align: left; text-indent: 0px; margin: 0px 0px 0px 13px; padding: 0px;"> <table style="line-height: normal;" border="0" cellspacing="0" cellpadding="0"> <tbody> <tr valign="baseline"> <td width="27"><span style="color: #000000;">3.</span></td> <td><span style="color: #000000;">Большое количество форм не всегда оправдано. Если пользователь не получает дополнительных удобств от того, что может открыть много форм (часто он не может их увидеть одновременно или работает постоянно с одной), то это неверное архитектурное решение.</span></td> </tr> </tbody> </table> </div> <div style="text-align: left; text-indent: 0px; margin: 0px 0px 0px 13px; padding: 0px;"> <table style="line-height: normal;" border="0" cellspacing="0" cellpadding="0"> <tbody> <tr valign="baseline"> <td width="27"> </td> <td><span style="color: #000000;">Интерфейс MDI - хорошая концепция. Но всякое техническое решение имеет свою область применения. Это удобно, когда пользователю нужно работать с однотипными объектами в разных окнах и переходить от одного к другому, причем количество их заранее неизвестно, и допускается изменение размеров окна. Примеры - работа с документами (Word, Excel, etc.). </span></td> </tr> </tbody> </table> </div> <div style="text-align: left; text-indent: 0px; margin: 0px 0px 0px 13px; padding: 0px;"> <table style="line-height: normal;" border="0" cellspacing="0" cellpadding="0"> <tbody> <tr valign="baseline"> <td width="27"><span style="color: #000000;">4.</span></td> <td><span style="color: #000000;">Как правило, многочисленные элементы управления не нужны пользователю одновременно (вспомните о правиле 7±2 - именно таково среднее количество объектов, за которыми человек может следить одновременно, не напрягаясь). Их можно разделить на группы и расположить на страницах компонента TPageControl. Таким способом можно скрыть видимую сложность очень большого интерфейса по вводу и редактированию данных.</span></td> </tr> </tbody> </table> </div> <div style="text-align: left; text-indent: 0px; margin: 0px 0px 0px 13px; padding: 0px;"> <table style="line-height: normal;" border="0" cellspacing="0" cellpadding="0"> <tbody> <tr valign="baseline"> <td width="27"> </td> <td><span style="color: #000000;">Если группы компонентов однотипны (меняются только данные), то решение еще более упрощается, с одновременным снятием нагрузки на ресурсы системы. Компонент TTabControl, который внешне выглядит также, как и TPageControl, содержит только одну группу контролов, а программист по событию смены закладки OnChange имеет возможность сменить данные. </span></td> </tr> </tbody> </table> </div> <div style="text-align: left; text-indent: 0px; margin: 0px 0px 0px 13px; padding: 0px;"> <table style="line-height: normal;" border="0" cellspacing="0" cellpadding="0"> <tbody> <tr valign="baseline"> <td width="27"><span style="color: #000000;">5.</span></td> <td><span style="color: #000000;">Большое количество регулярно расположенных контролов TEdit, TLabel успешно заменяется на TStringGrid, специально для этого предназначенный. Кроме всего прочего, он имеет удобную прокрутку, размеры таблицы не будут ограничены размерами формы.</span></td> </tr> </tbody> </table> </div> <div style="text-align: left; text-indent: 0px; margin: 0px 0px 0px 13px; padding: 0px;"> <table style="line-height: normal;" border="0" cellspacing="0" cellpadding="0"> <tbody> <tr valign="baseline"> <td width="27"> </td> <td><span style="color: #000000;">В случае, если нужно много TComboBox, применяют следующую хитрость. Для визуализации используют TStringGrid, а для редактирования в текущую ячейку вставляют TComboBox, устанавливая ему размеры и координаты по ячейке и набивая его программно (если набор элементов меняется). Один и тот же экземпляр редактирующего контрола используется во всех ячейках, поскольку он не нужен одновременно везде. Эта же техника используется и в VCL для редактирования ячеек TStringGrid, TDBGrid.</span></td> </tr> </tbody> </table> </div> <div style="text-align: left; text-indent: 0px; margin: 0px 0px 0px 13px; padding: 0px;"> <table style="line-height: normal;" border="0" cellspacing="0" cellpadding="0"> <tbody> <tr valign="baseline"> <td width="27"> </td> <td><span style="color: #000000;">Есть масса компонентов типа TStringGrid сторонних разработчиков, которые расширяют возможности стандартного. </span></td> </tr> </tbody> </table> </div> <div style="text-align: left; text-indent: 0px; margin: 0px 0px 0px 13px; padding: 0px;"> <table style="line-height: normal;" border="0" cellspacing="0" cellpadding="0"> <tbody> <tr valign="baseline"> <td width="27"><span style="color: #000000;">6.</span></td> <td><span style="color: #000000;">DB-aware визуальные компоненты - такие как TDBGrid - способны обрабатывать огромный объем данных, не требуя при этом пропорциональное количество ресурсов GDI/USER. В конце концов, если не хочется связываться с СУБД, можно загнать информацию в TClientDataSet и кормить из него DB-aware controls на форме. Одновременно получаешь все прелести сортировки и фильтрации данных.</span></td> </tr> </tbody> </table> </div> <div style="text-align: left; text-indent: 0px; margin: 0px 0px 0px 13px; padding: 0px;"> <table style="line-height: normal;" border="0" cellspacing="0" cellpadding="0"> <tbody> <tr valign="baseline"> <td width="27"> </td> <td><span style="color: #000000;">В случае сложного набора контролов для каждой записи, при необходимости видеть несколько таких групп одновременно, хорошо подходит компонент TDBCtrlGrid. </span></td> </tr> </tbody> </table> </div> <div style="text-align: left; text-indent: 0px; margin: 0px 0px 0px 13px; padding: 0px;"> <table style="line-height: normal;" border="0" cellspacing="0" cellpadding="0"> <tbody> <tr valign="baseline"> <td width="27"><span style="color: #000000;">7.</span></td> <td><span style="color: #000000;">Следует стремиться уменьшить количество компонентов - потомков TWinControl (например - TButton), заменяя их на потомки TGraphicControl (пример - TSpeedButton). Последние не используют объекты USER, поскольку не являются окнами в понятиях Windows. </span></td> </tr> </tbody> </table> </div> <div style="text-align: left; text-indent: 0px; margin: 0px 0px 0px 13px; padding: 0px;"> <table style="line-height: normal;" border="0" cellspacing="0" cellpadding="0"> <tbody> <tr valign="baseline"> <td width="27"><span style="color: #000000;">8.</span></td> <td><span style="color: #000000;">Рекомендуется разрабатывать и эксплуатировать ресурсоемкие приложения в среде Windows NT и ее наследников (2000, XP).</span></td> </tr> </tbody> </table> </div> <p> </p> <p><span style="font-family: 'Times New Roman'; color: #ff0000; font-size: 10pt; font-weight: bold;">Автор:</span>Александр Малыгин</p> <p style="text-align: right;"><span style="font-family: 'Arial Unicode MS', 'Lucida Sans Unicode', 'Arial'; color: #ff6600; font-size: 8pt; font-weight: bold;"> </span></p> <p> </p> <p><span style="font-family: 'Times New Roman'; color: #000000; font-weight: bold;">Взято с </span>https://delphiworld.narod</p> Быстрый способ обмена значений в 2х переменных. 2013-08-15T15:04:46+07:00 2013-08-15T15:04:46+07:00 https://delphi-hlp.ru/index.php/obshchie-voprosy/bystryj-sposob-obmena-znachenij-v-2kh-peremennykh.html Super User toto44@inbox.ru <div style="text-align: justify; text-indent: 0px; margin: 7px 0px; padding: 0px;"> <table style="border-bottom: #c0c0c0 1px solid; border-left: #000000 1px solid; background-color: #ffffc4; border-spacing: 0px; border-top: #000000 1px solid; border-right: #c0c0c0 1px solid;" border="1" cellspacing="0" cellpadding="5" bgcolor="#ffffc4"> <tbody> <tr align="left" valign="top"> <td style="border-bottom: #000000 1px solid; border-left: #c0c0c0 1px solid; border-top: #c0c0c0 1px solid; border-right: #000000 1px solid;"> <p style="text-align: justify;"><span style="font-family: 'Times New Roman'; color: #000000; font-weight: bold;">Code:</span></p> </td> </tr> <tr align="left"> <td style="border-bottom: #000000 1px solid; border-left: #c0c0c0 1px solid; border-top: #c0c0c0 1px solid; border-right: #000000 1px solid;"> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">var</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">X1, X2: Byte; </span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">begin</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">X1 := X2 </span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">xor</span><span class="f_CodeExample" style="color: #000000;"> X2; </span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">X2 := X1 </span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">xor</span><span class="f_CodeExample" style="color: #000000;"> X2; </span><span class="f_CodeExample" style="font-style: italic; color: #000080;">// X2 = X1 </span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">X1 := X1 </span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">xor</span><span class="f_CodeExample" style="color: #000000;"> X2; </span><span class="f_CodeExample" style="font-style: italic; color: #000080;">// X1 = X2 </span></p> </td> </tr> </tbody> </table> </div> <p> </p> <p class="feed-readmore"><a target="_blank" href ="/index.php/obshchie-voprosy/bystryj-sposob-obmena-znachenij-v-2kh-peremennykh.html">Подробнее...</a></p> <div style="text-align: justify; text-indent: 0px; margin: 7px 0px; padding: 0px;"> <table style="border-bottom: #c0c0c0 1px solid; border-left: #000000 1px solid; background-color: #ffffc4; border-spacing: 0px; border-top: #000000 1px solid; border-right: #c0c0c0 1px solid;" border="1" cellspacing="0" cellpadding="5" bgcolor="#ffffc4"> <tbody> <tr align="left" valign="top"> <td style="border-bottom: #000000 1px solid; border-left: #c0c0c0 1px solid; border-top: #c0c0c0 1px solid; border-right: #000000 1px solid;"> <p style="text-align: justify;"><span style="font-family: 'Times New Roman'; color: #000000; font-weight: bold;">Code:</span></p> </td> </tr> <tr align="left"> <td style="border-bottom: #000000 1px solid; border-left: #c0c0c0 1px solid; border-top: #c0c0c0 1px solid; border-right: #000000 1px solid;"> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">var</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">X1, X2: Byte; </span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">begin</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">X1 := X2 </span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">xor</span><span class="f_CodeExample" style="color: #000000;"> X2; </span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">X2 := X1 </span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">xor</span><span class="f_CodeExample" style="color: #000000;"> X2; </span><span class="f_CodeExample" style="font-style: italic; color: #000080;">// X2 = X1 </span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">X1 := X1 </span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">xor</span><span class="f_CodeExample" style="color: #000000;"> X2; </span><span class="f_CodeExample" style="font-style: italic; color: #000080;">// X1 = X2 </span></p> </td> </tr> </tbody> </table> </div> <p> </p> <p class="feed-readmore"><a target="_blank" href ="/index.php/obshchie-voprosy/bystryj-sposob-obmena-znachenij-v-2kh-peremennykh.html">Подробнее...</a></p> Взять один символ из потока памяти 2013-08-15T16:08:40+07:00 2013-08-15T16:08:40+07:00 https://delphi-hlp.ru/index.php/obshchie-voprosy/vzyat-odin-simvol-iz-potoka-pamyati.html Super User toto44@inbox.ru <div style="text-align: justify; text-indent: 0px; margin: 7px 0px; padding: 0px;"> <table style="border-bottom: #c0c0c0 1px solid; border-left: #000000 1px solid; background-color: #ffffc4; border-spacing: 0px; border-top: #000000 1px solid; border-right: #c0c0c0 1px solid;" border="1" cellspacing="0" cellpadding="5" bgcolor="#ffffc4"> <tbody> <tr align="left" valign="top"> <td style="border-bottom: #000000 1px solid; border-left: #c0c0c0 1px solid; border-top: #c0c0c0 1px solid; border-right: #000000 1px solid;"> <p style="text-align: justify;"><span style="font-family: 'Times New Roman'; color: #000000; font-weight: bold;">Code:</span></p> </td> </tr> <tr align="left"> <td style="border-bottom: #000000 1px solid; border-left: #c0c0c0 1px solid; border-top: #c0c0c0 1px solid; border-right: #000000 1px solid;"> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">unit</span><span class="f_CodeExample" style="color: #000000;"> MsFormR;</span></p> <p class="p_CodeExample"> </p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">interface</span></p> <p class="p_CodeExample"> </p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">uses</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">StdCtrls, ExtCtrls;</span></p> <p class="p_CodeExample"> </p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">type</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">TForm1 = </span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">class</span><span class="f_CodeExample" style="color: #000000;">(TForm)</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> OpenDialog1: TOpenDialog;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> SaveDialog1: TSaveDialog;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> Memo1: TMemo;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> ListBox1: TListBox;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> Panel1: TPanel;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> Button1: TButton;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> Button2: TButton;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> Splitter1: TSplitter;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">procedure</span><span class="f_CodeExample" style="color: #000000;"> FormCreate(Sender: TObject);</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">procedure</span><span class="f_CodeExample" style="color: #000000;"> Button1Click(Sender: TObject);</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">procedure</span><span class="f_CodeExample" style="color: #000000;"> Button2Click(Sender: TObject);</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">private</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> MemStr1: TMemoryStream;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">public</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">procedure</span><span class="f_CodeExample" style="color: #000000;"> ShowMemStr;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">end</span><span class="f_CodeExample" style="color: #000000;">;</span></p> <p class="p_CodeExample"> </p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">var</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">Form1: TForm1;</span></p> <p class="p_CodeExample"> </p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">implementation</span></p> <p class="p_CodeExample"> </p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #ff00ff;">{$R *.DFM}</span></p> <p class="p_CodeExample"> </p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">procedure</span><span class="f_CodeExample" style="color: #000000;"> TForm1.FormCreate(Sender: TObject);</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">begin</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">MemStr1 := TMemoryStream.Create;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">end</span><span class="f_CodeExample" style="color: #000000;">;</span></p> <p class="p_CodeExample"> </p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">procedure</span><span class="f_CodeExample" style="color: #000000;"> TForm1.Button1Click(Sender: TObject);</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">var</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">Str1: TFileStream;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">begin</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">OpenDialog1.Filter :=</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #ff0000;">'Any file (*.*)|*.*'</span><span class="f_CodeExample" style="color: #000000;">;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">OpenDialog1.DefaultExt := </span><span class="f_CodeExample" style="color: #ff0000;">'*'</span><span class="f_CodeExample" style="color: #000000;">;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">if</span><span class="f_CodeExample" style="color: #000000;"> OpenDialog1.Execute </span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">then</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">begin</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> Str1 := TFileStream.Create (</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> OpenDialog1.Filename, fmOpenRead);</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">try</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> MemStr1.LoadFromStream (Str1);</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> ShowMemStr;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> Button2.Enabled := true;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">finally</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> Str1.Free;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">end</span><span class="f_CodeExample" style="color: #000000;">;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">end</span><span class="f_CodeExample" style="color: #000000;">;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">end</span><span class="f_CodeExample" style="color: #000000;">;</span></p> <p class="p_CodeExample"> </p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">procedure</span><span class="f_CodeExample" style="color: #000000;"> TForm1.ShowMemStr;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">begin</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">Memo1.Lines.LoadFromStream (MemStr1);</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">end</span><span class="f_CodeExample" style="color: #000000;">;</span></p> <p class="p_CodeExample"> </p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">procedure</span><span class="f_CodeExample" style="color: #000000;"> TForm1.Button2Click(Sender: TObject);</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">const</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">ndx: LongInt = </span><span class="f_CodeExample" style="color: #000080;">1</span><span class="f_CodeExample" style="color: #000000;">;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">var</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">pch: PChar;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">tmpC: Char;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">begin</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">pch := MemStr1.Memory;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">tmpC := pch[ndx];</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">pch[ndx] := </span><span class="f_CodeExample" style="color: #ff0000;">#0</span><span class="f_CodeExample" style="color: #000000;">;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">ListBox1.Items.SetText(MemStr1.Memory);</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">pch[ndx] := tmpC;</span></p> <p class="p_CodeExample"> </p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">if</span><span class="f_CodeExample" style="color: #000000;"> ndx &lt; MemStr1.Size </span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">then</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> Inc(ndx)</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">else</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> Button2.Enabled := False;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">end</span><span class="f_CodeExample" style="color: #000000;">;</span></p> <p class="p_CodeExample"> </p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">end</span><span class="f_CodeExample" style="color: #000000;">.</span></p> </td> </tr> </tbody> </table> </div> <p> </p> <p> </p> <p> </p> <p style="text-align: right;"><span style="font-family: 'Arial Unicode MS', 'Lucida Sans Unicode', 'Arial'; color: #ff6600; font-size: 8pt; font-weight: bold;"> </span></p> <p> </p> <p><span style="font-family: 'Times New Roman'; color: #000000; font-weight: bold;">Взято с </span>https://delphiworld.narod</p> <div style="text-align: justify; text-indent: 0px; margin: 7px 0px; padding: 0px;"> <table style="border-bottom: #c0c0c0 1px solid; border-left: #000000 1px solid; background-color: #ffffc4; border-spacing: 0px; border-top: #000000 1px solid; border-right: #c0c0c0 1px solid;" border="1" cellspacing="0" cellpadding="5" bgcolor="#ffffc4"> <tbody> <tr align="left" valign="top"> <td style="border-bottom: #000000 1px solid; border-left: #c0c0c0 1px solid; border-top: #c0c0c0 1px solid; border-right: #000000 1px solid;"> <p style="text-align: justify;"><span style="font-family: 'Times New Roman'; color: #000000; font-weight: bold;">Code:</span></p> </td> </tr> <tr align="left"> <td style="border-bottom: #000000 1px solid; border-left: #c0c0c0 1px solid; border-top: #c0c0c0 1px solid; border-right: #000000 1px solid;"> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">unit</span><span class="f_CodeExample" style="color: #000000;"> MsFormR;</span></p> <p class="p_CodeExample"> </p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">interface</span></p> <p class="p_CodeExample"> </p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">uses</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">StdCtrls, ExtCtrls;</span></p> <p class="p_CodeExample"> </p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">type</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">TForm1 = </span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">class</span><span class="f_CodeExample" style="color: #000000;">(TForm)</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> OpenDialog1: TOpenDialog;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> SaveDialog1: TSaveDialog;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> Memo1: TMemo;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> ListBox1: TListBox;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> Panel1: TPanel;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> Button1: TButton;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> Button2: TButton;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> Splitter1: TSplitter;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">procedure</span><span class="f_CodeExample" style="color: #000000;"> FormCreate(Sender: TObject);</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">procedure</span><span class="f_CodeExample" style="color: #000000;"> Button1Click(Sender: TObject);</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">procedure</span><span class="f_CodeExample" style="color: #000000;"> Button2Click(Sender: TObject);</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">private</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> MemStr1: TMemoryStream;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">public</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">procedure</span><span class="f_CodeExample" style="color: #000000;"> ShowMemStr;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">end</span><span class="f_CodeExample" style="color: #000000;">;</span></p> <p class="p_CodeExample"> </p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">var</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">Form1: TForm1;</span></p> <p class="p_CodeExample"> </p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">implementation</span></p> <p class="p_CodeExample"> </p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #ff00ff;">{$R *.DFM}</span></p> <p class="p_CodeExample"> </p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">procedure</span><span class="f_CodeExample" style="color: #000000;"> TForm1.FormCreate(Sender: TObject);</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">begin</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">MemStr1 := TMemoryStream.Create;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">end</span><span class="f_CodeExample" style="color: #000000;">;</span></p> <p class="p_CodeExample"> </p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">procedure</span><span class="f_CodeExample" style="color: #000000;"> TForm1.Button1Click(Sender: TObject);</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">var</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">Str1: TFileStream;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">begin</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">OpenDialog1.Filter :=</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #ff0000;">'Any file (*.*)|*.*'</span><span class="f_CodeExample" style="color: #000000;">;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">OpenDialog1.DefaultExt := </span><span class="f_CodeExample" style="color: #ff0000;">'*'</span><span class="f_CodeExample" style="color: #000000;">;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">if</span><span class="f_CodeExample" style="color: #000000;"> OpenDialog1.Execute </span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">then</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">begin</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> Str1 := TFileStream.Create (</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> OpenDialog1.Filename, fmOpenRead);</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">try</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> MemStr1.LoadFromStream (Str1);</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> ShowMemStr;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> Button2.Enabled := true;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">finally</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> Str1.Free;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">end</span><span class="f_CodeExample" style="color: #000000;">;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">end</span><span class="f_CodeExample" style="color: #000000;">;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">end</span><span class="f_CodeExample" style="color: #000000;">;</span></p> <p class="p_CodeExample"> </p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">procedure</span><span class="f_CodeExample" style="color: #000000;"> TForm1.ShowMemStr;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">begin</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">Memo1.Lines.LoadFromStream (MemStr1);</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">end</span><span class="f_CodeExample" style="color: #000000;">;</span></p> <p class="p_CodeExample"> </p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">procedure</span><span class="f_CodeExample" style="color: #000000;"> TForm1.Button2Click(Sender: TObject);</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">const</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">ndx: LongInt = </span><span class="f_CodeExample" style="color: #000080;">1</span><span class="f_CodeExample" style="color: #000000;">;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">var</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">pch: PChar;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">tmpC: Char;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">begin</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">pch := MemStr1.Memory;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">tmpC := pch[ndx];</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">pch[ndx] := </span><span class="f_CodeExample" style="color: #ff0000;">#0</span><span class="f_CodeExample" style="color: #000000;">;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">ListBox1.Items.SetText(MemStr1.Memory);</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">pch[ndx] := tmpC;</span></p> <p class="p_CodeExample"> </p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">if</span><span class="f_CodeExample" style="color: #000000;"> ndx &lt; MemStr1.Size </span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">then</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> Inc(ndx)</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">else</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> Button2.Enabled := False;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">end</span><span class="f_CodeExample" style="color: #000000;">;</span></p> <p class="p_CodeExample"> </p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">end</span><span class="f_CodeExample" style="color: #000000;">.</span></p> </td> </tr> </tbody> </table> </div> <p> </p> <p> </p> <p> </p> <p style="text-align: right;"><span style="font-family: 'Arial Unicode MS', 'Lucida Sans Unicode', 'Arial'; color: #ff6600; font-size: 8pt; font-weight: bold;"> </span></p> <p> </p> <p><span style="font-family: 'Times New Roman'; color: #000000; font-weight: bold;">Взято с </span>https://delphiworld.narod</p> Вызвать функцию по имени 2013-08-15T16:10:59+07:00 2013-08-15T16:10:59+07:00 https://delphi-hlp.ru/index.php/obshchie-voprosy/vyzvat-funktsiyu-po-imeni.html Super User toto44@inbox.ru <p><span style="font-family: 'Times New Roman'; color: #000000;">Есть </span><span style="font-family: 'Times New Roman'; color: #000000;">такой </span><span style="font-family: 'Times New Roman'; color: #000000;">способ </span><span style="font-family: 'Times New Roman'; color: #000000;">вызова </span><span style="font-family: 'Times New Roman'; color: #000000;">функций </span><span style="font-family: 'Times New Roman'; color: #000000;">по </span><span style="font-family: 'Times New Roman'; color: #000000;">имени</span><span style="font-family: 'Times New Roman'; color: #000000;">, </span><span style="font-family: 'Times New Roman'; color: #000000;">если </span><span style="font-family: 'Times New Roman'; color: #000000;">они </span><span style="font-family: 'Times New Roman'; color: #000000;">совпадают </span><span style="font-family: 'Times New Roman'; color: #000000;">по </span><span style="font-family: 'Times New Roman'; color: #000000;">сигнатуре</span><span style="font-family: 'Times New Roman'; color: #000000;">:</span></p> <div style="text-align: justify; text-indent: 0px; margin: 7px 0px; padding: 0px;"> <table style="border-bottom: #c0c0c0 1px solid; border-left: #000000 1px solid; background-color: #ffffc4; border-spacing: 0px; border-top: #000000 1px solid; border-right: #c0c0c0 1px solid;" border="1" cellspacing="0" cellpadding="5" bgcolor="#ffffc4"> <tbody> <tr align="left" valign="top"> <td style="border-bottom: #000000 1px solid; border-left: #c0c0c0 1px solid; border-top: #c0c0c0 1px solid; border-right: #000000 1px solid;"> <p style="text-align: justify;"><span style="font-family: 'Times New Roman'; color: #000000; font-weight: bold;">Code:</span></p> </td> </tr> <tr align="left"> <td style="border-bottom: #000000 1px solid; border-left: #c0c0c0 1px solid; border-top: #c0c0c0 1px solid; border-right: #000000 1px solid;"> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">{©Drkb v.3(2007): www.drkb.ru}</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">function</span><span class="f_CodeExample" style="color: #000000;"> TestFunc1(d: Double): Integer;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">begin</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">....</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">end</span><span class="f_CodeExample" style="color: #000000;">;</span></p> <p class="p_CodeExample"> </p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">function</span><span class="f_CodeExample" style="color: #000000;"> TestFunc2(d: Double): Integer;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">begin</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">....</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">end</span><span class="f_CodeExample" style="color: #000000;">;</span></p> <p class="p_CodeExample"> </p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">exports</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">TestFunc1,</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">TestFunc2;</span></p> <p class="p_CodeExample"> </p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">procedure</span><span class="f_CodeExample" style="color: #000000;"> TForm1.Button1Click(Sender: TObject);</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">var</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">Func: </span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">function</span><span class="f_CodeExample" style="color: #000000;"> (d: Double): Integer;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">begin</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">@Func := GetProcAddress(hInstance, PChar(Edit1.Text));</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">if</span><span class="f_CodeExample" style="color: #000000;"> @Func = </span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">nil</span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">then</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">raise</span><span class="f_CodeExample" style="color: #000000;"> Exception.CreateFmt(</span><span class="f_CodeExample" style="color: #ff0000;">'Функция с именем "%s" не существует'</span><span class="f_CodeExample" style="color: #000000;">, [Edit1.Text]);</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">ShowMessage(IntToStr(Func(</span><span class="f_CodeExample" style="color: #800000;">10</span><span class="f_CodeExample" style="color: #000000;">.</span><span class="f_CodeExample" style="color: #800000;">63</span><span class="f_CodeExample" style="color: #000000;">)));</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">end</span><span class="f_CodeExample" style="color: #000000;">;</span></p> </td> </tr> </tbody> </table> </div> <p> </p> <p><span style="font-family: 'Times New Roman'; color: #000000;">Есть </span><span style="font-family: 'Times New Roman'; color: #000000;">такой </span><span style="font-family: 'Times New Roman'; color: #000000;">способ </span><span style="font-family: 'Times New Roman'; color: #000000;">вызова </span><span style="font-family: 'Times New Roman'; color: #000000;">функций </span><span style="font-family: 'Times New Roman'; color: #000000;">по </span><span style="font-family: 'Times New Roman'; color: #000000;">имени</span><span style="font-family: 'Times New Roman'; color: #000000;">, </span><span style="font-family: 'Times New Roman'; color: #000000;">если </span><span style="font-family: 'Times New Roman'; color: #000000;">они </span><span style="font-family: 'Times New Roman'; color: #000000;">совпадают </span><span style="font-family: 'Times New Roman'; color: #000000;">по </span><span style="font-family: 'Times New Roman'; color: #000000;">сигнатуре</span><span style="font-family: 'Times New Roman'; color: #000000;">:</span></p> <div style="text-align: justify; text-indent: 0px; margin: 7px 0px; padding: 0px;"> <table style="border-bottom: #c0c0c0 1px solid; border-left: #000000 1px solid; background-color: #ffffc4; border-spacing: 0px; border-top: #000000 1px solid; border-right: #c0c0c0 1px solid;" border="1" cellspacing="0" cellpadding="5" bgcolor="#ffffc4"> <tbody> <tr align="left" valign="top"> <td style="border-bottom: #000000 1px solid; border-left: #c0c0c0 1px solid; border-top: #c0c0c0 1px solid; border-right: #000000 1px solid;"> <p style="text-align: justify;"><span style="font-family: 'Times New Roman'; color: #000000; font-weight: bold;">Code:</span></p> </td> </tr> <tr align="left"> <td style="border-bottom: #000000 1px solid; border-left: #c0c0c0 1px solid; border-top: #c0c0c0 1px solid; border-right: #000000 1px solid;"> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">{©Drkb v.3(2007): www.drkb.ru}</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">function</span><span class="f_CodeExample" style="color: #000000;"> TestFunc1(d: Double): Integer;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">begin</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">....</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">end</span><span class="f_CodeExample" style="color: #000000;">;</span></p> <p class="p_CodeExample"> </p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">function</span><span class="f_CodeExample" style="color: #000000;"> TestFunc2(d: Double): Integer;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">begin</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">....</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">end</span><span class="f_CodeExample" style="color: #000000;">;</span></p> <p class="p_CodeExample"> </p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">exports</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">TestFunc1,</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">TestFunc2;</span></p> <p class="p_CodeExample"> </p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">procedure</span><span class="f_CodeExample" style="color: #000000;"> TForm1.Button1Click(Sender: TObject);</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">var</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">Func: </span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">function</span><span class="f_CodeExample" style="color: #000000;"> (d: Double): Integer;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">begin</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">@Func := GetProcAddress(hInstance, PChar(Edit1.Text));</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">if</span><span class="f_CodeExample" style="color: #000000;"> @Func = </span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">nil</span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">then</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">raise</span><span class="f_CodeExample" style="color: #000000;"> Exception.CreateFmt(</span><span class="f_CodeExample" style="color: #ff0000;">'Функция с именем "%s" не существует'</span><span class="f_CodeExample" style="color: #000000;">, [Edit1.Text]);</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">ShowMessage(IntToStr(Func(</span><span class="f_CodeExample" style="color: #800000;">10</span><span class="f_CodeExample" style="color: #000000;">.</span><span class="f_CodeExample" style="color: #800000;">63</span><span class="f_CodeExample" style="color: #000000;">)));</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">end</span><span class="f_CodeExample" style="color: #000000;">;</span></p> </td> </tr> </tbody> </table> </div> <p> </p> Директивы вызова процедур 2013-08-14T20:43:22+07:00 2013-08-14T20:43:22+07:00 https://delphi-hlp.ru/index.php/obshchie-voprosy/direktivy-vyzova-protsedur.html Super User toto44@inbox.ru <h5><span style="color: #000000;">Может кто объяснит подробнее особенности применения директив вызовов процедур: <strong>register, pascal, cdecl, stdcall, safecall</strong>. </span></h5> <h5><span style="color: #000000;">В чём отличия, когда и какие надо применять, какие преимущества и недостатки? </span></h5> <p> </p> <p><span style="color: #000000;">Разница в способе передачи параметров в функцию и возврата параметров из функции.</span></p> <p><span style="color: #000000;">stdcall - юзается (вроде) а винапях. Передача аргументов справа налево. Стек очищает вызываемая процедура. Возвращает разультат в EAX (помойму)</span></p> <p><span style="color: #000000;">pascal - юзалось в вин16апи. Передача в аргументов слева направо. Стек очищает вызываемая. В паскале результат возвращался в al, ax или в dx:ax. Как в Дельфи - не помню, вероятно а EAX.</span></p> <p><span style="color: #000000;">register - передача всего через регистры процессора. Как именно - зависит от компилятора.</span></p> <p><span style="color: #000000;">cdecl - не помню. Вроде тоже, что и stdcall, только стек чистит вызывающая процедура</span></p> <p> </p> <p class="feed-readmore"><a target="_blank" href ="/index.php/obshchie-voprosy/direktivy-vyzova-protsedur.html">Подробнее...</a></p> <h5><span style="color: #000000;">Может кто объяснит подробнее особенности применения директив вызовов процедур: <strong>register, pascal, cdecl, stdcall, safecall</strong>. </span></h5> <h5><span style="color: #000000;">В чём отличия, когда и какие надо применять, какие преимущества и недостатки? </span></h5> <p> </p> <p><span style="color: #000000;">Разница в способе передачи параметров в функцию и возврата параметров из функции.</span></p> <p><span style="color: #000000;">stdcall - юзается (вроде) а винапях. Передача аргументов справа налево. Стек очищает вызываемая процедура. Возвращает разультат в EAX (помойму)</span></p> <p><span style="color: #000000;">pascal - юзалось в вин16апи. Передача в аргументов слева направо. Стек очищает вызываемая. В паскале результат возвращался в al, ax или в dx:ax. Как в Дельфи - не помню, вероятно а EAX.</span></p> <p><span style="color: #000000;">register - передача всего через регистры процессора. Как именно - зависит от компилятора.</span></p> <p><span style="color: #000000;">cdecl - не помню. Вроде тоже, что и stdcall, только стек чистит вызывающая процедура</span></p> <p> </p> <p class="feed-readmore"><a target="_blank" href ="/index.php/obshchie-voprosy/direktivy-vyzova-protsedur.html">Подробнее...</a></p> Использование PosEx взамен Pos 2013-08-15T16:10:15+07:00 2013-08-15T16:10:15+07:00 https://delphi-hlp.ru/index.php/obshchie-voprosy/ispolzovanie-posex-vzamen-pos.html Super User toto44@inbox.ru <p><span style="font-family: 'Times New Roman';">В Delphi 7 в модуле StrUtils внесены некоторые изменения. </span></p> <p><span style="font-family: 'Times New Roman';">Есть новая функция: PosEx.</span></p> <p> <span style="font-family: 'Times New Roman';">Обьявление этих функций:</span></p> <div style="text-align: justify; text-indent: 0px; margin: 7px 0px; padding: 0px;"> <table style="border-bottom: #c0c0c0 1px solid; border-left: #000000 1px solid; background-color: #ffffc4; border-spacing: 0px; border-top: #000000 1px solid; border-right: #c0c0c0 1px solid;" border="1" cellspacing="0" cellpadding="5" bgcolor="#ffffc4"> <tbody> <tr align="left" valign="top"> <td style="border-bottom: #000000 1px solid; border-left: #c0c0c0 1px solid; border-top: #c0c0c0 1px solid; border-right: #000000 1px solid;"> <p style="text-align: justify;"><span style="font-family: 'Times New Roman'; color: #000000; font-weight: bold;">Code:</span></p> </td> </tr> <tr align="left"> <td style="border-bottom: #000000 1px solid; border-left: #c0c0c0 1px solid; border-top: #c0c0c0 1px solid; border-right: #000000 1px solid;"> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">Function</span><span class="f_CodeExample" style="color: #000000;"> Pos(Substr: </span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">String</span><span class="f_CodeExample" style="color: #000000;">; S: </span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">String</span><span class="f_CodeExample" style="color: #000000;">): Integer;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">Function</span><span class="f_CodeExample" style="color: #000000;"> PosEx(</span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">Const</span><span class="f_CodeExample" style="color: #000000;"> SubStr, S: </span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">String</span><span class="f_CodeExample" style="color: #000000;">; Offset: Cardinal = </span><span class="f_CodeExample" style="color: #000080;">1</span><span class="f_CodeExample" style="color: #000000;">): Integer;</span></p> </td> </tr> </tbody> </table> </div> <p> </p> <p class="feed-readmore"><a target="_blank" href ="/index.php/obshchie-voprosy/ispolzovanie-posex-vzamen-pos.html">Подробнее...</a></p> <p><span style="font-family: 'Times New Roman';">В Delphi 7 в модуле StrUtils внесены некоторые изменения. </span></p> <p><span style="font-family: 'Times New Roman';">Есть новая функция: PosEx.</span></p> <p> <span style="font-family: 'Times New Roman';">Обьявление этих функций:</span></p> <div style="text-align: justify; text-indent: 0px; margin: 7px 0px; padding: 0px;"> <table style="border-bottom: #c0c0c0 1px solid; border-left: #000000 1px solid; background-color: #ffffc4; border-spacing: 0px; border-top: #000000 1px solid; border-right: #c0c0c0 1px solid;" border="1" cellspacing="0" cellpadding="5" bgcolor="#ffffc4"> <tbody> <tr align="left" valign="top"> <td style="border-bottom: #000000 1px solid; border-left: #c0c0c0 1px solid; border-top: #c0c0c0 1px solid; border-right: #000000 1px solid;"> <p style="text-align: justify;"><span style="font-family: 'Times New Roman'; color: #000000; font-weight: bold;">Code:</span></p> </td> </tr> <tr align="left"> <td style="border-bottom: #000000 1px solid; border-left: #c0c0c0 1px solid; border-top: #c0c0c0 1px solid; border-right: #000000 1px solid;"> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">Function</span><span class="f_CodeExample" style="color: #000000;"> Pos(Substr: </span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">String</span><span class="f_CodeExample" style="color: #000000;">; S: </span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">String</span><span class="f_CodeExample" style="color: #000000;">): Integer;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">Function</span><span class="f_CodeExample" style="color: #000000;"> PosEx(</span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">Const</span><span class="f_CodeExample" style="color: #000000;"> SubStr, S: </span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">String</span><span class="f_CodeExample" style="color: #000000;">; Offset: Cardinal = </span><span class="f_CodeExample" style="color: #000080;">1</span><span class="f_CodeExample" style="color: #000000;">): Integer;</span></p> </td> </tr> </tbody> </table> </div> <p> </p> <p class="feed-readmore"><a target="_blank" href ="/index.php/obshchie-voprosy/ispolzovanie-posex-vzamen-pos.html">Подробнее...</a></p> Как использовать параметры командной строки? 2013-08-15T14:17:29+07:00 2013-08-15T14:17:29+07:00 https://delphi-hlp.ru/index.php/obshchie-voprosy/kak-ispolzovat-parametry-komandnoj-stroki.html Super User toto44@inbox.ru <p><span style="font-family: 'Times New Roman'; color: #000000;">Paramcount - показывает сколько параметров передано</span></p> <p><span style="font-family: 'Times New Roman'; color: #000000;">Paramstr(0) - это имя с путем твоей программы</span></p> <p><span style="font-family: 'Times New Roman'; color: #000000;">Paramstr(1) - имя первого параметра</span></p> <p><span style="font-family: 'Times New Roman'; color: #000000;">Paramstr(2) - имя второго параметра и т.д.</span></p> <p> </p> <p><span style="font-family: 'Times New Roman'; color: #000000;">Если ты запускаешь:</span></p> <p><span style="font-family: 'Times New Roman'; color: #000000;">с:\myprog.exe /a -b22 c:\dev</span></p> <p> </p> <p><span style="font-family: 'Times New Roman'; color: #000000;">то Paramcount будет равен 3</span></p> <p><span style="font-family: 'Times New Roman'; color: #000000;">Paramstr(0) будет равен с:\myprog.exe</span></p> <p><span style="font-family: 'Times New Roman'; color: #000000;">Paramstr(1) будет равен /a</span></p> <p><span style="font-family: 'Times New Roman'; color: #000000;">Paramstr(2) будет равен -b22</span></p> <p><span style="font-family: 'Times New Roman'; color: #000000;">Paramstr(3) будет равен c:\dev </span></p> <p> </p> <p class="feed-readmore"><a target="_blank" href ="/index.php/obshchie-voprosy/kak-ispolzovat-parametry-komandnoj-stroki.html">Подробнее...</a></p> <p><span style="font-family: 'Times New Roman'; color: #000000;">Paramcount - показывает сколько параметров передано</span></p> <p><span style="font-family: 'Times New Roman'; color: #000000;">Paramstr(0) - это имя с путем твоей программы</span></p> <p><span style="font-family: 'Times New Roman'; color: #000000;">Paramstr(1) - имя первого параметра</span></p> <p><span style="font-family: 'Times New Roman'; color: #000000;">Paramstr(2) - имя второго параметра и т.д.</span></p> <p> </p> <p><span style="font-family: 'Times New Roman'; color: #000000;">Если ты запускаешь:</span></p> <p><span style="font-family: 'Times New Roman'; color: #000000;">с:\myprog.exe /a -b22 c:\dev</span></p> <p> </p> <p><span style="font-family: 'Times New Roman'; color: #000000;">то Paramcount будет равен 3</span></p> <p><span style="font-family: 'Times New Roman'; color: #000000;">Paramstr(0) будет равен с:\myprog.exe</span></p> <p><span style="font-family: 'Times New Roman'; color: #000000;">Paramstr(1) будет равен /a</span></p> <p><span style="font-family: 'Times New Roman'; color: #000000;">Paramstr(2) будет равен -b22</span></p> <p><span style="font-family: 'Times New Roman'; color: #000000;">Paramstr(3) будет равен c:\dev </span></p> <p> </p> <p class="feed-readmore"><a target="_blank" href ="/index.php/obshchie-voprosy/kak-ispolzovat-parametry-komandnoj-stroki.html">Подробнее...</a></p> Как использовать переменную для имени процедуры? 2013-08-15T14:12:49+07:00 2013-08-15T14:12:49+07:00 https://delphi-hlp.ru/index.php/obshchie-voprosy/kak-ispolzovat-peremennuyu-dlya-imeni-protsedury.html Super User toto44@inbox.ru <p><span style="font-style: italic; color: #000000;">Каким образом можно использовать переменную типа String в качестве имени процедуры?</span></p> <p> </p> <p><span style="color: #000000;">Если все процедуры, которые вы собираетесь вызывать, имеют список с одними и теми же параметрами (или все без параметров), то это не трудно. Для этого необходимы: процедурный тип, соответствующий вашей процедуре, например: </span></p> <p> </p> <p class="feed-readmore"><a target="_blank" href ="/index.php/obshchie-voprosy/kak-ispolzovat-peremennuyu-dlya-imeni-protsedury.html">Подробнее...</a></p> <p><span style="font-style: italic; color: #000000;">Каким образом можно использовать переменную типа String в качестве имени процедуры?</span></p> <p> </p> <p><span style="color: #000000;">Если все процедуры, которые вы собираетесь вызывать, имеют список с одними и теми же параметрами (или все без параметров), то это не трудно. Для этого необходимы: процедурный тип, соответствующий вашей процедуре, например: </span></p> <p> </p> <p class="feed-readmore"><a target="_blank" href ="/index.php/obshchie-voprosy/kak-ispolzovat-peremennuyu-dlya-imeni-protsedury.html">Подробнее...</a></p> Как передать массив как параметр? 2013-08-15T15:59:21+07:00 2013-08-15T15:59:21+07:00 https://delphi-hlp.ru/index.php/obshchie-voprosy/kak-peredat-massiv-kak-parametr.html Super User toto44@inbox.ru <p><span style="font-family: 'Times New Roman'; color: #000000;">Передача параметров процедуры и функции в дельфи:</span> </p> <div style="text-align: justify; text-indent: 0px; margin: 7px 0px; padding: 0px;"> <table style="border-bottom: #c0c0c0 1px solid; border-left: #000000 1px solid; background-color: #ffffc4; border-spacing: 0px; border-top: #000000 1px solid; border-right: #c0c0c0 1px solid;" border="1" cellspacing="0" cellpadding="5" bgcolor="#ffffc4"> <tbody> <tr align="left" valign="top"> <td style="border-bottom: #000000 1px solid; border-left: #c0c0c0 1px solid; border-top: #c0c0c0 1px solid; border-right: #000000 1px solid;"> <p style="text-align: justify;"><span style="font-family: 'Times New Roman'; color: #000000; font-weight: bold;">Code:</span></p> </td> </tr> <tr align="left"> <td style="border-bottom: #000000 1px solid; border-left: #c0c0c0 1px solid; border-top: #c0c0c0 1px solid; border-right: #000000 1px solid;"> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">Type</span><span class="f_CodeExample" style="color: #000000;"> Ta=</span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">array</span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">of</span><span class="f_CodeExample" style="color: #000000;"> something;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">Var</span><span class="f_CodeExample" style="color: #000000;"> a:Ta;</span></p> </td> </tr> </tbody> </table> </div> <p> </p> <p class="feed-readmore"><a target="_blank" href ="/index.php/obshchie-voprosy/kak-peredat-massiv-kak-parametr.html">Подробнее...</a></p> <p><span style="font-family: 'Times New Roman'; color: #000000;">Передача параметров процедуры и функции в дельфи:</span> </p> <div style="text-align: justify; text-indent: 0px; margin: 7px 0px; padding: 0px;"> <table style="border-bottom: #c0c0c0 1px solid; border-left: #000000 1px solid; background-color: #ffffc4; border-spacing: 0px; border-top: #000000 1px solid; border-right: #c0c0c0 1px solid;" border="1" cellspacing="0" cellpadding="5" bgcolor="#ffffc4"> <tbody> <tr align="left" valign="top"> <td style="border-bottom: #000000 1px solid; border-left: #c0c0c0 1px solid; border-top: #c0c0c0 1px solid; border-right: #000000 1px solid;"> <p style="text-align: justify;"><span style="font-family: 'Times New Roman'; color: #000000; font-weight: bold;">Code:</span></p> </td> </tr> <tr align="left"> <td style="border-bottom: #000000 1px solid; border-left: #c0c0c0 1px solid; border-top: #c0c0c0 1px solid; border-right: #000000 1px solid;"> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">Type</span><span class="f_CodeExample" style="color: #000000;"> Ta=</span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">array</span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">of</span><span class="f_CodeExample" style="color: #000000;"> something;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">Var</span><span class="f_CodeExample" style="color: #000000;"> a:Ta;</span></p> </td> </tr> </tbody> </table> </div> <p> </p> <p class="feed-readmore"><a target="_blank" href ="/index.php/obshchie-voprosy/kak-peredat-massiv-kak-parametr.html">Подробнее...</a></p> Как получить часть GUID? 2013-08-15T16:04:09+07:00 2013-08-15T16:04:09+07:00 https://delphi-hlp.ru/index.php/obshchie-voprosy/kak-poluchit-chast-guid.html Super User toto44@inbox.ru <p> </p> <div style="text-align: justify; text-indent: 0px; margin: 7px 0px; padding: 0px;"> <table style="border-bottom: #c0c0c0 1px solid; border-left: #000000 1px solid; background-color: #ffffc4; border-spacing: 0px; border-top: #000000 1px solid; border-right: #c0c0c0 1px solid;" border="1" cellspacing="0" cellpadding="5" bgcolor="#ffffc4"> <tbody> <tr align="left" valign="top"> <td style="border-bottom: #000000 1px solid; border-left: #c0c0c0 1px solid; border-top: #c0c0c0 1px solid; border-right: #000000 1px solid;"> <p style="text-align: justify;"><span style="font-family: 'Times New Roman'; color: #000000; font-weight: bold;">Code:</span></p> </td> </tr> <tr align="left"> <td style="border-bottom: #000000 1px solid; border-left: #c0c0c0 1px solid; border-top: #c0c0c0 1px solid; border-right: #000000 1px solid;"> <p class="p_CodeExample"><span class="f_CodeExample" style="font-style: italic; color: #000080;">{ You maybe have to access just a part of a GUID. }</span></p> <p class="p_CodeExample"> </p> <p class="p_CodeExample"> </p> <p class="p_CodeExample"><span class="f_CodeExample" style="font-style: italic; color: #000080;">{ Const for the function Format(...) }</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">const</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">fsGUID: </span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">string</span><span class="f_CodeExample" style="color: #000000;"> = </span><span class="f_CodeExample" style="color: #ff0000;">'D1: $%s'#13#10'D2: $%s'#13#10'D3: $%s'#13#10</span><span class="f_CodeExample" style="color: #000000;"> +</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #ff0000;">'D4: $%s $%s $%s $%s $%s $%s $%s $%s'</span><span class="f_CodeExample" style="color: #000000;">;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">fsGUIDParts: </span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">string</span><span class="f_CodeExample" style="color: #000000;"> = </span><span class="f_CodeExample" style="color: #ff0000;">'D%d:%s'</span><span class="f_CodeExample" style="color: #000000;">;</span></p> <p class="p_CodeExample"> </p> <p class="p_CodeExample"><span class="f_CodeExample" style="font-style: italic; color: #000080;">// Type for the GUID part to be shown</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">type</span></p> <p class="p_CodeExample"> </p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">TGUIDPART = (guidp_NoFormat, guidp_All, guidp_D1,</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> guidp_D2, guidp_D3, guidp_D4);</span></p> <p class="p_CodeExample"> </p> <p class="p_CodeExample"><span class="f_CodeExample" style="font-style: italic; color: #000080;">{ This GUIDToStringEx function give you the full GUID string</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="font-style: italic; color: #000080;">according with then format string FStr (you can change it !!!) }</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">function</span><span class="f_CodeExample" style="color: #000000;"> GUIDToStringEx(Guid: TGuid; FStr: </span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">string</span><span class="f_CodeExample" style="color: #000000;">): </span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">string</span><span class="f_CodeExample" style="color: #000000;">; overload;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">begin</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">Result := Format(FStr,</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> [IntToHex(GUID.D1, </span><span class="f_CodeExample" style="color: #000080;">8</span><span class="f_CodeExample" style="color: #000000;">),</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> IntToHex(GUID.D2, </span><span class="f_CodeExample" style="color: #000080;">4</span><span class="f_CodeExample" style="color: #000000;">),</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> IntToHex(GUID.D3, </span><span class="f_CodeExample" style="color: #000080;">4</span><span class="f_CodeExample" style="color: #000000;">),</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> IntToHex(GUID.D4[</span><span class="f_CodeExample" style="color: #000080;">0</span><span class="f_CodeExample" style="color: #000000;">], </span><span class="f_CodeExample" style="color: #000080;">2</span><span class="f_CodeExample" style="color: #000000;">),</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> IntToHex(GUID.D4[</span><span class="f_CodeExample" style="color: #000080;">1</span><span class="f_CodeExample" style="color: #000000;">], </span><span class="f_CodeExample" style="color: #000080;">2</span><span class="f_CodeExample" style="color: #000000;">),</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> IntToHex(GUID.D4[</span><span class="f_CodeExample" style="color: #000080;">2</span><span class="f_CodeExample" style="color: #000000;">], </span><span class="f_CodeExample" style="color: #000080;">2</span><span class="f_CodeExample" style="color: #000000;">),</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> IntToHex(GUID.D4[</span><span class="f_CodeExample" style="color: #000080;">3</span><span class="f_CodeExample" style="color: #000000;">], </span><span class="f_CodeExample" style="color: #000080;">2</span><span class="f_CodeExample" style="color: #000000;">),</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> IntToHex(GUID.D4[</span><span class="f_CodeExample" style="color: #000080;">4</span><span class="f_CodeExample" style="color: #000000;">], </span><span class="f_CodeExample" style="color: #000080;">2</span><span class="f_CodeExample" style="color: #000000;">),</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> IntToHex(GUID.D4[</span><span class="f_CodeExample" style="color: #000080;">5</span><span class="f_CodeExample" style="color: #000000;">], </span><span class="f_CodeExample" style="color: #000080;">2</span><span class="f_CodeExample" style="color: #000000;">),</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> IntToHex(GUID.D4[</span><span class="f_CodeExample" style="color: #000080;">6</span><span class="f_CodeExample" style="color: #000000;">], </span><span class="f_CodeExample" style="color: #000080;">2</span><span class="f_CodeExample" style="color: #000000;">),</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> IntToHex(GUID.D4[</span><span class="f_CodeExample" style="color: #000080;">7</span><span class="f_CodeExample" style="color: #000000;">], </span><span class="f_CodeExample" style="color: #000080;">2</span><span class="f_CodeExample" style="color: #000000;">)</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> ]);</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">end</span><span class="f_CodeExample" style="color: #000000;">;</span></p> <p class="p_CodeExample"> </p> <p class="p_CodeExample"><span class="f_CodeExample" style="font-style: italic; color: #000080;">{ This GUIDToStringEx function give you the part of the GUID</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="font-style: italic; color: #000080;">to be shown, according to the part type GUIDPart }</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">function</span><span class="f_CodeExample" style="color: #000000;"> GUIDToStringEx(Guid: TGuid; Part: TGUIDPART): </span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">string</span><span class="f_CodeExample" style="color: #000000;">; overload;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">var</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">i: Integer;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">S: </span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">string</span><span class="f_CodeExample" style="color: #000000;">;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">begin</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">S := </span><span class="f_CodeExample" style="color: #ff0000;">''</span><span class="f_CodeExample" style="color: #000000;">;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">case</span><span class="f_CodeExample" style="color: #000000;"> Part </span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">of</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> guidp_NoFormat: S := GUIDToString(Guid);</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> guidp_All: S := GUIDToStringEx(Guid, fsGUID);</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> guidp_D1: S := Format(fsGUIDParts, [</span><span class="f_CodeExample" style="color: #000080;">1</span><span class="f_CodeExample" style="color: #000000;">, </span><span class="f_CodeExample" style="color: #ff0000;">' $'</span><span class="f_CodeExample" style="color: #000000;"> + IntToHex(GUID.D1, </span><span class="f_CodeExample" style="color: #000080;">8</span><span class="f_CodeExample" style="color: #000000;">)]);</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> guidp_D2: S := Format(fsGUIDParts, [</span><span class="f_CodeExample" style="color: #000080;">2</span><span class="f_CodeExample" style="color: #000000;">, </span><span class="f_CodeExample" style="color: #ff0000;">' $'</span><span class="f_CodeExample" style="color: #000000;"> + IntToHex(GUID.D2, </span><span class="f_CodeExample" style="color: #000080;">4</span><span class="f_CodeExample" style="color: #000000;">)]);</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> guidp_D3: S := Format(fsGUIDParts, [</span><span class="f_CodeExample" style="color: #000080;">3</span><span class="f_CodeExample" style="color: #000000;">, </span><span class="f_CodeExample" style="color: #ff0000;">' $'</span><span class="f_CodeExample" style="color: #000000;"> + IntToHex(GUID.D3, </span><span class="f_CodeExample" style="color: #000080;">4</span><span class="f_CodeExample" style="color: #000000;">)]);</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> guidp_D4: </span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">begin</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">for</span><span class="f_CodeExample" style="color: #000000;"> i := </span><span class="f_CodeExample" style="color: #000080;">0</span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">to</span><span class="f_CodeExample" style="color: #000080;">7</span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">do</span><span class="f_CodeExample" style="color: #000000;"> S := S + </span><span class="f_CodeExample" style="color: #ff0000;">' $'</span><span class="f_CodeExample" style="color: #000000;"> + IntToHex(GUID.D4[i], </span><span class="f_CodeExample" style="color: #000080;">2</span><span class="f_CodeExample" style="color: #000000;">);</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> S := Format(fsGUIDParts, [</span><span class="f_CodeExample" style="color: #000080;">4</span><span class="f_CodeExample" style="color: #000000;">, S]);</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">end</span><span class="f_CodeExample" style="color: #000000;">;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">else</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> S := </span><span class="f_CodeExample" style="color: #ff0000;">'?'</span><span class="f_CodeExample" style="color: #000000;">;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">end</span><span class="f_CodeExample" style="color: #000000;">;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">Result := S;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">end</span><span class="f_CodeExample" style="color: #000000;">;</span></p> <p class="p_CodeExample"> </p> <p class="p_CodeExample"><span class="f_CodeExample" style="font-style: italic; color: #000080;">{ How to use the different GUIDToStringEx functions }</span></p> <p class="p_CodeExample"> </p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">procedure</span><span class="f_CodeExample" style="color: #000000;"> TForm1.Button1Click(Sender: TObject);</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">var</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">NewGUID: TGUID;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">begin</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="font-style: italic; color: #000080;">{ Create a new GUID }</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">NewGUID := StringToGUID(CreateClassID);</span></p> <p class="p_CodeExample"> </p> <p class="p_CodeExample"><span class="f_CodeExample" style="font-style: italic; color: #000080;">{ Standard formated GUID string }</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">label1.Caption := GUIDToStringEx(NewGUID, guidp_NoFormat) +</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #ff0000;">#13#10</span><span class="f_CodeExample" style="color: #000000;"> +</span></p> <p class="p_CodeExample"> </p> <p class="p_CodeExample"><span class="f_CodeExample" style="font-style: italic; color: #000080;">{ Full formated GUID string acc. with fsGUID}</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> GUIDToStringEx(NewGUID, fsGUID) +</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #ff0000;">#13#10</span><span class="f_CodeExample" style="color: #000000;"> +</span></p> <p class="p_CodeExample"> </p> <p class="p_CodeExample"><span class="f_CodeExample" style="font-style: italic; color: #000080;">{ Full formated GUID string with default formating}</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> GUIDToStringEx(NewGUID, guidp_All) +</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #ff0000;">#13#10</span><span class="f_CodeExample" style="color: #000000;"> +</span></p> <p class="p_CodeExample"> </p> <p class="p_CodeExample"><span class="f_CodeExample" style="font-style: italic; color: #000080;">{ Part D3 of the GUID only }</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> GUIDToStringEx(NewGUID, guidp_D3);</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">end</span><span class="f_CodeExample" style="color: #000000;">;</span></p> </td> </tr> </tbody> </table> </div> <p> </p> <p style="text-align: right;"><span style="font-family: 'Arial Unicode MS', 'Lucida Sans Unicode', 'Arial'; color: #ff6600; font-size: 8pt; font-weight: bold;"> </span></p> <p><span style="font-family: 'Times New Roman'; color: #000000; font-weight: bold;">Взято с сайта</span>https://www.swissdelphicenter.ch/en/tipsindex</p> <p> </p> <div style="text-align: justify; text-indent: 0px; margin: 7px 0px; padding: 0px;"> <table style="border-bottom: #c0c0c0 1px solid; border-left: #000000 1px solid; background-color: #ffffc4; border-spacing: 0px; border-top: #000000 1px solid; border-right: #c0c0c0 1px solid;" border="1" cellspacing="0" cellpadding="5" bgcolor="#ffffc4"> <tbody> <tr align="left" valign="top"> <td style="border-bottom: #000000 1px solid; border-left: #c0c0c0 1px solid; border-top: #c0c0c0 1px solid; border-right: #000000 1px solid;"> <p style="text-align: justify;"><span style="font-family: 'Times New Roman'; color: #000000; font-weight: bold;">Code:</span></p> </td> </tr> <tr align="left"> <td style="border-bottom: #000000 1px solid; border-left: #c0c0c0 1px solid; border-top: #c0c0c0 1px solid; border-right: #000000 1px solid;"> <p class="p_CodeExample"><span class="f_CodeExample" style="font-style: italic; color: #000080;">{ You maybe have to access just a part of a GUID. }</span></p> <p class="p_CodeExample"> </p> <p class="p_CodeExample"> </p> <p class="p_CodeExample"><span class="f_CodeExample" style="font-style: italic; color: #000080;">{ Const for the function Format(...) }</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">const</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">fsGUID: </span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">string</span><span class="f_CodeExample" style="color: #000000;"> = </span><span class="f_CodeExample" style="color: #ff0000;">'D1: $%s'#13#10'D2: $%s'#13#10'D3: $%s'#13#10</span><span class="f_CodeExample" style="color: #000000;"> +</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #ff0000;">'D4: $%s $%s $%s $%s $%s $%s $%s $%s'</span><span class="f_CodeExample" style="color: #000000;">;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">fsGUIDParts: </span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">string</span><span class="f_CodeExample" style="color: #000000;"> = </span><span class="f_CodeExample" style="color: #ff0000;">'D%d:%s'</span><span class="f_CodeExample" style="color: #000000;">;</span></p> <p class="p_CodeExample"> </p> <p class="p_CodeExample"><span class="f_CodeExample" style="font-style: italic; color: #000080;">// Type for the GUID part to be shown</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">type</span></p> <p class="p_CodeExample"> </p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">TGUIDPART = (guidp_NoFormat, guidp_All, guidp_D1,</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> guidp_D2, guidp_D3, guidp_D4);</span></p> <p class="p_CodeExample"> </p> <p class="p_CodeExample"><span class="f_CodeExample" style="font-style: italic; color: #000080;">{ This GUIDToStringEx function give you the full GUID string</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="font-style: italic; color: #000080;">according with then format string FStr (you can change it !!!) }</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">function</span><span class="f_CodeExample" style="color: #000000;"> GUIDToStringEx(Guid: TGuid; FStr: </span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">string</span><span class="f_CodeExample" style="color: #000000;">): </span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">string</span><span class="f_CodeExample" style="color: #000000;">; overload;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">begin</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">Result := Format(FStr,</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> [IntToHex(GUID.D1, </span><span class="f_CodeExample" style="color: #000080;">8</span><span class="f_CodeExample" style="color: #000000;">),</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> IntToHex(GUID.D2, </span><span class="f_CodeExample" style="color: #000080;">4</span><span class="f_CodeExample" style="color: #000000;">),</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> IntToHex(GUID.D3, </span><span class="f_CodeExample" style="color: #000080;">4</span><span class="f_CodeExample" style="color: #000000;">),</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> IntToHex(GUID.D4[</span><span class="f_CodeExample" style="color: #000080;">0</span><span class="f_CodeExample" style="color: #000000;">], </span><span class="f_CodeExample" style="color: #000080;">2</span><span class="f_CodeExample" style="color: #000000;">),</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> IntToHex(GUID.D4[</span><span class="f_CodeExample" style="color: #000080;">1</span><span class="f_CodeExample" style="color: #000000;">], </span><span class="f_CodeExample" style="color: #000080;">2</span><span class="f_CodeExample" style="color: #000000;">),</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> IntToHex(GUID.D4[</span><span class="f_CodeExample" style="color: #000080;">2</span><span class="f_CodeExample" style="color: #000000;">], </span><span class="f_CodeExample" style="color: #000080;">2</span><span class="f_CodeExample" style="color: #000000;">),</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> IntToHex(GUID.D4[</span><span class="f_CodeExample" style="color: #000080;">3</span><span class="f_CodeExample" style="color: #000000;">], </span><span class="f_CodeExample" style="color: #000080;">2</span><span class="f_CodeExample" style="color: #000000;">),</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> IntToHex(GUID.D4[</span><span class="f_CodeExample" style="color: #000080;">4</span><span class="f_CodeExample" style="color: #000000;">], </span><span class="f_CodeExample" style="color: #000080;">2</span><span class="f_CodeExample" style="color: #000000;">),</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> IntToHex(GUID.D4[</span><span class="f_CodeExample" style="color: #000080;">5</span><span class="f_CodeExample" style="color: #000000;">], </span><span class="f_CodeExample" style="color: #000080;">2</span><span class="f_CodeExample" style="color: #000000;">),</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> IntToHex(GUID.D4[</span><span class="f_CodeExample" style="color: #000080;">6</span><span class="f_CodeExample" style="color: #000000;">], </span><span class="f_CodeExample" style="color: #000080;">2</span><span class="f_CodeExample" style="color: #000000;">),</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> IntToHex(GUID.D4[</span><span class="f_CodeExample" style="color: #000080;">7</span><span class="f_CodeExample" style="color: #000000;">], </span><span class="f_CodeExample" style="color: #000080;">2</span><span class="f_CodeExample" style="color: #000000;">)</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> ]);</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">end</span><span class="f_CodeExample" style="color: #000000;">;</span></p> <p class="p_CodeExample"> </p> <p class="p_CodeExample"><span class="f_CodeExample" style="font-style: italic; color: #000080;">{ This GUIDToStringEx function give you the part of the GUID</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="font-style: italic; color: #000080;">to be shown, according to the part type GUIDPart }</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">function</span><span class="f_CodeExample" style="color: #000000;"> GUIDToStringEx(Guid: TGuid; Part: TGUIDPART): </span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">string</span><span class="f_CodeExample" style="color: #000000;">; overload;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">var</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">i: Integer;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">S: </span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">string</span><span class="f_CodeExample" style="color: #000000;">;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">begin</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">S := </span><span class="f_CodeExample" style="color: #ff0000;">''</span><span class="f_CodeExample" style="color: #000000;">;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">case</span><span class="f_CodeExample" style="color: #000000;"> Part </span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">of</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> guidp_NoFormat: S := GUIDToString(Guid);</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> guidp_All: S := GUIDToStringEx(Guid, fsGUID);</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> guidp_D1: S := Format(fsGUIDParts, [</span><span class="f_CodeExample" style="color: #000080;">1</span><span class="f_CodeExample" style="color: #000000;">, </span><span class="f_CodeExample" style="color: #ff0000;">' $'</span><span class="f_CodeExample" style="color: #000000;"> + IntToHex(GUID.D1, </span><span class="f_CodeExample" style="color: #000080;">8</span><span class="f_CodeExample" style="color: #000000;">)]);</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> guidp_D2: S := Format(fsGUIDParts, [</span><span class="f_CodeExample" style="color: #000080;">2</span><span class="f_CodeExample" style="color: #000000;">, </span><span class="f_CodeExample" style="color: #ff0000;">' $'</span><span class="f_CodeExample" style="color: #000000;"> + IntToHex(GUID.D2, </span><span class="f_CodeExample" style="color: #000080;">4</span><span class="f_CodeExample" style="color: #000000;">)]);</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> guidp_D3: S := Format(fsGUIDParts, [</span><span class="f_CodeExample" style="color: #000080;">3</span><span class="f_CodeExample" style="color: #000000;">, </span><span class="f_CodeExample" style="color: #ff0000;">' $'</span><span class="f_CodeExample" style="color: #000000;"> + IntToHex(GUID.D3, </span><span class="f_CodeExample" style="color: #000080;">4</span><span class="f_CodeExample" style="color: #000000;">)]);</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> guidp_D4: </span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">begin</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">for</span><span class="f_CodeExample" style="color: #000000;"> i := </span><span class="f_CodeExample" style="color: #000080;">0</span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">to</span><span class="f_CodeExample" style="color: #000080;">7</span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">do</span><span class="f_CodeExample" style="color: #000000;"> S := S + </span><span class="f_CodeExample" style="color: #ff0000;">' $'</span><span class="f_CodeExample" style="color: #000000;"> + IntToHex(GUID.D4[i], </span><span class="f_CodeExample" style="color: #000080;">2</span><span class="f_CodeExample" style="color: #000000;">);</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> S := Format(fsGUIDParts, [</span><span class="f_CodeExample" style="color: #000080;">4</span><span class="f_CodeExample" style="color: #000000;">, S]);</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">end</span><span class="f_CodeExample" style="color: #000000;">;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">else</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> S := </span><span class="f_CodeExample" style="color: #ff0000;">'?'</span><span class="f_CodeExample" style="color: #000000;">;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">end</span><span class="f_CodeExample" style="color: #000000;">;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">Result := S;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">end</span><span class="f_CodeExample" style="color: #000000;">;</span></p> <p class="p_CodeExample"> </p> <p class="p_CodeExample"><span class="f_CodeExample" style="font-style: italic; color: #000080;">{ How to use the different GUIDToStringEx functions }</span></p> <p class="p_CodeExample"> </p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">procedure</span><span class="f_CodeExample" style="color: #000000;"> TForm1.Button1Click(Sender: TObject);</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">var</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">NewGUID: TGUID;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">begin</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="font-style: italic; color: #000080;">{ Create a new GUID }</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">NewGUID := StringToGUID(CreateClassID);</span></p> <p class="p_CodeExample"> </p> <p class="p_CodeExample"><span class="f_CodeExample" style="font-style: italic; color: #000080;">{ Standard formated GUID string }</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">label1.Caption := GUIDToStringEx(NewGUID, guidp_NoFormat) +</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #ff0000;">#13#10</span><span class="f_CodeExample" style="color: #000000;"> +</span></p> <p class="p_CodeExample"> </p> <p class="p_CodeExample"><span class="f_CodeExample" style="font-style: italic; color: #000080;">{ Full formated GUID string acc. with fsGUID}</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> GUIDToStringEx(NewGUID, fsGUID) +</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #ff0000;">#13#10</span><span class="f_CodeExample" style="color: #000000;"> +</span></p> <p class="p_CodeExample"> </p> <p class="p_CodeExample"><span class="f_CodeExample" style="font-style: italic; color: #000080;">{ Full formated GUID string with default formating}</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> GUIDToStringEx(NewGUID, guidp_All) +</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #ff0000;">#13#10</span><span class="f_CodeExample" style="color: #000000;"> +</span></p> <p class="p_CodeExample"> </p> <p class="p_CodeExample"><span class="f_CodeExample" style="font-style: italic; color: #000080;">{ Part D3 of the GUID only }</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> GUIDToStringEx(NewGUID, guidp_D3);</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">end</span><span class="f_CodeExample" style="color: #000000;">;</span></p> </td> </tr> </tbody> </table> </div> <p> </p> <p style="text-align: right;"><span style="font-family: 'Arial Unicode MS', 'Lucida Sans Unicode', 'Arial'; color: #ff6600; font-size: 8pt; font-weight: bold;"> </span></p> <p><span style="font-family: 'Times New Roman'; color: #000000; font-weight: bold;">Взято с сайта</span>https://www.swissdelphicenter.ch/en/tipsindex</p> Как сделать procedure/function с переменным количеством параметров? 2013-08-15T16:03:00+07:00 2013-08-15T16:03:00+07:00 https://delphi-hlp.ru/index.php/obshchie-voprosy/kak-sdelat-procedure-function-s-peremennym-kolichestvom-parametrov.html Super User toto44@inbox.ru <div style="text-align: justify; text-indent: 0px; margin: 7px 0px; padding: 0px;"> <table style="border-bottom: #c0c0c0 1px solid; border-left: #000000 1px solid; background-color: #ffffc4; border-spacing: 0px; border-top: #000000 1px solid; border-right: #c0c0c0 1px solid;" border="1" cellspacing="0" cellpadding="5" bgcolor="#ffffc4"> <tbody> <tr align="left" valign="top"> <td style="border-bottom: #000000 1px solid; border-left: #c0c0c0 1px solid; border-top: #c0c0c0 1px solid; border-right: #000000 1px solid;"> <p style="text-align: justify;"><span style="font-family: 'Times New Roman'; color: #000000; font-weight: bold;">Code:</span></p> </td> </tr> <tr align="left"> <td style="border-bottom: #000000 1px solid; border-left: #c0c0c0 1px solid; border-top: #c0c0c0 1px solid; border-right: #000000 1px solid;"> <p class="p_CodeExample"> </p> <p class="p_CodeExample"><span class="f_CodeExample" style="font-style: italic; color: #000080;">{ .... }</span></p> <p class="p_CodeExample"> </p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">type</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">VA_FN = </span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">function</span><span class="f_CodeExample" style="color: #000000;">(</span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">const</span><span class="f_CodeExample" style="color: #000000;"> par1, par2</span><span class="f_CodeExample" style="font-style: italic; color: #000080;">{, ...}</span><span class="f_CodeExample" style="color: #000000;">: Pointer): Boolean;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">cdecl</span><span class="f_CodeExample" style="color: #000000;"> varargs;</span></p> <p class="p_CodeExample"> </p> <p class="p_CodeExample"><span class="f_CodeExample" style="font-style: italic; color: #000080;">{ .... }</span></p> <p class="p_CodeExample"> </p> <p class="p_CodeExample"><span class="f_CodeExample" style="font-style: italic; color: #000080;">//</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="font-style: italic; color: #000080;">// varargs without "external" keyword</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="font-style: italic; color: #000080;">//</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">function</span><span class="f_CodeExample" style="color: #000000;"> fn(</span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">const</span><span class="f_CodeExample" style="color: #000000;"> par1, par2</span><span class="f_CodeExample" style="font-style: italic; color: #000080;">{, ...}</span><span class="f_CodeExample" style="color: #000000;">: Pointer): Boolean; </span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">cdecl</span><span class="f_CodeExample" style="color: #000000;">;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">var</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">last_arg: Pointer </span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">absolute</span><span class="f_CodeExample" style="color: #000000;"> par2;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">ptr_args: </span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">array</span><span class="f_CodeExample" style="color: #000000;">[</span><span class="f_CodeExample" style="color: #000080;">0</span><span class="f_CodeExample" style="color: #000000;">..MAXLONG </span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">shr</span><span class="f_CodeExample" style="color: #000080;">2</span><span class="f_CodeExample" style="color: #000000;">] </span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">of</span><span class="f_CodeExample" style="color: #000000;"> Pointer </span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">absolute</span><span class="f_CodeExample" style="color: #000000;"> last_arg;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">dw_args: </span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">array</span><span class="f_CodeExample" style="color: #000000;">[</span><span class="f_CodeExample" style="color: #000080;">0</span><span class="f_CodeExample" style="color: #000000;">..MAXLONG </span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">shr</span><span class="f_CodeExample" style="color: #000080;">2</span><span class="f_CodeExample" style="color: #000000;">] </span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">of</span><span class="f_CodeExample" style="color: #000000;"> Cardinal </span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">absolute</span><span class="f_CodeExample" style="color: #000000;"> last_arg;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">s_args: </span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">array</span><span class="f_CodeExample" style="color: #000000;">[</span><span class="f_CodeExample" style="color: #000080;">0</span><span class="f_CodeExample" style="color: #000000;">..MAXLONG </span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">shr</span><span class="f_CodeExample" style="color: #000080;">2</span><span class="f_CodeExample" style="color: #000000;">] </span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">of</span><span class="f_CodeExample" style="color: #000000;"> PChar </span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">absolute</span><span class="f_CodeExample" style="color: #000000;"> last_arg;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">w_args: </span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">array</span><span class="f_CodeExample" style="color: #000000;">[</span><span class="f_CodeExample" style="color: #000080;">0</span><span class="f_CodeExample" style="color: #000000;">..MAXLONG </span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">shr</span><span class="f_CodeExample" style="color: #000080;">2</span><span class="f_CodeExample" style="color: #000000;">] </span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">of</span><span class="f_CodeExample" style="color: #000000;"> WideString </span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">absolute</span><span class="f_CodeExample" style="color: #000000;"> last_arg;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">begin</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="font-style: italic; color: #000080;">// ptr_args[1] is first optional argument</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">Result := (ptr_args[</span><span class="f_CodeExample" style="color: #000080;">1</span><span class="f_CodeExample" style="color: #000000;">] </span><span class="f_CodeExample" style="font-style: italic; color: #000080;">{par3}</span><span class="f_CodeExample" style="color: #000000;"> = Pointer(</span><span class="f_CodeExample" style="color: #000080;">1</span><span class="f_CodeExample" style="color: #000000;">)) </span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">and</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> (dw_args[</span><span class="f_CodeExample" style="color: #000080;">2</span><span class="f_CodeExample" style="color: #000000;">] </span><span class="f_CodeExample" style="font-style: italic; color: #000080;">{par4}</span><span class="f_CodeExample" style="color: #000000;"> = </span><span class="f_CodeExample" style="color: #000080;">2</span><span class="f_CodeExample" style="color: #000000;">) </span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">and</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> (</span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">string</span><span class="f_CodeExample" style="color: #000000;">(ptr_args[</span><span class="f_CodeExample" style="color: #000080;">3</span><span class="f_CodeExample" style="color: #000000;">]) = </span><span class="f_CodeExample" style="color: #ff0000;">'CHAR'</span><span class="f_CodeExample" style="color: #000000;">) </span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">and</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> (w_args[</span><span class="f_CodeExample" style="color: #000080;">4</span><span class="f_CodeExample" style="color: #000000;">] = </span><span class="f_CodeExample" style="color: #ff0000;">'WCHAR'</span><span class="f_CodeExample" style="color: #000000;">);</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">end</span><span class="f_CodeExample" style="color: #000000;">;</span></p> <p class="p_CodeExample"> </p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">procedure</span><span class="f_CodeExample" style="color: #000000;"> test_fn;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">begin</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="font-style: italic; color: #000080;">// VA_FN typecast</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">VA_FN(@fn)(</span><span class="f_CodeExample" style="font-style: italic; color: #000080;">{par1}</span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">nil</span><span class="f_CodeExample" style="color: #000000;">, </span><span class="f_CodeExample" style="font-style: italic; color: #000080;">{par2}</span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">nil</span><span class="f_CodeExample" style="color: #000000;">, </span><span class="f_CodeExample" style="font-style: italic; color: #000080;">{par3}</span><span class="f_CodeExample" style="color: #000000;">Pointer(</span><span class="f_CodeExample" style="color: #000080;">1</span><span class="f_CodeExample" style="color: #000000;">), </span><span class="f_CodeExample" style="font-style: italic; color: #000080;">{par4}</span><span class="f_CodeExample" style="color: #000080;">2</span><span class="f_CodeExample" style="color: #000000;">, </span><span class="f_CodeExample" style="font-style: italic; color: #000080;">{par5}</span><span class="f_CodeExample" style="color: #ff0000;">'CHAR'</span><span class="f_CodeExample" style="color: #000000;">,</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="font-style: italic; color: #000080;">{par6}</span><span class="f_CodeExample" style="color: #000000;">WideString(</span><span class="f_CodeExample" style="color: #ff0000;">'WCHAR'</span><span class="f_CodeExample" style="color: #000000;">));</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">end</span><span class="f_CodeExample" style="color: #000000;">;</span></p> </td> </tr> </tbody> </table> </div> <p> </p> <p> </p> <p style="text-align: right;"><span style="font-family: 'Arial Unicode MS', 'Lucida Sans Unicode', 'Arial'; color: #ff6600; font-size: 8pt; font-weight: bold;"> </span></p> <p><span style="font-family: 'Times New Roman'; color: #000000; font-weight: bold;">Взято с сайта</span>https://www.swissdelphicenter.ch/en/tipsindex</p> <div style="text-align: justify; text-indent: 0px; margin: 7px 0px; padding: 0px;"> <table style="border-bottom: #c0c0c0 1px solid; border-left: #000000 1px solid; background-color: #ffffc4; border-spacing: 0px; border-top: #000000 1px solid; border-right: #c0c0c0 1px solid;" border="1" cellspacing="0" cellpadding="5" bgcolor="#ffffc4"> <tbody> <tr align="left" valign="top"> <td style="border-bottom: #000000 1px solid; border-left: #c0c0c0 1px solid; border-top: #c0c0c0 1px solid; border-right: #000000 1px solid;"> <p style="text-align: justify;"><span style="font-family: 'Times New Roman'; color: #000000; font-weight: bold;">Code:</span></p> </td> </tr> <tr align="left"> <td style="border-bottom: #000000 1px solid; border-left: #c0c0c0 1px solid; border-top: #c0c0c0 1px solid; border-right: #000000 1px solid;"> <p class="p_CodeExample"> </p> <p class="p_CodeExample"><span class="f_CodeExample" style="font-style: italic; color: #000080;">{ .... }</span></p> <p class="p_CodeExample"> </p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">type</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">VA_FN = </span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">function</span><span class="f_CodeExample" style="color: #000000;">(</span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">const</span><span class="f_CodeExample" style="color: #000000;"> par1, par2</span><span class="f_CodeExample" style="font-style: italic; color: #000080;">{, ...}</span><span class="f_CodeExample" style="color: #000000;">: Pointer): Boolean;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">cdecl</span><span class="f_CodeExample" style="color: #000000;"> varargs;</span></p> <p class="p_CodeExample"> </p> <p class="p_CodeExample"><span class="f_CodeExample" style="font-style: italic; color: #000080;">{ .... }</span></p> <p class="p_CodeExample"> </p> <p class="p_CodeExample"><span class="f_CodeExample" style="font-style: italic; color: #000080;">//</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="font-style: italic; color: #000080;">// varargs without "external" keyword</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="font-style: italic; color: #000080;">//</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">function</span><span class="f_CodeExample" style="color: #000000;"> fn(</span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">const</span><span class="f_CodeExample" style="color: #000000;"> par1, par2</span><span class="f_CodeExample" style="font-style: italic; color: #000080;">{, ...}</span><span class="f_CodeExample" style="color: #000000;">: Pointer): Boolean; </span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">cdecl</span><span class="f_CodeExample" style="color: #000000;">;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">var</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">last_arg: Pointer </span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">absolute</span><span class="f_CodeExample" style="color: #000000;"> par2;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">ptr_args: </span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">array</span><span class="f_CodeExample" style="color: #000000;">[</span><span class="f_CodeExample" style="color: #000080;">0</span><span class="f_CodeExample" style="color: #000000;">..MAXLONG </span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">shr</span><span class="f_CodeExample" style="color: #000080;">2</span><span class="f_CodeExample" style="color: #000000;">] </span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">of</span><span class="f_CodeExample" style="color: #000000;"> Pointer </span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">absolute</span><span class="f_CodeExample" style="color: #000000;"> last_arg;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">dw_args: </span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">array</span><span class="f_CodeExample" style="color: #000000;">[</span><span class="f_CodeExample" style="color: #000080;">0</span><span class="f_CodeExample" style="color: #000000;">..MAXLONG </span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">shr</span><span class="f_CodeExample" style="color: #000080;">2</span><span class="f_CodeExample" style="color: #000000;">] </span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">of</span><span class="f_CodeExample" style="color: #000000;"> Cardinal </span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">absolute</span><span class="f_CodeExample" style="color: #000000;"> last_arg;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">s_args: </span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">array</span><span class="f_CodeExample" style="color: #000000;">[</span><span class="f_CodeExample" style="color: #000080;">0</span><span class="f_CodeExample" style="color: #000000;">..MAXLONG </span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">shr</span><span class="f_CodeExample" style="color: #000080;">2</span><span class="f_CodeExample" style="color: #000000;">] </span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">of</span><span class="f_CodeExample" style="color: #000000;"> PChar </span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">absolute</span><span class="f_CodeExample" style="color: #000000;"> last_arg;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">w_args: </span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">array</span><span class="f_CodeExample" style="color: #000000;">[</span><span class="f_CodeExample" style="color: #000080;">0</span><span class="f_CodeExample" style="color: #000000;">..MAXLONG </span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">shr</span><span class="f_CodeExample" style="color: #000080;">2</span><span class="f_CodeExample" style="color: #000000;">] </span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">of</span><span class="f_CodeExample" style="color: #000000;"> WideString </span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">absolute</span><span class="f_CodeExample" style="color: #000000;"> last_arg;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">begin</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="font-style: italic; color: #000080;">// ptr_args[1] is first optional argument</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">Result := (ptr_args[</span><span class="f_CodeExample" style="color: #000080;">1</span><span class="f_CodeExample" style="color: #000000;">] </span><span class="f_CodeExample" style="font-style: italic; color: #000080;">{par3}</span><span class="f_CodeExample" style="color: #000000;"> = Pointer(</span><span class="f_CodeExample" style="color: #000080;">1</span><span class="f_CodeExample" style="color: #000000;">)) </span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">and</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> (dw_args[</span><span class="f_CodeExample" style="color: #000080;">2</span><span class="f_CodeExample" style="color: #000000;">] </span><span class="f_CodeExample" style="font-style: italic; color: #000080;">{par4}</span><span class="f_CodeExample" style="color: #000000;"> = </span><span class="f_CodeExample" style="color: #000080;">2</span><span class="f_CodeExample" style="color: #000000;">) </span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">and</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> (</span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">string</span><span class="f_CodeExample" style="color: #000000;">(ptr_args[</span><span class="f_CodeExample" style="color: #000080;">3</span><span class="f_CodeExample" style="color: #000000;">]) = </span><span class="f_CodeExample" style="color: #ff0000;">'CHAR'</span><span class="f_CodeExample" style="color: #000000;">) </span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">and</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> (w_args[</span><span class="f_CodeExample" style="color: #000080;">4</span><span class="f_CodeExample" style="color: #000000;">] = </span><span class="f_CodeExample" style="color: #ff0000;">'WCHAR'</span><span class="f_CodeExample" style="color: #000000;">);</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">end</span><span class="f_CodeExample" style="color: #000000;">;</span></p> <p class="p_CodeExample"> </p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">procedure</span><span class="f_CodeExample" style="color: #000000;"> test_fn;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">begin</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="font-style: italic; color: #000080;">// VA_FN typecast</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">VA_FN(@fn)(</span><span class="f_CodeExample" style="font-style: italic; color: #000080;">{par1}</span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">nil</span><span class="f_CodeExample" style="color: #000000;">, </span><span class="f_CodeExample" style="font-style: italic; color: #000080;">{par2}</span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">nil</span><span class="f_CodeExample" style="color: #000000;">, </span><span class="f_CodeExample" style="font-style: italic; color: #000080;">{par3}</span><span class="f_CodeExample" style="color: #000000;">Pointer(</span><span class="f_CodeExample" style="color: #000080;">1</span><span class="f_CodeExample" style="color: #000000;">), </span><span class="f_CodeExample" style="font-style: italic; color: #000080;">{par4}</span><span class="f_CodeExample" style="color: #000080;">2</span><span class="f_CodeExample" style="color: #000000;">, </span><span class="f_CodeExample" style="font-style: italic; color: #000080;">{par5}</span><span class="f_CodeExample" style="color: #ff0000;">'CHAR'</span><span class="f_CodeExample" style="color: #000000;">,</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="font-style: italic; color: #000080;">{par6}</span><span class="f_CodeExample" style="color: #000000;">WideString(</span><span class="f_CodeExample" style="color: #ff0000;">'WCHAR'</span><span class="f_CodeExample" style="color: #000000;">));</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">end</span><span class="f_CodeExample" style="color: #000000;">;</span></p> </td> </tr> </tbody> </table> </div> <p> </p> <p> </p> <p style="text-align: right;"><span style="font-family: 'Arial Unicode MS', 'Lucida Sans Unicode', 'Arial'; color: #ff6600; font-size: 8pt; font-weight: bold;"> </span></p> <p><span style="font-family: 'Times New Roman'; color: #000000; font-weight: bold;">Взято с сайта</span>https://www.swissdelphicenter.ch/en/tipsindex</p> Можно ли задать шаг в For? 2013-08-15T16:00:49+07:00 2013-08-15T16:00:49+07:00 https://delphi-hlp.ru/index.php/obshchie-voprosy/mozhno-li-zadat-shag-v-for.html Super User toto44@inbox.ru <div style="text-align: justify; text-indent: 0px; margin: 7px 0px; padding: 0px;"> <table style="border-bottom: #c0c0c0 1px solid; border-left: #000000 1px solid; background-color: #ffffc4; border-spacing: 0px; border-top: #000000 1px solid; border-right: #c0c0c0 1px solid;" border="1" cellspacing="0" cellpadding="5" bgcolor="#ffffc4"> <tbody> <tr align="left" valign="top"> <td style="border-bottom: #000000 1px solid; border-left: #c0c0c0 1px solid; border-top: #c0c0c0 1px solid; border-right: #000000 1px solid;"> <p style="text-align: justify;"><span style="font-family: 'Times New Roman'; color: #000000; font-weight: bold;">Code:</span></p> </td> </tr> <tr align="left"> <td style="border-bottom: #000000 1px solid; border-left: #c0c0c0 1px solid; border-top: #c0c0c0 1px solid; border-right: #000000 1px solid;"> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">{©Drkb v.3(2007): www.drkb.ru, </span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">®Vit (Vitaly Nevzorov) - nevzorov@yahoo.com}</span></p> <p class="p_CodeExample"> </p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">For</span><span class="f_CodeExample" style="color: #000000;"> i:=</span><span class="f_CodeExample" style="color: #000080;">0</span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">to</span><span class="f_CodeExample" style="color: #000000;"> Maximum </span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">do</span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">if</span><span class="f_CodeExample" style="color: #000000;"> i </span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">mod</span><span class="f_CodeExample" style="color: #000000;"> step = </span><span class="f_CodeExample" style="color: #000080;">0</span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">then</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">begin</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">end</span><span class="f_CodeExample" style="color: #000000;">; </span></p> </td> </tr> </tbody> </table> </div> <p> </p> <p><span style="font-family: 'Times New Roman'; color: #000000;">Переменная Step и есть нужный шаг</span></p> <p> </p> <p style="text-align: right;"><span style="font-family: 'Arial Unicode MS', 'Lucida Sans Unicode', 'Arial'; color: #ff6600; font-size: 8pt; font-weight: bold;"> </span></p> <p><span style="font-family: 'Times New Roman'; color: #ff0000; font-size: 10pt; font-weight: bold;">Автор:</span><span style="font-family: 'Times New Roman'; color: #0000ff; font-size: 10pt; font-weight: bold; text-decoration: underline;">Vit</span><span style="font-family: 'Times New Roman'; font-size: 10pt; font-weight: bold;">  </span></p> <p><span style="font-family: 'Times New Roman'; color: #000000; font-weight: bold;">Взято из </span><span style="color: #0000ff; font-size: 10pt; font-weight: bold; text-decoration: underline;">https://forum.sources</span></p> <div style="text-align: justify; text-indent: 0px; margin: 7px 0px; padding: 0px;"> <table style="border-bottom: #c0c0c0 1px solid; border-left: #000000 1px solid; background-color: #ffffc4; border-spacing: 0px; border-top: #000000 1px solid; border-right: #c0c0c0 1px solid;" border="1" cellspacing="0" cellpadding="5" bgcolor="#ffffc4"> <tbody> <tr align="left" valign="top"> <td style="border-bottom: #000000 1px solid; border-left: #c0c0c0 1px solid; border-top: #c0c0c0 1px solid; border-right: #000000 1px solid;"> <p style="text-align: justify;"><span style="font-family: 'Times New Roman'; color: #000000; font-weight: bold;">Code:</span></p> </td> </tr> <tr align="left"> <td style="border-bottom: #000000 1px solid; border-left: #c0c0c0 1px solid; border-top: #c0c0c0 1px solid; border-right: #000000 1px solid;"> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">{©Drkb v.3(2007): www.drkb.ru, </span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">®Vit (Vitaly Nevzorov) - nevzorov@yahoo.com}</span></p> <p class="p_CodeExample"> </p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">For</span><span class="f_CodeExample" style="color: #000000;"> i:=</span><span class="f_CodeExample" style="color: #000080;">0</span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">to</span><span class="f_CodeExample" style="color: #000000;"> Maximum </span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">do</span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">if</span><span class="f_CodeExample" style="color: #000000;"> i </span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">mod</span><span class="f_CodeExample" style="color: #000000;"> step = </span><span class="f_CodeExample" style="color: #000080;">0</span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">then</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">begin</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">end</span><span class="f_CodeExample" style="color: #000000;">; </span></p> </td> </tr> </tbody> </table> </div> <p> </p> <p><span style="font-family: 'Times New Roman'; color: #000000;">Переменная Step и есть нужный шаг</span></p> <p> </p> <p style="text-align: right;"><span style="font-family: 'Arial Unicode MS', 'Lucida Sans Unicode', 'Arial'; color: #ff6600; font-size: 8pt; font-weight: bold;"> </span></p> <p><span style="font-family: 'Times New Roman'; color: #ff0000; font-size: 10pt; font-weight: bold;">Автор:</span><span style="font-family: 'Times New Roman'; color: #0000ff; font-size: 10pt; font-weight: bold; text-decoration: underline;">Vit</span><span style="font-family: 'Times New Roman'; font-size: 10pt; font-weight: bold;">  </span></p> <p><span style="font-family: 'Times New Roman'; color: #000000; font-weight: bold;">Взято из </span><span style="color: #0000ff; font-size: 10pt; font-weight: bold; text-decoration: underline;">https://forum.sources</span></p> О переносе проекта в другую папку 2013-08-15T16:12:37+07:00 2013-08-15T16:12:37+07:00 https://delphi-hlp.ru/index.php/obshchie-voprosy/o-perenose-proekta-v-druguyu-papku.html Super User toto44@inbox.ru <p> <span class="f_Heading1">О </span><span class="f_Heading1">переносе </span><span class="f_Heading1">проекта </span><span class="f_Heading1">в </span><span class="f_Heading1">другую </span><span class="f_Heading1">папку</span></p> <p><br />Кстати, данный рисунок иллюстрирует нарушение правила «один проект — одна папка»: в этом проекте, вопреки означенному правилу, многие модули хранятся во вложенных папках, в результате delphi указывает длинные маршруты доступа к соответствующим файлам. Если такой проект скопировать на дискету, то эти маршруты останутся без изменения и компилятор не сможет найти нужные файлы. Еще хуже, если скопировать проект в другую папку на том же жестком диске.</p> <p class="feed-readmore"><a target="_blank" href ="/index.php/obshchie-voprosy/o-perenose-proekta-v-druguyu-papku.html">Подробнее...</a></p> <p> <span class="f_Heading1">О </span><span class="f_Heading1">переносе </span><span class="f_Heading1">проекта </span><span class="f_Heading1">в </span><span class="f_Heading1">другую </span><span class="f_Heading1">папку</span></p> <p><br />Кстати, данный рисунок иллюстрирует нарушение правила «один проект — одна папка»: в этом проекте, вопреки означенному правилу, многие модули хранятся во вложенных папках, в результате delphi указывает длинные маршруты доступа к соответствующим файлам. Если такой проект скопировать на дискету, то эти маршруты останутся без изменения и компилятор не сможет найти нужные файлы. Еще хуже, если скопировать проект в другую папку на том же жестком диске.</p> <p class="feed-readmore"><a target="_blank" href ="/index.php/obshchie-voprosy/o-perenose-proekta-v-druguyu-papku.html">Подробнее...</a></p> О файле проекта 2013-08-15T16:11:48+07:00 2013-08-15T16:11:48+07:00 https://delphi-hlp.ru/index.php/obshchie-voprosy/o-fajle-proekta.html Super User toto44@inbox.ru <p>Известно, что delphi создает множество файлов с расширениями pas, dfm, dpr и т.д. Обычно программиста интересуют файлы кода (pas) и описания форм (dfm), а остальные остаются вне его поля зрения, а зря — они несут важную информацию, которую можно (а в ряде случаев — нужно) изменять.</p> <p> </p> <p>Начнем с файла проекта (dpr). Фактически он содержит собственно программу, в то время как связанные с проектом многочисленные файлы форм и dll представляют собой подпрограммы.</p> <p>Структура файла проекта, содержащего единственную форму, такова, как показано в листинге 1.</p> <p> </p> <p class="feed-readmore"><a target="_blank" href ="/index.php/obshchie-voprosy/o-fajle-proekta.html">Подробнее...</a></p> <p>Известно, что delphi создает множество файлов с расширениями pas, dfm, dpr и т.д. Обычно программиста интересуют файлы кода (pas) и описания форм (dfm), а остальные остаются вне его поля зрения, а зря — они несут важную информацию, которую можно (а в ряде случаев — нужно) изменять.</p> <p> </p> <p>Начнем с файла проекта (dpr). Фактически он содержит собственно программу, в то время как связанные с проектом многочисленные файлы форм и dll представляют собой подпрограммы.</p> <p>Структура файла проекта, содержащего единственную форму, такова, как показано в листинге 1.</p> <p> </p> <p class="feed-readmore"><a target="_blank" href ="/index.php/obshchie-voprosy/o-fajle-proekta.html">Подробнее...</a></p> Удобная функция ifthen 2013-08-15T16:09:26+07:00 2013-08-15T16:09:26+07:00 https://delphi-hlp.ru/index.php/obshchie-voprosy/udobnaya-funktsiya-ifthen.html Super User toto44@inbox.ru <p><span style="font-family: 'Times New Roman';">В Делфи 6 (модуль Math) появилась удобная функция ifthen которая соответствует оператору "?" языка С++.</span></p> <p> </p> <p><span style="font-family: 'Times New Roman';">пример:</span></p> <p> </p> <div style="text-align: justify; text-indent: 0px; margin: 7px 0px; padding: 0px;"> <table style="border-bottom: #c0c0c0 1px solid; border-left: #000000 1px solid; background-color: #ffffc4; border-spacing: 0px; border-top: #000000 1px solid; border-right: #c0c0c0 1px solid;" border="1" cellspacing="0" cellpadding="5" bgcolor="#ffffc4"> <tbody> <tr align="left" valign="top"> <td style="border-bottom: #000000 1px solid; border-left: #c0c0c0 1px solid; border-top: #c0c0c0 1px solid; border-right: #000000 1px solid;"> <p style="text-align: justify;"><span style="font-family: 'Times New Roman'; color: #000000; font-weight: bold;">Code:</span></p> </td> </tr> <tr align="left"> <td style="border-bottom: #000000 1px solid; border-left: #c0c0c0 1px solid; border-top: #c0c0c0 1px solid; border-right: #000000 1px solid;"> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">{©Drkb v.3(2007): www.drkb.ru}</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">procedure</span><span class="f_CodeExample" style="color: #000000;"> TForm1.Button1Click(Sender: TObject);</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">var</span><span class="f_CodeExample" style="color: #000000;"> k, i, j: Integer;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">begin</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">i := </span><span class="f_CodeExample" style="color: #000080;">3</span><span class="f_CodeExample" style="color: #000000;">; j := </span><span class="f_CodeExample" style="color: #000080;">2</span><span class="f_CodeExample" style="color: #000000;">;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">k := ifthen(</span><span class="f_CodeExample" style="font-style: italic; color: #000080;">{If}</span><span class="f_CodeExample" style="color: #000000;">i &lt; j, </span><span class="f_CodeExample" style="font-style: italic; color: #000080;">{Then}</span><span class="f_CodeExample" style="color: #000000;">i, </span><span class="f_CodeExample" style="font-style: italic; color: #000080;">{Else}</span><span class="f_CodeExample" style="color: #000000;">k);</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">End</span><span class="f_CodeExample" style="color: #000000;">;</span></p> </td> </tr> </tbody> </table> </div> <p> </p> <p> </p> <p><span style="font-family: 'Times New Roman';">Автор feriman</span></p> <p style="text-align: right;"><span style="font-family: 'Arial Unicode MS', 'Lucida Sans Unicode', 'Arial'; color: #ff6600; font-size: 8pt; font-weight: bold;"> </span></p> <p><span style="font-family: 'Times New Roman'; color: #000000; font-weight: bold;">Взято из</span><span style="color: #0000ff; font-size: 10pt; font-weight: bold; text-decoration: underline;">https://forum.sources</span></p> <p><span style="font-family: 'Times New Roman';">В Делфи 6 (модуль Math) появилась удобная функция ifthen которая соответствует оператору "?" языка С++.</span></p> <p> </p> <p><span style="font-family: 'Times New Roman';">пример:</span></p> <p> </p> <div style="text-align: justify; text-indent: 0px; margin: 7px 0px; padding: 0px;"> <table style="border-bottom: #c0c0c0 1px solid; border-left: #000000 1px solid; background-color: #ffffc4; border-spacing: 0px; border-top: #000000 1px solid; border-right: #c0c0c0 1px solid;" border="1" cellspacing="0" cellpadding="5" bgcolor="#ffffc4"> <tbody> <tr align="left" valign="top"> <td style="border-bottom: #000000 1px solid; border-left: #c0c0c0 1px solid; border-top: #c0c0c0 1px solid; border-right: #000000 1px solid;"> <p style="text-align: justify;"><span style="font-family: 'Times New Roman'; color: #000000; font-weight: bold;">Code:</span></p> </td> </tr> <tr align="left"> <td style="border-bottom: #000000 1px solid; border-left: #c0c0c0 1px solid; border-top: #c0c0c0 1px solid; border-right: #000000 1px solid;"> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">{©Drkb v.3(2007): www.drkb.ru}</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">procedure</span><span class="f_CodeExample" style="color: #000000;"> TForm1.Button1Click(Sender: TObject);</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">var</span><span class="f_CodeExample" style="color: #000000;"> k, i, j: Integer;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">begin</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">i := </span><span class="f_CodeExample" style="color: #000080;">3</span><span class="f_CodeExample" style="color: #000000;">; j := </span><span class="f_CodeExample" style="color: #000080;">2</span><span class="f_CodeExample" style="color: #000000;">;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">k := ifthen(</span><span class="f_CodeExample" style="font-style: italic; color: #000080;">{If}</span><span class="f_CodeExample" style="color: #000000;">i &lt; j, </span><span class="f_CodeExample" style="font-style: italic; color: #000080;">{Then}</span><span class="f_CodeExample" style="color: #000000;">i, </span><span class="f_CodeExample" style="font-style: italic; color: #000080;">{Else}</span><span class="f_CodeExample" style="color: #000000;">k);</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">End</span><span class="f_CodeExample" style="color: #000000;">;</span></p> </td> </tr> </tbody> </table> </div> <p> </p> <p> </p> <p><span style="font-family: 'Times New Roman';">Автор feriman</span></p> <p style="text-align: right;"><span style="font-family: 'Arial Unicode MS', 'Lucida Sans Unicode', 'Arial'; color: #ff6600; font-size: 8pt; font-weight: bold;"> </span></p> <p><span style="font-family: 'Times New Roman'; color: #000000; font-weight: bold;">Взято из</span><span style="color: #0000ff; font-size: 10pt; font-weight: bold; text-decoration: underline;">https://forum.sources</span></p> Функция, возвращающая тип 2013-08-15T16:07:37+07:00 2013-08-15T16:07:37+07:00 https://delphi-hlp.ru/index.php/obshchie-voprosy/funktsiya-vozvrashchayushchaya-tip.html Super User toto44@inbox.ru <p> </p> <table width="100%" border="0" cellspacing="0" cellpadding="0"> <tbody> <tr> <td> </td> </tr> </tbody> </table> <p> </p> <p> </p> <div style="text-align: justify; text-indent: 0px; margin: 7px 0px; padding: 0px;"> <table style="border-bottom: #c0c0c0 1px solid; border-left: #000000 1px solid; background-color: #ffffc4; border-spacing: 0px; border-top: #000000 1px solid; border-right: #c0c0c0 1px solid;" border="1" cellspacing="0" cellpadding="5" bgcolor="#ffffc4"> <tbody> <tr align="left" valign="top"> <td style="border-bottom: #000000 1px solid; border-left: #c0c0c0 1px solid; border-top: #c0c0c0 1px solid; border-right: #000000 1px solid;"> <p style="text-align: justify;"><span style="font-family: 'Times New Roman'; color: #000000; font-weight: bold;">Code:</span></p> </td> </tr> <tr align="left"> <td style="border-bottom: #000000 1px solid; border-left: #c0c0c0 1px solid; border-top: #c0c0c0 1px solid; border-right: #000000 1px solid;"> <p class="p_CodeExample"><span class="f_CodeExample" style="font-style: italic; color: #000080;">// функция Chameleon, возвращающая тип сгенерированного исключения</span></p> <p class="p_CodeExample"> </p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">unit</span><span class="f_CodeExample" style="color: #000000;"> Unit1;</span></p> <p class="p_CodeExample"> </p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">interface</span></p> <p class="p_CodeExample"> </p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">uses</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">Windows, Messages, SysUtils, Classes, Graphics, Controls,</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">Forms, Dialogs, StdCtrls;</span></p> <p class="p_CodeExample"> </p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">type</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">MyBoolean = </span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">class</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">public</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> Value: boolean;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">end</span><span class="f_CodeExample" style="color: #000000;">;</span></p> <p class="p_CodeExample"> </p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">MyInteger = </span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">class</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">public</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> Value: integer;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">end</span><span class="f_CodeExample" style="color: #000000;">;</span></p> <p class="p_CodeExample"> </p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">MyClass = </span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">class</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">public</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> Value: TStrings;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">end</span><span class="f_CodeExample" style="color: #000000;">;</span></p> <p class="p_CodeExample"> </p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">TForm1 = </span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">class</span><span class="f_CodeExample" style="color: #000000;">(TForm)</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> Button1: TButton;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">procedure</span><span class="f_CodeExample" style="color: #000000;"> Button1Click(Sender: TObject);</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">private</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="font-style: italic; color: #000080;">{ Private declarations }</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">public</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="font-style: italic; color: #000080;">{ Public declarations }</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">procedure</span><span class="f_CodeExample" style="color: #000000;"> MyProc;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">function</span><span class="f_CodeExample" style="color: #000000;"> Chameleon: boolean;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">end</span><span class="f_CodeExample" style="color: #000000;">;</span></p> <p class="p_CodeExample"> </p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">var</span></p> <p class="p_CodeExample"> </p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">Form1: TForm1;</span></p> <p class="p_CodeExample"> </p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">implementation</span></p> <p class="p_CodeExample"> </p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #ff00ff;">{$R *.DFM}</span></p> <p class="p_CodeExample"> </p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">function</span><span class="f_CodeExample" style="color: #000000;"> TForm1.Chameleon: boolean;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">var</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">b: MyBoolean;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">i: MyInteger;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">c: MyClass;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">r: integer;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">begin</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">r := Random(</span><span class="f_CodeExample" style="color: #000080;">3</span><span class="f_CodeExample" style="color: #000000;">);</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">case</span><span class="f_CodeExample" style="color: #000000;"> r </span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">of</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">0</span><span class="f_CodeExample" style="color: #000000;">:</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">begin</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> b := MyBoolean.Create;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">raise</span><span class="f_CodeExample" style="color: #000000;"> b;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">end</span><span class="f_CodeExample" style="color: #000000;">;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">1</span><span class="f_CodeExample" style="color: #000000;">:</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">begin</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> i := MyInteger.Create;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">raise</span><span class="f_CodeExample" style="color: #000000;"> i;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">end</span><span class="f_CodeExample" style="color: #000000;">;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">2</span><span class="f_CodeExample" style="color: #000000;">:</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">begin</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> c := MyClass.Create;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">raise</span><span class="f_CodeExample" style="color: #000000;"> c;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">end</span><span class="f_CodeExample" style="color: #000000;">;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">end</span><span class="f_CodeExample" style="color: #000000;">;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">end</span><span class="f_CodeExample" style="color: #000000;">;</span></p> <p class="p_CodeExample"> </p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">procedure</span><span class="f_CodeExample" style="color: #000000;"> TForm1.MyProc;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">begin</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">try</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> Chameleon;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">except</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> on MyBoolean </span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">do</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> ShowMessage(</span><span class="f_CodeExample" style="color: #ff0000;">'Функция возвратила класс MyBoolean'</span><span class="f_CodeExample" style="color: #000000;">);</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> on MyInteger </span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">do</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> ShowMessage(</span><span class="f_CodeExample" style="color: #ff0000;">'Функция возвратила класс MyInteger'</span><span class="f_CodeExample" style="color: #000000;">);</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> on MyClass </span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">do</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> ShowMessage(</span><span class="f_CodeExample" style="color: #ff0000;">'Функция возвратила класс MyClass'</span><span class="f_CodeExample" style="color: #000000;">);</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">end</span><span class="f_CodeExample" style="color: #000000;">;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">end</span><span class="f_CodeExample" style="color: #000000;">;</span></p> <p class="p_CodeExample"> </p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">procedure</span><span class="f_CodeExample" style="color: #000000;"> TForm1.Button1Click(Sender: TObject);</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">begin</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">Chameleon;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">end</span><span class="f_CodeExample" style="color: #000000;">;</span></p> <p class="p_CodeExample"> </p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">end</span><span class="f_CodeExample" style="color: #000000;">.</span></p> </td> </tr> </tbody> </table> </div> <p> </p> <p><span style="color: #000000;">Взгляните на тип данных Variant в D2: следующий код</span></p> <p> </p> <div style="text-align: left; text-indent: 0px; margin: 0px; padding: 0px;"> <table style="border-bottom: #c0c0c0 1px solid; border-left: #000000 1px solid; background-color: #ffffc4; border-spacing: 0px; border-top: #000000 1px solid; border-right: #c0c0c0 1px solid;" border="1" cellspacing="0" cellpadding="5" bgcolor="#ffffc4"> <tbody> <tr align="left" valign="top"> <td style="border-bottom: #000000 1px solid; border-left: #c0c0c0 1px solid; border-top: #c0c0c0 1px solid; border-right: #000000 1px solid;"> <p style="text-align: justify;"><span style="font-family: 'Times New Roman'; color: #000000; font-weight: bold;">Code:</span></p> </td> </tr> <tr align="left"> <td style="border-bottom: #000000 1px solid; border-left: #c0c0c0 1px solid; border-top: #c0c0c0 1px solid; border-right: #000000 1px solid;"> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">function</span><span class="f_CodeExample" style="color: #000000;"> AnyType(</span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">const</span><span class="f_CodeExample" style="color: #000000;"> TypeParm: integer): Variant;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">begin</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">case</span><span class="f_CodeExample" style="color: #000000;"> TypeParm </span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">of</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">1</span><span class="f_CodeExample" style="color: #000000;">: Result := </span><span class="f_CodeExample" style="color: #000080;">1</span><span class="f_CodeExample" style="color: #000000;">;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">2</span><span class="f_CodeExample" style="color: #000000;">: Result := </span><span class="f_CodeExample" style="color: #000080;">2</span><span class="f_CodeExample" style="color: #000000;">.</span><span class="f_CodeExample" style="color: #000080;">0</span><span class="f_CodeExample" style="color: #000000;">;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">3</span><span class="f_CodeExample" style="color: #000000;">: Result := </span><span class="f_CodeExample" style="color: #ff0000;">'Три'</span><span class="f_CodeExample" style="color: #000000;">;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">4</span><span class="f_CodeExample" style="color: #000000;">: Result := StrToDate(</span><span class="f_CodeExample" style="color: #ff0000;">'4/4/1944'</span><span class="f_CodeExample" style="color: #000000;">);</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">end</span><span class="f_CodeExample" style="color: #000000;">;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">end</span><span class="f_CodeExample" style="color: #000000;">;</span></p> </td> </tr> </tbody> </table> </div> <p> </p> <p> </p> <p> </p> <p><span style="color: #000000;">абсолютно бестолковый, но полностью корректный! </span></p> <p> </p> <p><span style="color: #000000;">Следующий код содержит объявление трех функций, принимающих на входе один и тот же параметр, но выдающих результаты различных типов (результат физичиски один и тот же, и занимает он 4 байта). Я не думаю, что можно одурачить delphi, чтобы с помощью этого метода возвратить строку. Это может привести к разрушению менеджера кучи. Вместо этого вызывайте необходимую вам функцию. Каждый вызов передается MyFuncRetAnything, а P1 определяет возвращаемый тип. Если хотите, можете написать другую обертку, делающую для вас еще и приведение типов. </span></p> <p> </p> <p><span style="color: #000000;">3 вызова, 1 код. </span></p> <p> </p> <p><span style="color: #000000;">Я понимаю, что это в действительности не то, что нужно, по я просто хотел продемонстрировать другой способ. (вы можете возвращать строки как тип PChar, который также занимает 4 байта). Вы должны использовать некоторую память, распределяемую вызовом процедуры (может быть передавать результаты как P2?).</span></p> <p> </p> <div style="text-align: justify; text-indent: 0px; margin: 7px 0px; padding: 0px;"> <table style="border-bottom: #c0c0c0 1px solid; border-left: #000000 1px solid; background-color: #ffffc4; border-spacing: 0px; border-top: #000000 1px solid; border-right: #c0c0c0 1px solid;" border="1" cellspacing="0" cellpadding="5" bgcolor="#ffffc4"> <tbody> <tr align="left" valign="top"> <td style="border-bottom: #000000 1px solid; border-left: #c0c0c0 1px solid; border-top: #c0c0c0 1px solid; border-right: #000000 1px solid;"> <p style="text-align: justify;"><span style="font-family: 'Times New Roman'; color: #000000; font-weight: bold;">Code:</span></p> </td> </tr> <tr align="left"> <td style="border-bottom: #000000 1px solid; border-left: #c0c0c0 1px solid; border-top: #c0c0c0 1px solid; border-right: #000000 1px solid;"> <p class="p_CodeExample"><span class="f_CodeExample" style="font-style: italic; color: #000080;">{моя форма имеет 3 метки, одну кнопку и этот код}</span></p> <p class="p_CodeExample"> </p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">var</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">MyFuncRetInt: </span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">function</span><span class="f_CodeExample" style="color: #000000;">(P1, P2: Integer): Integer;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">MyFuncRetBool: </span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">function</span><span class="f_CodeExample" style="color: #000000;">(P1, P2: Integer): LongBool;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">MyFuncRetPointer: </span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">function</span><span class="f_CodeExample" style="color: #000000;">(P1, P2: Integer): Pointer;</span></p> <p class="p_CodeExample"> </p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">function</span><span class="f_CodeExample" style="color: #000000;"> MyFuncRetAnything(P1, P2: Integer): Integer;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">var</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">RetPointer: Pointer;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">RetBool: LongBool;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">RetInteger: Integer;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">begin</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">RetPointer := </span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">nil</span><span class="f_CodeExample" style="color: #000000;">;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">RetBool := False;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">RetInteger := </span><span class="f_CodeExample" style="color: #000080;">4711</span><span class="f_CodeExample" style="color: #000000;">;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">case</span><span class="f_CodeExample" style="color: #000000;"> P1 </span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">of</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">1</span><span class="f_CodeExample" style="color: #000000;">: Result := Integer(RetPointer);</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">2</span><span class="f_CodeExample" style="color: #000000;">: Result := Integer(RetBool);</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">3</span><span class="f_CodeExample" style="color: #000000;">: Result := RetInteger;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">end</span><span class="f_CodeExample" style="color: #000000;">;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">end</span><span class="f_CodeExample" style="color: #000000;">;</span></p> <p class="p_CodeExample"> </p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">procedure</span><span class="f_CodeExample" style="color: #000000;"> TForm1.Button1Click(Sender: TObject);</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">begin</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">if</span><span class="f_CodeExample" style="color: #000000;"> MyFuncRetBool(</span><span class="f_CodeExample" style="color: #000080;">2</span><span class="f_CodeExample" style="color: #000000;">, </span><span class="f_CodeExample" style="color: #000080;">1900</span><span class="f_CodeExample" style="color: #000000;">) </span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">then</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> Label1.Caption := </span><span class="f_CodeExample" style="color: #ff0000;">'True'</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">else</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> Label1.Caption := </span><span class="f_CodeExample" style="color: #ff0000;">'False'</span><span class="f_CodeExample" style="color: #000000;">;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">Label2.Caption := IntToStr(MyFuncRetInt(</span><span class="f_CodeExample" style="color: #000080;">3</span><span class="f_CodeExample" style="color: #000000;">, </span><span class="f_CodeExample" style="color: #000080;">1900</span><span class="f_CodeExample" style="color: #000000;">));</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">Label3.Caption := IntToHex(Integer(MyFuncRetPointer(</span><span class="f_CodeExample" style="color: #000080;">1</span><span class="f_CodeExample" style="color: #000000;">, </span><span class="f_CodeExample" style="color: #000080;">1900</span><span class="f_CodeExample" style="color: #000000;">)), </span><span class="f_CodeExample" style="color: #000080;">16</span><span class="f_CodeExample" style="color: #000000;">);</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">end</span><span class="f_CodeExample" style="color: #000000;">;</span></p> <p class="p_CodeExample"> </p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">initialization</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">MyFuncRetInt := @MyFuncRetAnything;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">MyFuncRetBool := @MyFuncRetAnything;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">MyFuncRetPointer := @MyFuncRetAnything;</span></p> <p class="p_CodeExample"> </p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">end</span><span class="f_CodeExample" style="color: #000000;">.</span></p> </td> </tr> </tbody> </table> </div> <p> </p> <p> </p> <p> </p> <p style="text-align: right;"><span style="font-family: 'Arial Unicode MS', 'Lucida Sans Unicode', 'Arial'; color: #ff6600; font-size: 8pt; font-weight: bold;"> </span></p> <p> </p> <p><span style="font-family: 'Times New Roman'; color: #000000; font-weight: bold;">Взято с</span>https://delphiworld.narod</p> <p> </p> <table width="100%" border="0" cellspacing="0" cellpadding="0"> <tbody> <tr> <td> </td> </tr> </tbody> </table> <p> </p> <p> </p> <div style="text-align: justify; text-indent: 0px; margin: 7px 0px; padding: 0px;"> <table style="border-bottom: #c0c0c0 1px solid; border-left: #000000 1px solid; background-color: #ffffc4; border-spacing: 0px; border-top: #000000 1px solid; border-right: #c0c0c0 1px solid;" border="1" cellspacing="0" cellpadding="5" bgcolor="#ffffc4"> <tbody> <tr align="left" valign="top"> <td style="border-bottom: #000000 1px solid; border-left: #c0c0c0 1px solid; border-top: #c0c0c0 1px solid; border-right: #000000 1px solid;"> <p style="text-align: justify;"><span style="font-family: 'Times New Roman'; color: #000000; font-weight: bold;">Code:</span></p> </td> </tr> <tr align="left"> <td style="border-bottom: #000000 1px solid; border-left: #c0c0c0 1px solid; border-top: #c0c0c0 1px solid; border-right: #000000 1px solid;"> <p class="p_CodeExample"><span class="f_CodeExample" style="font-style: italic; color: #000080;">// функция Chameleon, возвращающая тип сгенерированного исключения</span></p> <p class="p_CodeExample"> </p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">unit</span><span class="f_CodeExample" style="color: #000000;"> Unit1;</span></p> <p class="p_CodeExample"> </p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">interface</span></p> <p class="p_CodeExample"> </p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">uses</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">Windows, Messages, SysUtils, Classes, Graphics, Controls,</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">Forms, Dialogs, StdCtrls;</span></p> <p class="p_CodeExample"> </p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">type</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">MyBoolean = </span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">class</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">public</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> Value: boolean;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">end</span><span class="f_CodeExample" style="color: #000000;">;</span></p> <p class="p_CodeExample"> </p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">MyInteger = </span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">class</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">public</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> Value: integer;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">end</span><span class="f_CodeExample" style="color: #000000;">;</span></p> <p class="p_CodeExample"> </p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">MyClass = </span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">class</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">public</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> Value: TStrings;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">end</span><span class="f_CodeExample" style="color: #000000;">;</span></p> <p class="p_CodeExample"> </p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">TForm1 = </span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">class</span><span class="f_CodeExample" style="color: #000000;">(TForm)</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> Button1: TButton;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">procedure</span><span class="f_CodeExample" style="color: #000000;"> Button1Click(Sender: TObject);</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">private</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="font-style: italic; color: #000080;">{ Private declarations }</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">public</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="font-style: italic; color: #000080;">{ Public declarations }</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">procedure</span><span class="f_CodeExample" style="color: #000000;"> MyProc;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">function</span><span class="f_CodeExample" style="color: #000000;"> Chameleon: boolean;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">end</span><span class="f_CodeExample" style="color: #000000;">;</span></p> <p class="p_CodeExample"> </p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">var</span></p> <p class="p_CodeExample"> </p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">Form1: TForm1;</span></p> <p class="p_CodeExample"> </p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">implementation</span></p> <p class="p_CodeExample"> </p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #ff00ff;">{$R *.DFM}</span></p> <p class="p_CodeExample"> </p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">function</span><span class="f_CodeExample" style="color: #000000;"> TForm1.Chameleon: boolean;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">var</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">b: MyBoolean;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">i: MyInteger;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">c: MyClass;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">r: integer;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">begin</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">r := Random(</span><span class="f_CodeExample" style="color: #000080;">3</span><span class="f_CodeExample" style="color: #000000;">);</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">case</span><span class="f_CodeExample" style="color: #000000;"> r </span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">of</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">0</span><span class="f_CodeExample" style="color: #000000;">:</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">begin</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> b := MyBoolean.Create;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">raise</span><span class="f_CodeExample" style="color: #000000;"> b;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">end</span><span class="f_CodeExample" style="color: #000000;">;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">1</span><span class="f_CodeExample" style="color: #000000;">:</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">begin</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> i := MyInteger.Create;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">raise</span><span class="f_CodeExample" style="color: #000000;"> i;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">end</span><span class="f_CodeExample" style="color: #000000;">;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">2</span><span class="f_CodeExample" style="color: #000000;">:</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">begin</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> c := MyClass.Create;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">raise</span><span class="f_CodeExample" style="color: #000000;"> c;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">end</span><span class="f_CodeExample" style="color: #000000;">;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">end</span><span class="f_CodeExample" style="color: #000000;">;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">end</span><span class="f_CodeExample" style="color: #000000;">;</span></p> <p class="p_CodeExample"> </p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">procedure</span><span class="f_CodeExample" style="color: #000000;"> TForm1.MyProc;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">begin</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">try</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> Chameleon;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">except</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> on MyBoolean </span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">do</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> ShowMessage(</span><span class="f_CodeExample" style="color: #ff0000;">'Функция возвратила класс MyBoolean'</span><span class="f_CodeExample" style="color: #000000;">);</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> on MyInteger </span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">do</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> ShowMessage(</span><span class="f_CodeExample" style="color: #ff0000;">'Функция возвратила класс MyInteger'</span><span class="f_CodeExample" style="color: #000000;">);</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> on MyClass </span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">do</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> ShowMessage(</span><span class="f_CodeExample" style="color: #ff0000;">'Функция возвратила класс MyClass'</span><span class="f_CodeExample" style="color: #000000;">);</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">end</span><span class="f_CodeExample" style="color: #000000;">;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">end</span><span class="f_CodeExample" style="color: #000000;">;</span></p> <p class="p_CodeExample"> </p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">procedure</span><span class="f_CodeExample" style="color: #000000;"> TForm1.Button1Click(Sender: TObject);</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">begin</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">Chameleon;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">end</span><span class="f_CodeExample" style="color: #000000;">;</span></p> <p class="p_CodeExample"> </p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">end</span><span class="f_CodeExample" style="color: #000000;">.</span></p> </td> </tr> </tbody> </table> </div> <p> </p> <p><span style="color: #000000;">Взгляните на тип данных Variant в D2: следующий код</span></p> <p> </p> <div style="text-align: left; text-indent: 0px; margin: 0px; padding: 0px;"> <table style="border-bottom: #c0c0c0 1px solid; border-left: #000000 1px solid; background-color: #ffffc4; border-spacing: 0px; border-top: #000000 1px solid; border-right: #c0c0c0 1px solid;" border="1" cellspacing="0" cellpadding="5" bgcolor="#ffffc4"> <tbody> <tr align="left" valign="top"> <td style="border-bottom: #000000 1px solid; border-left: #c0c0c0 1px solid; border-top: #c0c0c0 1px solid; border-right: #000000 1px solid;"> <p style="text-align: justify;"><span style="font-family: 'Times New Roman'; color: #000000; font-weight: bold;">Code:</span></p> </td> </tr> <tr align="left"> <td style="border-bottom: #000000 1px solid; border-left: #c0c0c0 1px solid; border-top: #c0c0c0 1px solid; border-right: #000000 1px solid;"> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">function</span><span class="f_CodeExample" style="color: #000000;"> AnyType(</span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">const</span><span class="f_CodeExample" style="color: #000000;"> TypeParm: integer): Variant;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">begin</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">case</span><span class="f_CodeExample" style="color: #000000;"> TypeParm </span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">of</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">1</span><span class="f_CodeExample" style="color: #000000;">: Result := </span><span class="f_CodeExample" style="color: #000080;">1</span><span class="f_CodeExample" style="color: #000000;">;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">2</span><span class="f_CodeExample" style="color: #000000;">: Result := </span><span class="f_CodeExample" style="color: #000080;">2</span><span class="f_CodeExample" style="color: #000000;">.</span><span class="f_CodeExample" style="color: #000080;">0</span><span class="f_CodeExample" style="color: #000000;">;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">3</span><span class="f_CodeExample" style="color: #000000;">: Result := </span><span class="f_CodeExample" style="color: #ff0000;">'Три'</span><span class="f_CodeExample" style="color: #000000;">;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">4</span><span class="f_CodeExample" style="color: #000000;">: Result := StrToDate(</span><span class="f_CodeExample" style="color: #ff0000;">'4/4/1944'</span><span class="f_CodeExample" style="color: #000000;">);</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">end</span><span class="f_CodeExample" style="color: #000000;">;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">end</span><span class="f_CodeExample" style="color: #000000;">;</span></p> </td> </tr> </tbody> </table> </div> <p> </p> <p> </p> <p> </p> <p><span style="color: #000000;">абсолютно бестолковый, но полностью корректный! </span></p> <p> </p> <p><span style="color: #000000;">Следующий код содержит объявление трех функций, принимающих на входе один и тот же параметр, но выдающих результаты различных типов (результат физичиски один и тот же, и занимает он 4 байта). Я не думаю, что можно одурачить delphi, чтобы с помощью этого метода возвратить строку. Это может привести к разрушению менеджера кучи. Вместо этого вызывайте необходимую вам функцию. Каждый вызов передается MyFuncRetAnything, а P1 определяет возвращаемый тип. Если хотите, можете написать другую обертку, делающую для вас еще и приведение типов. </span></p> <p> </p> <p><span style="color: #000000;">3 вызова, 1 код. </span></p> <p> </p> <p><span style="color: #000000;">Я понимаю, что это в действительности не то, что нужно, по я просто хотел продемонстрировать другой способ. (вы можете возвращать строки как тип PChar, который также занимает 4 байта). Вы должны использовать некоторую память, распределяемую вызовом процедуры (может быть передавать результаты как P2?).</span></p> <p> </p> <div style="text-align: justify; text-indent: 0px; margin: 7px 0px; padding: 0px;"> <table style="border-bottom: #c0c0c0 1px solid; border-left: #000000 1px solid; background-color: #ffffc4; border-spacing: 0px; border-top: #000000 1px solid; border-right: #c0c0c0 1px solid;" border="1" cellspacing="0" cellpadding="5" bgcolor="#ffffc4"> <tbody> <tr align="left" valign="top"> <td style="border-bottom: #000000 1px solid; border-left: #c0c0c0 1px solid; border-top: #c0c0c0 1px solid; border-right: #000000 1px solid;"> <p style="text-align: justify;"><span style="font-family: 'Times New Roman'; color: #000000; font-weight: bold;">Code:</span></p> </td> </tr> <tr align="left"> <td style="border-bottom: #000000 1px solid; border-left: #c0c0c0 1px solid; border-top: #c0c0c0 1px solid; border-right: #000000 1px solid;"> <p class="p_CodeExample"><span class="f_CodeExample" style="font-style: italic; color: #000080;">{моя форма имеет 3 метки, одну кнопку и этот код}</span></p> <p class="p_CodeExample"> </p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">var</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">MyFuncRetInt: </span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">function</span><span class="f_CodeExample" style="color: #000000;">(P1, P2: Integer): Integer;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">MyFuncRetBool: </span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">function</span><span class="f_CodeExample" style="color: #000000;">(P1, P2: Integer): LongBool;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">MyFuncRetPointer: </span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">function</span><span class="f_CodeExample" style="color: #000000;">(P1, P2: Integer): Pointer;</span></p> <p class="p_CodeExample"> </p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">function</span><span class="f_CodeExample" style="color: #000000;"> MyFuncRetAnything(P1, P2: Integer): Integer;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">var</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">RetPointer: Pointer;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">RetBool: LongBool;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">RetInteger: Integer;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">begin</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">RetPointer := </span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">nil</span><span class="f_CodeExample" style="color: #000000;">;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">RetBool := False;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">RetInteger := </span><span class="f_CodeExample" style="color: #000080;">4711</span><span class="f_CodeExample" style="color: #000000;">;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">case</span><span class="f_CodeExample" style="color: #000000;"> P1 </span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">of</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">1</span><span class="f_CodeExample" style="color: #000000;">: Result := Integer(RetPointer);</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">2</span><span class="f_CodeExample" style="color: #000000;">: Result := Integer(RetBool);</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">3</span><span class="f_CodeExample" style="color: #000000;">: Result := RetInteger;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">end</span><span class="f_CodeExample" style="color: #000000;">;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">end</span><span class="f_CodeExample" style="color: #000000;">;</span></p> <p class="p_CodeExample"> </p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">procedure</span><span class="f_CodeExample" style="color: #000000;"> TForm1.Button1Click(Sender: TObject);</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">begin</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">if</span><span class="f_CodeExample" style="color: #000000;"> MyFuncRetBool(</span><span class="f_CodeExample" style="color: #000080;">2</span><span class="f_CodeExample" style="color: #000000;">, </span><span class="f_CodeExample" style="color: #000080;">1900</span><span class="f_CodeExample" style="color: #000000;">) </span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">then</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> Label1.Caption := </span><span class="f_CodeExample" style="color: #ff0000;">'True'</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">else</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> Label1.Caption := </span><span class="f_CodeExample" style="color: #ff0000;">'False'</span><span class="f_CodeExample" style="color: #000000;">;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">Label2.Caption := IntToStr(MyFuncRetInt(</span><span class="f_CodeExample" style="color: #000080;">3</span><span class="f_CodeExample" style="color: #000000;">, </span><span class="f_CodeExample" style="color: #000080;">1900</span><span class="f_CodeExample" style="color: #000000;">));</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">Label3.Caption := IntToHex(Integer(MyFuncRetPointer(</span><span class="f_CodeExample" style="color: #000080;">1</span><span class="f_CodeExample" style="color: #000000;">, </span><span class="f_CodeExample" style="color: #000080;">1900</span><span class="f_CodeExample" style="color: #000000;">)), </span><span class="f_CodeExample" style="color: #000080;">16</span><span class="f_CodeExample" style="color: #000000;">);</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">end</span><span class="f_CodeExample" style="color: #000000;">;</span></p> <p class="p_CodeExample"> </p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">initialization</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">MyFuncRetInt := @MyFuncRetAnything;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">MyFuncRetBool := @MyFuncRetAnything;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">MyFuncRetPointer := @MyFuncRetAnything;</span></p> <p class="p_CodeExample"> </p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">end</span><span class="f_CodeExample" style="color: #000000;">.</span></p> </td> </tr> </tbody> </table> </div> <p> </p> <p> </p> <p> </p> <p style="text-align: right;"><span style="font-family: 'Arial Unicode MS', 'Lucida Sans Unicode', 'Arial'; color: #ff6600; font-size: 8pt; font-weight: bold;"> </span></p> <p> </p> <p><span style="font-family: 'Times New Roman'; color: #000000; font-weight: bold;">Взято с</span>https://delphiworld.narod</p>