"Советы по Delphi. Версия 1.4.3 от 1.1.2001" - читать интересную книгу автора (Озеров Валентин)
Что такое "Советы по Delphi"? Алгоритмы Преобразования Преобразование дробной и целой части REAL-числа в два целых Есть ли функция, выполняющая пpеобpазование пеpеменной real в integer? Почему непpавильно pаботает функция StrToFloat? Число строкой X Даты Добавление даты и времени в компонент Memo Вычисление даты Пасхи II Преобразование даты в количество секунд Преобразование даты в неделю Преобразование даты Преобразование даты — добавление столетия Приведение даты Даты и недели Количество дней между двумя датами I Количество дней между двумя датами II Конвертирование даты Число текущей недели Разница во времени Проблема со временем Переменная времени Математика Как научить Delphi делать правильное округление дробных чисел? Разное Генерация еженедельных списков задач Генерация случайного пароля Проверка ISBN API Переменные среды Как раскрыть строки с подстановками вида '%SystemRoot%\IOSUBSYS\'? Изменение системного времени из Delphi II Завершение работы Windows Определение завершения работы Windows Как консольное приложение может узнать, что Винды завершаются? Как корректно перехватить сигнал выгрузки операционной системы, если в моей программе нет окна? Постепенное умирание Разное Как не допустить запуск второй копии программы VIII Как не допустить запуск второй копии программы IX Как не допустить запуск второй копии программы X Как не допустить запуск второй копии программы XI Как не допустить запуск второй копии программы XII Как правильно завершить некое приложение? Как отчитывать промежутки времени с точностью, большей чем 60 мсек? Как сделать чтобы при событиях моя программа отпpавляла кому-либо сообщение на мой компьютеp? Что нужно давать WSAAsyncSelect в качестве параметра handle, если тот запускается и используется в dll (init), и никакой формы (у которой можно было бы взять этот handle) в этой dll не создается? Вызов других программ Получение списка запущеных приложений Как мне запустить какую-нибудь программу? А как подождать, пока эта программа не отработает? Как выяснить, работает ли программа или уже завершилась? Как принудительно закрыть выполняющуюся программу? Открытие выбранного файла в работающем приложении Убиваем активное приложение Pascal Объекты Проблема циклических ссылок Создание множества экземпляров Параметры Передача функции как параметра Проблема передачи записи Указатели Указатель на функцию I Указатель на функцию II Использование указателей на целое Память Функция MemAvail для Delphi2? Как работать с блоками памяти размером более 64K? События Назначение обработчика события OnClick пункту меню, созданному во время выполнения программы События для компонентов, созданных во время работы программы I События для компонентов, созданных во время работы программы II Массивы Динамические массивы V Динамические массивы VI Динамические массивы VII Динамические массивы VIII Пример массива констант (Array of Const) III Массив объектов-изображений Массив TPOINT Создание больших массивов Свойства Редактор свойств для точки Хитрость вызова редактора свойств Как убрать публичное свойство компонента/формы из списка видимых/редактируемых свойств в Инспекторе Обьектов? Свойство FileName в невизуальном компоненте Записи Пример переменной записи Передача массива записей символов в Memo Освобождение записей Строки StrTok для Delphi 2 Как мне перекодировать строки из Win-кодировки в Dos-кодировку и наоборот? Типы У меня константы могут иметь значение, отличное от заданного. Как лечить? Значение вычисляемого поля Paradox вместо 25.55 становится 24.5499999… Классовые/статические/переменные общего доступа Чем отличается тип String в Delphi 2 и выше от аналогичного в Delphi 1? Различия TMEMOFIELD Функция, возвращающая тип Преобразование формата MS BINARY в IEEE Переменные Статические переменные Разное Переключение ключей компилятора Получение ссылки на класс из объекта I Получение ссылки на класс из объекта II Работа с комментариями в большом куске кода Базы данных Калькуляция Код определения возраста Как пересчитать все вычисляемые поля (Calculated fields) без переоткрытия TDataSet? Как создать вычисляемые поля во время исполнения программы (Calculated fields at RunTime)? Доступ Хитрости многопользовательского доступа к БД Выполнение запросов к базе данных в фоне Получение физического пути к таблице Cancel в связанных таблицах Отображение формы ввода в БД CUSTOMER из рабочей формы ORDER Отображение определенных полей БД Из базы данных в переменные Получение информации о таблице Обмен данными между TMemoField и TMemo Если в транзакции изменена какая-то таблица, то для другого пользователя блокируется вся таблица, до окончания транзакции. Как лечить? Форма Мастер-Деталь Подскажите как правильно показать на экpане и сохранить в базе картинку формата JPEG? Как исключить показ поля P_RECNO? Информация из одной таблицы и набора данных на двух формах Как при вводе информации в БД автоматически вставлять SEQUENCE? Помещение переменной в Memo-поле Индикатор прогресса выполнения запроса Обновление данных БД из модальной формы Как записать в BLOB-поле большой текст (gt;255 байт) из Delphi? Блокировка таблицы Каким драйвером пользуется TDATABASE? Как создать новый запрос и скопировать туда точно такие же описания полей? Запись потока в BLOB-поле Как я могу выбрать на клиента только часть данных с определенной позиции из набора данных на сервере? Отследить изменение данных? Как достучаться до методов сервера приложений из TClientDataSet? Я включил dbclient.dll в секцию `additional files` опций распространения по web, но этот файл никогда не загружается на клиента. Как это исправить? Как можно использовать TClientDataSet в локальном приложении с таблицами Paradox, без использования компонент TProvider и TRemoteServer? Hе получается открыть таблицу, созданную в InterBase с DEFAULT CHARACTER SET WIN1251. Оно говорит, что `WIN1251 undefined` Создание Функции редактора полей во время выполнения программы Производная TIntegerField Создание новой таблицы на основе структуры другой таблицы Создание уникального ID для новой записи Динамическое создание таблицы и полей во время выполнения программы Проблема с AddIndex Как создать БД в кодировке CP1251? Таблицы в памяти Поиск FindKey для нескольких полей Поиск существующей записи перед тем, как она будет вставлена Поиск фраз и записей переменной длины dBase Текущий номер записи набора данных Как открыть индексированную таблицу dBase, если отсутствует файл индекса? Определение удаления записей в .DBF Определение номера записи в таблице dBASE Пакование таблиц dBASE II Пакование таблиц dBASE III Пакование таблиц dBASE IV Показ удаленных записей в таблице dBASE Пароль на dBASE-файлы Показ меток 'удаленных' записей в dBASE-файлах DB2 Как заставить работать DB2 через протокол IPX? Почему DB2 ругается на Create Trigger? Модули данных Модуль данных для каждого MDIChild Как передать UserName и Password в удаленный модуль данных (remote datamodule)? Paradox Byte-поля Paradox Доступ к таблицам Paradox на CD или c флагом только для чтения Нечувствительный к регистру поиск в первичном индексе Paradox Создание таблицы Paradox DBEdit и реальные значения Почему при создании таблицы Paradox с первичным нечувствительным к регистру индексом вываливается ошибка? Как сменить пароль (master password) для таблицы Paradox? Что нужно сделать для нормальной работы в одноранговой сети с базами Paradox? Переиндексирование файлов Paradox в пределах моей программы Разное Помещение Memo-файла с ASCII-разделителем в Memo-поле таблицы Почему не всегда верно обновляются IndexDefs по Update? БД-дерево взаимоотношений DBGrid и Memo-поля Убывающий индекс Как работать из Delphi напрямую с MS ADO (Microsoft Active Data Objects)? Как засунуть в качестве паpаметpа хpанимой пpоцедуpы стpоку длиной более 255 символов? И вообще, как использовать паpаметpы SP, если они BLOB? Дублирование набора записей Как программно изменить LangDriver для таблиц dBase и Paradox? Существует ли средство для вывода определения структуры таблицы? У меня есть текстовые файлы, которые я хочу использовать в запросах к DB2, но не хочу создавать из них постоянные таблицы в базе. Что делать? Список структуры полей таблицы Создание индексного файла из Delphi Контекстное меню на основе базы данных Корректное закрытие базы данных приложением Delphi Изменение свойств базы данных во время выполнения приложения Как мне задать выражение по умолчанию для объекта TField? После того, как я использовал правый щелчок мыши для создания функции-провайдера, как мне снова выполнить команду контекстного меню `Export from Table`? Как работать с новыми, своими интерфейсами в RemoteDataModule? Database Desktop показывает содержимое таблиц шрифтом без русских букв BDE InterBase FAQ по InterBase Как гарантированно сделать backup/restore БД InterBase с опцией 'Replace existing database' и записями протоколов в файлы с гарантированным отстрелом пользователей? Как скомпилиpовать UDF для Interbase под Linux RH 4.0? Как узнать текущие дату и время в Interbase? После снесения через родной uninstall Interbase Server 5.0 для Windows и желания поставить 5.1.1 вылетает ошибка: IBCheck. Что делать? При попытке регистрации UDF возникает ошибка (udf not defined). Что не так? Как заставить Interbase принять COLLATE PXW_CYRL по умолчанию? ODBC Добавление ODBC-драйверов в Delphi 3 Oracle Связь Oracle с Win95 Возникла необходимость в обработке исключительных ситуаций в PL/SQL процедуре (Oracle7 WG Server Release 7.3.2.2.0). Почему у меня не получается? Поясните, чем в Oracle являются понятия Instance, Database etc.? Как заставить Oracle анализировать все таблицы базы данных? В режиме отладки приложения не разрешается доступ (открытие) базы данных. Как лечить? Подскажите, как на Oracle 7.3.2.3 (Solaris x86) поменять compatible на 7.3.2.3 (c 7.1.0.0)? Как настроить Personal Oracle с русским языком на корректную работу с числами и BDE? Как в Oracle создать sequence с некоторого номера? Как решать некоторые вопросы при подключении к Oracle? WindowsNT 4.0 + Delphi 2.01 C/S + Oracle Client 7.3 + Oracle Server 7.3. После логина в базу данных возникает `EExternalError 0xC0000008`. Что делать? Псевдонимы Получение пути псевдонима и таблицы I Получение пути псевдонима и таблицы II Получение пути псевдонима и таблицы III Получение пути псевдонима и таблицы IV Информация о псевдониме BDE Изменение каталога псевдонима во время выполнения приложения Псевдоним на лету Псевдонимы Ошибки Ошибка BDE32 $2104 Проблема BDE при использовании "неживого" TQuery Ошибка ApplyApdates Ошибка создания дескриптора курсора При разрушении обьектов, порожденных от TDataSet (TTable, TQuery), не отрабатывает событие OnBeforeClose. Что делать? При обращении к memo-полю из BDE возникает ошибка 'Memo too large'. Как лечить? Нарушение уникальности записи При выполнении некоторых живых запросов, возвращающих единственную запись, BDE ругается 'multiple records found, but only one was expected'. Как лечить? Как поймать свой RAISEERROR в Delphi? Как добиться верной работы фильтра на запросах и на неиндексированных таблицах? Как бы мне соорудить в SP исключение, чтобы его увидел Delphi-клиент? Когда я применяю ApplyUpdates на ClientDataSet, на серверной стороне не срабатывает событие OnNewRecord для оригинального набора данных. Как это исправить? SQL Функции дат в SQL Зарезервированные слова Local SQL Сиротские Master-записи Назначение SQL-счетчика переменной Как удобнее работать с динамически формируемыми запросами? Поиск записи в SQL DataSet При попытке выполнения такого оператора SQL – 'DELETE from T39 T39C0 WHERE T39C0.F1LHT35=253291661' SQL-сервер ругается на недопустимый синтаксис. В чем я неправ? Поиск с помощью SQL Как получить результирующим полем разницу между хранимой датой и текущей датой? SQL и поле даты SQL-запросы в Delphi SQL: – сортировка вычисляемого поля SQL: – суммирование вычисляемого поля SQL: – использование функции SUBSTRING Sybase 32-битное соединение с сервером Sybase Разное Решение проблемы BDE ~Index out of Date~ Обратные вызовы BDE32 для получения статуса операций Управление сетевыми каталогами (BDE) Пример DBIDoRestructure Изменение конфигурации IDAPI Default Cursor после завершения выполнения запросов Протокол блокировки BDE Я так и не смог заставить выводить текст с помощью DBMS_OUTPUT.PUT_LINE в режиме отладки После analyze_schema некоторые (приличное количество) из запросов начинают сильно тормозить. Как лечить? Определение установленной BDE Установка BDE Каковы текущие ограничения BDE? В процессе работы программы изменилась структура БД (alter table etc.). Программа продолжала успешно открывать таблицы, но запросы посылались в соответствии со старой схемой данных Как в Delphi сбросить кэш БД на диск? Как настроить MS SQL Server 6.5 на корректную работу с числами и BDE при выполнении UPDATE? Как научить VCL делать Refresh для запросов правильно? Как заставить BDE сохранять в БД поле времени с сотыми долями секунды? Запись буфера BDE на диск Internet Форматы UUE кодирование ISAPI Почему мои ISAPI-ориентированные библиотеки, созданные в Delphi 3, не могут обрабатывать несколько соединений? Соединение Проверка URL Разное Объект DocInput Объект DocOutput Захват текущего URL у MSIE Мультимедиа Звук Заставьте приложение Delphi 2 `петь` Создание нового WAV-файла Как реализовать регулятор громкости? Как использовать в своей программе API DirectSound и DirectSound3D? Аппаратное обеспечение CD-ROM Открытие и закрытие нескольких приводов CD-ROM Клавиатура Переключение клавиатуры Как отловить нажатия клавиш в системе Клавиша с кодом #0 Как из программы переключить раскладку клавиатуры? Модем Как получить список установленных модемов в Win95/98? Порты Асинхронная связь Принтер Печать табуляторов с помощью TextOut Печать через спулер на матричный принтер Лучший способ печати формы Как мне отправить на принтер чистый поток данных? Как правильно печатать любую информацию (растровые и векторные изображения), а также как сделать режим предварительного просмотра? Разное Как в ATX корпусе программно выключить питание под DOS Операционная система Буфер обмена Как удобнее работать с буфером обмена как с последовательностью байт? Шрифты Хранение стилей шрифта Управление настройками шрифта Перетащи и брось (Drag and Drop) Как получить список файлов, которые были перенесены на мою форму, например, из Проводника? Рабочий стол Как програмным путем задавать координаты ярлыкам на рабочем столе? Как я могу использовать анимированный курсор? Как узнать текущее разрешение экрана? Как изменить изображение кнопки `Пуск` Как программно заменить обои на рабочем столе? III Как программно заменить обои на рабочем столе? IV А как поместить свою иконку на taskbar, там где часы и переключатель клавиатуры? Как ограничить перемещение курсора мыши какой-либо областью экрана? Диалоги Использование InputBox и InputQuery Текст на кнопках MessageDlg Изменения в TOpenDialog Как вывести диалог выбора каталога? Сообщения Как послать самостийное сообщение всем главным окнам в Windows? Как избавиться от торможения модальных окон? Моя программа довольно долго делает какую-то полезную работу, типа чтения дерева каталогов или обильных вычислений, и в этот момент почти не работают остальные программы. Как разрешить им это делать? Файловая система Метка диска под Win32 Восстанавление длинных имен файлов по известным коротким Как указать системе на необходимость сбросить буфера *.INI-файла на диск? Копирование файлов III Как получить имя папки pабочего стола (не чеpез registry)? Количество строк в текстовом файле Копирование файлов IV Сеть Как узнать доступные сетевые pесуpсы? Реестр Как из программы выявить версию Windows, на кого зарегистрирована и т.п.? Ярлыки (ShortCuts) Создание ярлыков Разное `Устойчивые` всплывающие подсказки Вызов 16-разрядного кода из 32-разрядного Как проверить, имеем ли мы административные привилегии в системе? Как узнать язык Windows по умолчанию? GetLocalUserList — возвращает список пользователей (Windows NT, Windows 2000) Каков способ обмена информацией между приложениями Win32 – Win16? Остановка и запуск сервисов Прямой вызов метода Hint Как использовать свои курсоры в программе? I Как использовать свои курсоры в программе? II Компоненты BatchMove Пересборка индексов с помощью TBatchMove Есть некоторая таблица и требуется при нажатии на кнопку создавать таблицы такой же структуры. Подскажите, как это удобнее всего сделать? Button Цветная кнопка Обработка щелчка нескольких кнопок, используя их заголовок CheckBox Массив из CheckBox – использование разделяемого обработчика события I Массив из CheckBox – использование разделяемого обработчика события II Идентификация CheckBox'ов BitBtn Кнопка с несколькими строчками текста III ComboBox Хочу реализовать правильный выпадающий контрол (combo). Как это сделать? Программное открытие ComboBox II Проблемы с ComboBox DBEdit Исправление DBEdit MaxLength Поиск и управление TEdit/TField Insert/Override с помощью DBEdit Как очистить DBEdit DBGrid Dbgrid и множественный выбор Вертикальная полоса прокрутки Dbgrid TDBGrid Lookup-поле в D2 Как зафиксировать один или несколько столбцов в TDBGrid с возможностью навигации по этим столбцам? Dbgrid с цветными ячейками IV Dbgrid с цветными ячейками V Что я получаю от наличия ConstraintBroker (брокера ограничений)? Улучшенный Dbgrid Пример Drag and Drop между двумя Dbgrid Как заставить DBGrid сортировать данные по щелчку на заголовке столбца? DBGrid и TQuery DBGrid как навигатор Позиция DBGrid DBGrid – переход к следующей записи onClick и DBGrid Числа с плавающей точкой в DBGrid Получение данных DBGrid прежде, чем они будут отправлены: как мне узнать, что пользователь вводит в DBGrid? Хочу шапку в TDBGrid. Как сделать? Несколько таблиц в одном TDBGrid Как сделать так, чтобы в DBGrid напротив некоторых строк можно было бы галочку поставить? Как в TDBGrid разрешить только операции UPDATE записей и запретить INSERT/DELETE? Обновление TDBGrid после редактирования отдельной записи на отдельной форме Пересортица в коде полей TDBGrid во время вополнения программы В Delphi 3 и выше ползунок TDBGrid иногда может находится не только в трех фиксированных позициях. Что для этого нужно? Изменение месторасположение колонок в TDBGrid Решение проблемы передачи фокуса TDBGrid Как отучить TDBGrid от автодобавления новой записи? Две таблицы в одном TDBGrid Добавление к TDBGrid события OnClick Позиция ячейки в TDBGrid Dbgrid с цветными ячейками VI Показ Memo-поля в Dbgrid Как определить изменение фокуса строки в TDBGrid? Включение ComboBox в TDBGrid DBLookupComboBox Предустановка DBLookupComboBox Сортировка DBLookupComboBox по вторичному индексу Значение DBLookupComboBox DBMemo Копирование содержимого DBMemo в DBMemo другого поля Поиск текста в DBMemo DBNavigator Настройки всплывающих подсказок в DBNavigator во время выполнения приложения Выключение кнопок в DBNavigator Работа в коде с кнопками DBNavigator Edit Денежное поле редактирования Отслеживаем позицию курсора в EditBox GroupBox Рисование на GroupBox Доступ к компонентам GroupBox Label Как сделать бегущую строку? ListBox Навигация в ListBox при множественном выборе Внешние данные и ListBox Инкрементальный поиск в ListBox II Табуляция в графическом ListBox'е Выравнивание в ListBox'е Создание ListBox во время выполнения программы Двойной ListBox ListBox — OnChange MainManu Как рисовать картинки в пунктах меню (через OwnerDraw)? Memo Получение данных из компонента Memo Изменение поведения Delete в компоненте Memo Вставка текста в TMemo II NoteBook Включение/Выключение закладки Notebook II OutLine Раскрытие пути к элементу TOutline по его индексу PageControl Динамические PageControl/TabSheet I Динамические PageControl/TabSheet II Клавиши-акселераторы для TPageControl Panel Создание панелей во время работы приложения PopupMenu Вызов контекстного меню в позиции курсора II Иконки в PopupMenu ProgressBar ProgressBar — невидимка Query Можно ли использовать результаты выполнения одного TQuery для другого TQuery? Можно ли вызвать хранимую процедуру через TQuery, если она не возвращает курсора? TQUERY и TDBGRID Две и более команд в свойстве TQUERY.SQL RichEdit Как вставить в нужное место Rich Text в TRichEdit? Как указать максимальный размер текста для TRichEdit? Позиция курсора в TRichEdit RadioGroup Группа радиокнопок и ActiveControl ScrollBar Мерцание ScrollBar SpeedButton Speedbutton и Glyph StringGrid Обновление картинки в ячейке StringGrid Многострочность в заголовках колонок StringGrid StringGrid без выделенной ячейки Один щелчок на StringGrid вместо трех StringGrid как DBGrid `Авторазмер` для StringGrid Выравнивание колонок StringGrid III Выравнивание колонок StringGrid IV Покрашенный StringGrid I Покрашенный StringGrid II Редактирование в StringGrid Tabbednotebook Tabbednotebook и куча ресурсов Доступ к страницам Tabbednotebook TabControl Над какой закладкой курсор? Table Создание таблицы в модуле TabSet Изменение количества закладок в TTabSet во время выполнения программы Timer Остановка таймера на `полпути` TreeView Поточность TreeView Получение доступа к узлам TreeView Хочется выделять некоторые стpочки в TTreeView жирным или бледным. Как? UpdateSQL Что нужно знать о принципе и порядке работы с TUpdateSQL для работы с неживыми запросами? Разное Создание компонентов для работы с базами данных Динамическое создание компонент во время работы приложения Решение для динамически создаваемых компонентов Как правильно создавать органы управления в runtime? Как создать клон (копию, достаточно близкую к оригиналу) произвольного компонента? Как заставить произвольный компонент реагировать на изменения в TDataSource? Доступ к другим компонентам из базового CANVAS.TEXTWIDTH Создание компонента Циклический опрос компонентов Мне надо добавить много строк в TListbox или в TCombobox или в TMemo или в TRichEdit, при этом сам объект постоянно мигает, перерисовываясь. Как избавиться от этого? Как мне создать компонент типа TField? Инкрементация строкового поля Классы TForm fsStayOnTop ~не наверху~ Без иконки в панели задач? Передача переменных форме Освобождение экземпляров формы Условие создания главной формы? Динамическое создание и циклическое связывание форм Как заставить формы минимизироваться на панель задач с анимацией? Перемещение формы не за заголовок III Перемещение формы не за заголовок IV Как работать с формой, куда динамически передаются страницы (PageControl) из форм-хранителей (с использованием наследования)? IMHO файл *.dfm – это компилированный ресурс с определением установок формы. А можно ли как-то увидеть этот ресуpс в исходном виде? Определение перемещения формы Можно ли сделать так – одновременно иметь на экране всегда доступную форму – например, "Навигатор", и, открывая модальные формы, иметь всегда доступ к форме "Навигатор"? Как создать окна непрямоугольной формы и работать с ними? Как запретить кнопку Close [#215;] в заголовке окна? Мерцание формы Минимизация модального окна Прозрачная форма Каким образом можно изменить системное меню формы? Как сделать MDI-приложение, в котором способны сливаться не только меню дочернего и главного окна, но и полосы инструментов? Заполнение изображением MDI-формы IV Предотвращение закрытия формы Немедленный TrayIcon после старта приложения Заполнение формы изображением Создание консольных приложений События приложения Нужны ли мне формы в сервере приложений? Создание формы на основе строки Показ логотипа при запуске приложения III Показ логотипа при запуске приложения IV Как правильно закрыть и удалить форму? Почему моя MDI Child форма при закрывании просто минимизируется? Как установить максимальный и минимальный размер формы TIniFile Проблемы ini-файла Как создать Ini-файл в директории программы? TRegistry Дополненный TRegistry, умеет работать с значениями типа REG_MULTI_SZ (Windows NT, Windows 2000) Как я могу определить доступные сервера приложений на этой машине через Registry? OLE+ ActiveX Ошибка 'EOLESYS..OPERATION UNAVAILABLE' (операция недоступна) при использовании GETACTIVEOLEOBJECT Ошибка 'TACTIVEFORMX DECLARATION MISSING OR INCORRECT' (определение TACTIVEFORMX отсутствует или неправильно) Лицензирование активных форм и ActiveX Добавление IPERSISTPROPERTYBAG к активным элементам управления Использование ChartFX CHARTFX – минимум максимум Пример CHARTFX Управление свойством Font через сервер автоматизации Использование CHARTFX.VBX VBX в приложениях DELPHI: как распространять? Расскажите, как использовать ChartFX? Как осуществить минимальный тест на корректность глобального идентификатора (GUID), и интерфейсов, унаследованных от IDispatch? DCOM В чем разница между сокетами, DCOM и OLE Enterprise при использовании их в качестве транспорта? DDE DDE – передача текста Управление Program Manager в Win95 с помощью DDE GROUPFILE и ADDITEM для групп Как можно работать с DDE под Delphi, используя вызовы API? Как добавить группу в Program Manager? OLE OLE-автоматизация в Delphi 1 OLE сервер Как я могу избавиться от 'зарегистрированного' имени сервера, если я не хочу использовать его далее? Миграция Delphi 2 Совместимость D1/D2 Delphi 3 Куда из Delphi 3 делся модуль для работы с ReportSmith? А мои любимые модули работы с OLE: ole2, oleauto и olectl? Ошибки Delphi 1 Ошибка маски редактирования на быстрых пентиумах PASDBK16.DLL вызывает GPF Ошибка переполнения диска Delphi 2 Ошибка чтения потока Delphi 5 Ошибка в ProgressBar DLL Разное Синхронизация DLL с открытым набором данных Как вызывать функцию 16-битной DLL из 32-битного приложения? Как написать DLL, которую можно было-бы выполнить с помощью RunDll, RunDll32? Продукты третьих фирм Adobe Читаем Adobe Acrobat PDF файлы из нашего приложения Vista Software Apollo Какие есть рекомендации по использованию Apollo SDE? Microsoft Excel Не работает передача данных по OLE в русский Excel Microsoft Word Как отследить открытие и закрытие документов в приложении Microsoft Word? Автоматизация WORD 7 ReportSmith Передача переменных отчета в ReportSmith III SQLAnywhere Как правильно работать с SQLAnywhere через BDE#8594;ODBC#8594;SAW? Разное Ресурсы Пример ресурсной таблицы строк Компиляция ресурсов Ошибка дублирования идентификатора ресурса Сохранение и выдёргивание ресурсов в DLL или EXE IDE Копирование проекта в новый каталог Использование Tools Interface Зависание Delphi 4(5) Ошибка 1157 cmplib32.dll 2% ресурсов, в режиме редактирования Активизация и использование в IDE окна CPU Описание типов файлов для Delphi Определение работы Delphi III Работа с IDE из программы Как исправить проблемы с вызовом помощи при одновременно стоящих Delphi 1 и Delphi 2? Защита Борьба с SoftIce Файлы помощи Не могу открыть файл помощи… Как сделать так, чтобы в приложении вызывался хелп с окошечком для поиска раздела? Как заставить Help-файлы нормально отображать русский текст под Windows 3.x? Графика 256-цветное изображение из res-файла Как записать содержимое окна OpenGL в 'bmp' файл? Как создать disable'ный битмап из обычного (emboss etc)? Компонент для работы с FLIC-анимацией Как сделать, чтобы орган управления, например, сложная линия, хваталась только за некий контур, и пропускала мышь под себя в других местах? Как быстро нарисовать тень в заданном регионе? Как рисовать на органе управления, например, на TPanel? Как мне из Handle битовой картинки, получить адрес битового изображения в памяти? Можно ли запустить OpenGL под Windows'95, и как поставлять его с программой? Как вывести на экран текст с 'красивым' обрезанием по длине (если текст не помещается на экране)? При работе программ на Delphi 1 под Windows 95 в hicolor-режимах на иконках TBitBtn'ов обнаруживаются странные коричневые артефакты. Как от них избавиться? Получение контекста устройства для элемента управления Отладка Hard mode без перерыва II При возникновении ошибки во время отладки программы машина перезагружается. Что делать? Разное Переустановка Delphi 2.0 Как проводить локализацию своих приложений? crtdll.dll в программах на Delphi Как сказать VCL, чтобы клавиши shortcut пунктов главного меню главной формы действовали только в этой форме (но не в модальных окнах, к примеру)? При использовании MS SQL Server 6.5 в NT Performance Monitor исчезли все датчики, кроме SQL xWindows — FAQ Каким именно релизом Delphi вообще стоит пользоваться для каждой конкретной версии?
Преобразование дробной и целой части REAL-числа в два целых Я написал программу, которая делает это. Это DOS-программа. Вы вызываете ее с десятичным числом, передаваемым в качестве параметра. После чего программка выведет 3 колонки, в первой будет находиться исходное число, две остальные будут содержать числитель и знаменатель. Вы можете преобразовать программу в функцию и применять ее в своих приложениях, но, думаю, это несложно, и с этим вы справитесь сами.
Для ее запуска достаточно в подсказке DOS набрать ее имя и число:
CONTFRAC 3.141592654
program contfrac; { непрерывные дроби }
{$N+}
const
order = 20;
var
y, lasterr, error, x: extended;
a: array [0..order] of longint;
i, j, n: integer;
op, p, q: longint;
begin
lasterr := 1e30;
val(paramstr(1), y, n);
if n lt;gt; 0 then halt;
x := y;
a[0] := trunc(x);
writeln;
writeln(a[0]:20, a[0]:14, 1:14);
{ это может вызвать резкую головную боль и галлюцинации }
for i := 1 to order do begin
x := 1.0 / frac(x);
a[i] := trunc(x);
p := 1;
q := a[i];
for j := pred(i) downto 0 do begin
op := p;
p := q;
q := a[j] * q + op;
end;
error := abs(y – int(q) / int(p));
if abs(error) gt;= abs(lasterr) then halt;
writeln(a[i]:20, q:14, p:14, error:10);
if error lt; 1e-18 then halt;
lasterr := error;
end;
end.
Теперь попытаюсь объяснить мой алгоритм (он, по-моему, достаточно быстрый). Вот схема:
Допустим, мы используем число 23.56.
Берем наше натуральное число и производим целочисленное деление на 1.
23.56 div 1 = 23
Теперь вычитаем результат из числа, с которого мы начали.
23.56 – 23 = .56
Для преобразования значения в целое мы просто умножаем его на 100, и, при необходимости, приводим его к целому.
valA := (val div 100);
valB := (valA – val);
or
valB := (valA – val) * 100;
val = 23.56
ValA = 23
ValB = .56 or 56