 |  | |  | | | Все материалы раздела Подводные камни |
Всего в разделе 112 статей
- БИБЛИОТЕКА.VCL.Компонент на фрейме с событиями в элементах коллекции некорректно сохраняется
- Initialization. Вызов функции из неинициализированного модуля
- RTL.TThread.Suspended не всегда адекватно состоянию потока
- СИСТЕМА.TWinControl.Caption.Теряется маленькая русская "я"
- Цикл for.Выполняется итерация для пустого списка
- IDE.Delphi.Отладка.Неправильная нумерация строк
- Неправильное распределение полей в объекте
| [15-10-2008] | 16-05-2009 13:14 (8) Обсуждение материала | | ... Согласно принятым правилам поле рассматриваемого типа должно выравниваться по четным адресам и иметь смещение +60. Тем не менее, оно имеет смещение +59, непосредственно примыкая к предыдущему однобайтовому полю. | | [Инкапсуляция] [Записи (record)] |
- VCL.TInplaceEdit.Ошибка процедуры Hide
- ПРОЕКТИРОВАНИЕ.GUI.Перегрузка контролами
- ПРОГРАММИСТ.Нецелевое использование оператора is
| [19-07-2004] | 24-12-2008 03:09 (7) Обсуждение материала | | Если результат IS можно "угадать" на этапе компиляции - то компилятор так и делает. Никакого вызова IsClass не будет. | |
- КОМПИЛЯТОР.Ошибка генерации кода при большом количестве констант
| [08-07-2002] | 27-11-2008 03:59 (6) Обсуждение материала | | ...Ошибка в том, что константы уже закончились - было подготовлено компилятором и загружено в образ программы только 4346 локальных констант для AnyProc. | | [Процедуры и функции] |
- ПРОГРАММИСТ.Побочные эффекты при вычислении выражений с функциями
| [24-07-2002] | 24-11-2008 02:54 (12) Обсуждение материала | | Компилятор сам выбирает порядок вычисления выражения, в рамках правил данного языка, стремясь построить оптимальный код. Он не может и не должен учитывать зависимость одного слагаемого от другого. | | [Видимость переменных] [Процедуры и функции] |
- БИБЛИОТЕКА.RTL.FileExists.Неверный результат при дате файла меньше 1980 г
- RTL.TStringStream.Неправильная работа метода Seek
| [09-09-2008] | 12-09-2008 12:15 (7) Обсуждение материала | | Метод Seek объекта TStringStream неверно интерпретирует значение параметра Offset при Origin=soFromEnd. | |
- Игнорирование пустого параметра после последнего
| [13-04-2007] | 09-08-2008 03:43 (2) Обсуждение материала | | При вызове функции, процедуры или метода, у которого 1 или более параметров, можно после полного списка параметров указать ещё один, пустой, синтаксически некорректный "параметр". | | [Компилятор, dcu-файлы] |
- Неверное сравнение Wide-строки и символа
| [24-04-2008] | 29-07-2008 09:33 (12) Обсуждение материала | | Можно спорить о том, к какой категории относится этот камень - ПРОГРАММИСТ или КОМПИЛЯТОР. Но компилятор как средство, абстрагирующее программиста от особенностей представления Wide и ANSI символов и строк, должен обекспечивать автоматическую конверсию в подобных случаях. | |
- Интерфейсы.Access Violation в _IntfClear для TComponent
| [13-04-2007] | 15-06-2008 15:08 (50) Обсуждение материала | | Речь идет об использовании интерфейсных ссылок на объекты — потомки TComponent. В отличие от потомков TInterfacedObject, уничтожение которых происходит автоматически по подсчету ссылок, потомки TComponent уничтожаются другими методами. | | [TComponent] [Жизненный цикл] [Интерфейсы] |
- БИБЛИОТЕКА.VCL.Установка TRadioButton.Checked не всегда срабатывает
- БИБЛИОТЕКА.VCL.TFrame.Несколько фреймов одного типа на форме
- Потеря значения GetLastError при работе с threadvar
| [24-04-2008] | 25-04-2008 05:19 (11) Обсуждение материала | | Потеря значения GetLastError при работе с threadvar. Причина: недостаточно документировано поведение программы при работе с threadvar. | |
- БИБЛИОТЕКА.VCL.TTabSheet.Нестандартное поведение свойства Visible
- WIN32.Перетирание имени оконного класса, возвращаемого GetClassInfo
| [19-09-2005] | 02-03-2008 10:02 (4) Обсуждение материала | | Согласно MSDN, поле lpszClassName имеет тип LPCTSTR (PChar), и в него функция GetClassInfo заносит указатель на строку, содержащую имя оконного класса. Но нигде не сказано, в какой области памяти должна располагаться эта строка.
| | [TForm] [Окна, оконные сообщения] |
- КОМПИЛЯТОР.Internal error L470, L681
- КОМПИЛЯТОР.Крах отладчика при передаче параметров
- VCL.TComboBox.AV при выборе пустого элемента списка
- БИБЛИОТЕКА.VCL.TDirectoryOutline.Ошибка в свойстве Directory
- КОМПИЛЯТОР.Не производится финализация интерфейсных ссылок в основном модуле
| [11-03-2003] | 20-11-2006 17:11 (23) Обсуждение материала | | Согласно концепции интерфейсных ссылок, они должны обнуляться при выходе из области видимости. И это правило работает нормально, если такие ссылки объявлены как поля в классах или как переменные в процедурах и модулях.
| | [Интерфейсы COM-объектов] [Классы] [Жизненный цикл] |
- VCL.Ошибка в функции EndOfADay
- VCL.TCustomActionControl.Неправильный шрифт при отрисовке
| [26-12-2005] | 13-08-2006 12:55 (6) Обсуждение материала | | Если положить TActionToolBar в какой-либо контейнер (TPanel, TGroupBox и т.п., когда Parent <> форма), то добавление в программу компонента TXPManifest (или непосредственно ресурса WindowsXP.res) приводит к ошибкам отрисовки TActionToolBar.
| | [Интерфейс. Компоненты и формы] [WinXP] |
- VCL.TADOCommand,TADOQuery,TCustomADODataSet.Утечка памяти
| [11-02-2005] | 26-06-2006 08:10 (3) Обсуждение материала | | Утечка памяти обнаружена в деструкторах TADOCommand, TADOQuery.
Класс TCustomADODataSet использует TADOCommand и, следовательно, тоже имеет проблему.
| |
- VCL.TListView.OnColumnClick.Передается неверный объект TListColumn
| [11-02-2005] | 31-05-2006 01:22 (1) Обсуждение материала | | Изменение порядка колонок пользователем в приводит TListView к нарушению правильности обработки события OnColumnClick.
| |
- VCL.TBitmap.Утечка ресурсов в режиме 256 цветов
| [11-02-2005] | 19-03-2006 14:45 (7) Обсуждение материала | | При создании и разрушении изображений TBitmap в режиме 256 цветов происходит утечка памяти, что наблюдалось в windows 2000 и windows 98. | |
- Искажение имени файла ресурсов в тексте файла *.DPK
- VCL.TRadioButton.Автовыбор при получении фокуса в момент показа формы
- КОМПИЛЯТОР.Неверное вычисление выражения с типами Currency и Variant
- VCL.AV при закрытии формы с перекрытым методом WndProc
- WIN32.Ошибочный результат CompareString приводит к неправильной сортировке
- VCL.TCustomFrame.Не вызывается метод RemoveActionList
| [12-09-2005] | 13-09-2005 10:04 (2) Обсуждение материала | | При создании фрейма с ActionList в методе TCustomFrame.Notification вызывается метод TCustomFrame.AddActionList, добавляющий ActionList в FActionLists родильской формы. Но при уничтожении метод TCustomFrame.Notification не вызывается, и, соответственно, метод TCustomFrame.RemoveActionList тоже не вызывается.
| | [TFrame] [TActionList] [Интерфейс. Компоненты и формы] [Фреймы] |
- IDE.Не трогайте Application.Title в файле проекта
- ПРОГРАММИСТ.TStrings.LoadFromFile.Чтение файла с нулевым символом
- IDE.Delphi.Работа с ресурсами.Неправильная иконка исполняемого файла
| [14-11-2002] | 14-05-2005 14:18 (6) Обсуждение материала | | При добавлении к проекту ресурсного файла, содержащего внутри себя иконки, может появиться неправильная иконка у исполняемого файла программы. | | [Иконки] |
- VCL.TForm.Возможная потеря данных модальной формы в Delphi 2005
| [11-02-2005] | 13-04-2005 06:46 (1) Обсуждение материала | | В Delphi 2005 VCL возможна потеря данных контролов формы при вложенных вызовах модальных форм.
| |
- ПРОГРАММИСТ.Неожиданные эффекты применения функции Trunc
| [12-08-2002] | 16-02-2005 15:03 (8) Обсуждение материала | | Это показательный пример того, как незнание особенностей вещественных чисел в машинном представлении, в связке с неудачным выбором стандартной функции, порождает неожиданный 'крамольный' результат вычисления. | | [Вещественные числа] [Математические функции] |
- БИБЛИОТЕКА.VCL.Неустойчивость срабатывания сообщений CM_MOUSELEAVE/CM_MOUSEENTER
- VCL.Зацикливание TUpDown.OnChanging при открытии модального окна в обработчике
| [12-11-2004] | 18-11-2004 11:17 (5) Обсуждение материала | | ...Монопольное использование мыши компонентом TUpDown должно отменяться при обработке сообщения WM_LButtonUp, но оно, как было сказано выше, в очередь не попадает, поэтому после закрытия окна мышь остаётся в монопольном использовании данным компонентом. ... | |
- VCL.TSplitter.Неправильное поведение при перемещении
- IDE.Delphi.Отказ работы Code Explorer
- КОМПИЛЯТОР.Выдача ложных подсказок типа "symbol XXX not used"
- VCL.Ошибка EReadError при использовании вещественных свойств
- VCL.List index out of bounds при корректном значении индекса
- БИБЛИОТЕКА.RTL.CheckWin32Version.Функция некорректна
| [17-12-2002] | 19-08-2004 13:56 (2) Обсуждение материала | | Функция CheckWin32Version(AMajor: Integer; AMinor: Integer = 0): Boolean;
предназначена для того, чтобы удостовериться, что версия Windows не меньше указанной. | | [Версии ОС] |
- КОМПИЛЯТОР.ShortString.Запись в параметр ShortString из вложенной процедуры
| [16-06-2004] | 17-06-2004 13:48 (3) Обсуждение материала | | Проблема не возникает для других коротких типов, передаваемых также по ссылке.
| |
- БИБЛИОТЕКА.VCL.TImageList.Не отображаются иконки на контролах
- КОМПИЛЯТОР.Неконтролируемая потеря адреса безусловного перехода
- СИСТЕМА.ADO.OLEDB.JET.Access Violation при передаче неполного параметра
- ПРОГРАММИСТ.VCL.TClientDataset.Неоднозначность понимания метода EmptyDataSet
- ПРОГРАММИСТ.TFrame.Визуальное наследование "врукопашную" и его последствия
- КОМПИЛЯТОР.Игнорирование ошибки объявления процедуры или функции
- ПРОГРАММИСТ.VCL.TStringList.Неустойчивость сортировки
- БИБЛИОТЕКА.VCL.TBrush.Style.Ошибка заливки полигонов с pattern
- БИБЛИОТЕКА.VCL.TCustomForm.Побочный эффект использования Constraints
- БИБЛИОТЕКА.VCL.TSplitter.Отсутствие учета ограничений приводит к нежелательному поведению формы
- БИБЛИОТЕКА.BDE.Регистронезависимый поиск в таблице иногда вызывает ошибку
- СИСТЕМА.XP.Themes.Ошибка kernel32 при отображении ListView
- IDE.Packages.Комментарий "{}" вызывает ошибку
| [19-05-2003] | 20-05-2003 21:53 (1) Обсуждение материала | | Как правило, файлы пакетов (dpk) содержат заголовок "package ", ряд ключей компиляции, список требуемых пакетов и список модулей, включаемых в пакет. Однако, если между ключевыми словами package и required поместить пустой комментарий из фигурных скобок: "{}", то такой пакет не будет загружен в Delphi IDE. | | [Пакеты (BPL, DPK ...)] |
- IDE.Некорректная работа с редактором панелей TStatusBar в унаследованных формах
- БИБЛИОТЕКА.VCL.TTreeView.Проблемы CustomDraw
- ПРОГРАММИСТ.Ошибка при поиске текста с апострофом в TClientDataSet
- IDE.Форма диалога из репозитория всегда создается в бинарном формате
- ПРОГРАММИСТ.Неправильное использование Randomize
- БИБЛИОТЕКА.VCL.TApplication.Проблемы с HelpCommand в Delphi6
- HARDWARE.Проблемы инсталляции/запуска Delphi, искажение палитры компонентов
- БИБЛИОТЕКА.VCL.TPageProducer.Взаимодействие свойств HTMLDoc и HTMLFile
| [16-10-2002] | 22-10-2002 16:02 (5) Обсуждение материала | | В документации Delphi 6 указано, что присвоение значения свойству HTMLDoc стирает значение HTMLFile и наоборот. Однако при установке свойства HTMLDoc через HTMLDoc.Text сохраняется и значение HTMLFile.
| | [TPageProducer] [ISAPI] [CGI] |
- БИБЛИОТЕКА.RTL.Не вызывается DLLProc
- БИБЛИОТЕКА.VCL.TUpdateSQL.Выполнение нескольких SQL команд
| [26-09-2002] | 07-10-2002 09:05 (14) Обсуждение материала | | В стандартной поставке Delphi TUpdateSQL позволяет выполнить только одну SQL команду, но возникает ситуация, когда желательно выполнить сразу несколько команд (например: удаление из двух таблиц одновременно, когда нет возможности установить каскадное удаление (DBF, DB)) или запустить процедуру на SQL сервере. | | [TUpdateSQL] [Использование SQL] [BDE] |
- БИБЛИОТЕКА.VCL.TDBLookupComboBox.Реакция на нажатие ESC
- IDE.Delphi.Object Inspector.Потеря обработчиков событий компонентов фрейма
- БИБЛИОТЕКА.MIDAS.TClientDataSet.Некорректное формирование XML
- ПРОГРАММИСТ.Вызов методов несуществующих объектов
| [12-08-2002] | 16-08-2002 13:15 (2) Обсуждение материала | | В методе класса Self не обязательно указывает на корректный объект в памяти. Он может быть nil или висячей ссылкой. | | [Методы] |
- БИБЛИОТЕКА.MIDAS.TClientDataSet.Утечка памяти при загрузке XML
- ПРОГРАММИСТ.Интерфейсный объект не всегда освобождается сам
- IDE."Error reading symbol file"
- СИСТЕМА.Win9X."Синий экран" при исключениях FPU с чипсетами VIA694/694T/KT133/KT133A
- СИСТЕМА.Win9X."Синий экран" при делении на ноль (FPU) на процессорах AMD
- БИБЛИОТЕКА.TStringList.Сортировка и системная locale
- HARDWARE.Проблемы при печати отчетов QuickReport
- БИБЛИОТЕКА.VCL.Help.TStringList.IndexOf.Зависимость от сортировки
| [08-07-2002] | нет комментариев Обсуждение материала | | Анализ кода TStringList.IndexOf (D5) показывает, что в случае отсутствия сортировки работает линейный метод TStrings.IndexOf, иначе - метод Find, который и находит (согласно Help) последний из одинаковых элементов. Вывод: недоработана статья из Help. | | [TStrings] [TStringList] [Поиск и сортировка] [Методы] |
- КОМПИЛЯТОР.Нарушение стека при передаче параметров
- КОМПИЛЯТОР.Функция Format в блоке finalization может вызвать AV
| [06-11-2002] | нет комментариев Обсуждение материала | | При включенной опции компилятора "Use debug DCUs" вызов функции Format в блоке finalization модуля приводит к ошибке Access Violation (Runtime error 216 at 00003444) во время закрытия программы, уже после завершения блока finalization. Причём сама функция отрабатывает правильно и возвращает правильное значение. | | [Функции для работы со строками ] [Модули] |
- БИБЛИОТЕКА.TCustomForm.Метод DoClose() не работает в модальном режиме
- БИБЛИОТЕКА.VCL.TMediaPlayer.Проблема записи при невыбранном файле
- БИБЛИОТЕКА.VCL.Неадекватное поведение RevertRecord в режиме вставки
- БИБЛИОТЕКА.VCL.Попытка управления редактором в DBGrid приводит к ошибкам прорисовки
- БИБЛИОТЕКА.VCL.TCGIResponse.Отсутствие параметра "Last-Modified" в заголовке ответа
- IDE.Delphi.Upgrade.Никаких настроек
| [14-07-2003] | нет комментариев Обсуждение материала | | Обновляя Delphi5 -> Delphi7, обнаружил неприятную особенность. Инсталлятор не делал НИКАКИХ настроек среды, ни компоненты не грузил в палитру, ни пути к файлам.
| | [Настройка среды (IDE)] |
- СИСТЕМА.ADO.OLEDB.ORACLE8i.Ошибка при подключении к БД
- СИСТЕМА.ADO.OLEDB.JET.Накопительная ошибка в драйвере для Access
| [18-07-2003] | нет комментариев Обсуждение материала | | Ошибка возникает при частом открытии и закрытии соединений или наборов записей (Recordset) ADO при использовании Microsoft ODBC Driver for Access или Microsoft OLE DB Provider for Jet.
| | [TADODataSet] [MS Access] [ADO] |
- БИБЛИОТЕКА.VCL.Потеря инициализации подсистемы COM
| [16-06-2004] | нет комментариев Обсуждение материала | | При разработке под Delphi 7 ISAPI-расширения было обнаружено неадекватное поведение функции GetQueuedCompletionStatus. Она находится в модуле ISAPIThreadPool.pas, где работает в отдельном потоке и разгребает входящую очередь запросов, поступающих на IIS сервер.
| |
- БИБЛИОТЕКА.VCL.TSQLConnection.SQLHourGlass.Восстанавливается всегда обычный курсор
| [01-12-2003] | нет комментариев Обсуждение материала | | Во время выполнения TSQLConnection.Execute курсор поменяется на часы а потом на обычную стрелку. Если бы было установлено свойство SQLHourGlass=false, то курсор бы просто поменялся на обычную стрелку, что неожиданно и нежелательно (программист мог установить свой собственный курсор).
| | [Курсоры] |
- VCL.TListView.Потеря вставленных объектов при ManualFloat контейнера
| [27-09-2004] | нет комментариев Обсуждение материала | | При использовании компонента TListView в компонентах TControlBar и
TToolBar возникает обнуление объектов, вставленных в SubItems, после
выполнения метода TControlBar.ManualFloat (TToolBar.ManualFloat). | |
- VCL.TBitmap.Ошибки после Dormant
| [01-12-2004] | нет комментариев Обсуждение материала | | В Delphi 6-й и 7-й версии после вызова метода Dormant объекта TBitmap некорректно работает изменение значений свойств Width, Height, Palette этого объекта. Замеченный эффект — очистка изображения при изменении этих свойств, хотя теоретически возможны другие побочные эффекты, например, коррупция памяти. | | [TBitmap] [Графика] [GDI, рисование на канве] [Win95/98] |
- VCL.TLargeintField.Невозможно записать Variant
- VCL.TListBox.Некорректное отображение при смене размера шрифта
- VCL.TDateTimePicker.Checked.Свойство не устанавливается при инициализации
| [12-09-2005] | нет комментариев Обсуждение материала | | Например, желаемое состояние галки после создания в компоненте TDateTimePicker - сброшено. Если в дизайнере форм это свойство установить в False, то программа при первом запуске будет работать правильно, а при возврате в дизайнер форм галка опять появится. | | [TDateTimePicker] [Интерфейс. Компоненты и формы] |
- RTL.TRegistry.Ошибка записи после открытия ключа Read only
- VCL.TCustomDockForm.Неправильное положение окна-носителя (Float формы)
| [22-03-2006] | нет комментариев Обсуждение материала | | Если любой орган управления со свойством DragKind=dkDock, попытаться отсоединить от родительского компонента и бросить в свободную область экрана, то он займет не то положение, которое ему указывалось пользователем, а то, которое ему указала система. | | [TCustomDockForm] [Интерфейс. Компоненты и формы] [Docking] |
- КОМПИЛЯТОР.Ошибка оптимизатора.Особый случай перетирания self
- VCL.TListView.Неверная ширина колонки при изменении порядка
- dotNet.Library.Повисание при использовании в Win32 приложениях
| [13-04-2007] | нет комментариев Обсуждение материала | | В Delphi for .Net есть замечательная возможность создать проект Library, аналогичный Library из Delphi for Win32. Данные библиотеки полностью пишутся на .Net и при необходимости могут использоваться в проектах написанных под Win32. | | [Экспорт/импорт функций] [.NET/ .NET Framework] |
- ToolsAPI.IOTASourceEditor.IOTAEditPosition.Column возвращает неверный результат
- Delphi.ToolsAPI.IOTAEditReader.GetText возвращает неверный результат
| [20-12-2007] | нет комментариев Обсуждение материала | | Создаём простейший эксперт, который копирует из окна редактора текст программы в строковую переменную и обратно. В версиях Delphi 2005 и старше результирующий текст может быть испорчен без всяких видимых причин, если такой текст сохранить, данные, разумеется, будут потеряны. | | [Эксперты] |
- RTL.SimpleShareMem.Невозможность разделения менеджера памяти под некоторыми версиями ОС
|
|