Карта сайта Kansoftware
НОВОСТИУСЛУГИРЕШЕНИЯКОНТАКТЫ
KANSoftWare

Искривление интерфейса в RAD Studio Seattle: как FastMM меняет поведение пунктов меню "Открыть" и "Выход"

Delphi , Компоненты и Классы , Меню

Вопрос, поднятый пользователем, касается необычного поведения меню в RAD Studio Seattle после установки библиотеки FastMM для отслеживания утечек памяти. В результате, действия, обычно связанные с командами "Файл → Открыть" и "Файл → Выход" (File → Open и File → Exit), оказались поменяны местами: при выборе "Открыть" RAD Studio закрывается, а при выборе "Выход" открывается диалог выбора файла. При этом, иконки панели инструментов работают корректно.

Подтвержденный ответ на данную проблему был найден на сайте поддержки Embarcadero. Согласно информации, размещенной там, причиной такой ошибки является наличие не подписанных DLL-файлов в папке "bin" RAD Studio. Это может быть связано с копированием в данную папку сторонних компонентов или драйверов баз данных, что является неправильным. Для устранения проблемы необходимо удалить сторонние DLL из папки "bin".

Чтобы избежать подобных ситуаций в будущем, рекомендуется не копировать сторонние библиотеки в папку "bin" RAD Studio, а использовать механизм поиска путей или копировать необходимые DLL-файлы по мере необходимости, например, при тестировании.

В качестве примера, можно рассмотреть следующий код, который проверяет наличие определенной библиотеки в пути поиска и, в случае необходимости, добавляет ее:

program CheckAndAddDLLPath;

{$APPTYPE CONSOLE}

uses
  System.SysUtils,
  System.Classes;

const
  DLLPath = 'C:\path\to\your\dll\FastMM460.dll'; // Замените на путь к вашей DLL
  BinPath = 'C:\Program Files (x86)\Embarcadero\Studio\18.0\bin'; // Замените на путь к папке bin

var
  SearchPaths: TStringList;
  IsDLLFound: Boolean;

begin
  // Получение текущих путей поиска
  SearchPaths := TStringList.Create;
  SearchPaths.Delimiter := ';';
  SearchPaths.StrictDelimiter := True;
  SearchPaths.LoadFromStream(TStreamStackalloc(SearchDirGetFullPathNames, 'PATH', False));

  // Проверка наличия DLL в текущих путях
  IsDLLFound := SearchPaths.IndexOf(DLLPath) <> -1;

  // Добавление пути к DLL в папку bin, если её там нет
  if not IsDLLFound then
  begin
    // Добавление папки с DLL в системный путь
    SearchDirAdd(DLLPath, 'path');
    // Добавление папки bin в системный путь, если там находится рабочий каталог DLL
    if FileExists(BinPath) then
      SearchDirAdd(BinPath, 'path');
  end;

  // Вывод текущих путей поиска
  SearchPaths.Delimiter := ';';
  Writeln('Current Search Paths:', SearchPaths.Text);

  // Освобождение памяти
  SearchPaths.Free;
  Readln;
end.

Этот код предназначен для использования в консольном приложении и должен запускаться из командной строки. Он проверяет наличие указанной DLL в системных путях и, если её нет, добавляет необходимые пути.

Важно помнить, что изменение системных путей может повлечь за собой нежелательные последствия, поэтому всегда следует делать это с осторожностью и только при необходимости.

Создано по материалам из источника по ссылке.

Проблема связана с неправильным поведением пунктов меню 'Открыть' и 'Выход' в RAD Studio Seattle после установки библиотеки FastMM, вызванным наличием не подписанных DLL в папке 'bin' RAD Studio.


Комментарии и вопросы

Получайте свежие новости и обновления по Object Pascal, Delphi и Lazarus прямо в свой смартфон. Подпишитесь на наш Telegram-канал delphi_kansoftware и будьте в курсе последних тенденций в разработке под Linux, Windows, Android и iOS




Материалы статей собраны из открытых источников, владелец сайта не претендует на авторство. Там где авторство установить не удалось, материал подаётся без имени автора. В случае если Вы считаете, что Ваши права нарушены, пожалуйста, свяжитесь с владельцем сайта.


:: Главная :: Меню ::


реклама


©KANSoftWare (разработка программного обеспечения, создание программ, создание интерактивных сайтов), 2007
Top.Mail.Ru

Время компиляции файла: 2024-12-22 20:14:06
2025-02-05 15:45:14/0.0037009716033936/0