Выбрать главу

Файлы с таким расширением – стандартные dBASE-файлы.

Фомат .GDB-файла

Файлы с таким расширением – стандартные Interbase-файлы.

Формат .DMT-файла

Этот «частный» бинарный файл содержит встроенные и определенные пользователем шаблоны меню. Данный файл не может быть отредактирован никакими способами через IDE. Поскольку данный файл является «личным», то совместимость с последующими версиями Delphi не гарантируется.

Формат .DBI-файла

Данный текстовый файл содержит информацию, необходимую для инициализации Database Explorer. Данный файл не может быть отредактирован никакими способами через Database Explorer.

Формат .DEM-файла

Данный текстовый файл содержит некоторые стандартные, привязанные к стране, форматы компонента TMaskEdit. Как и любой текстовый файл данных, используемый Delphi, редактировать его самостоятельно не рекомендуется.

Формат .OCX-файла

.OCX-файл является специализированной DLL, которая содержит все или несколько функций, связанных с элементом управления ActiveX. Файл OCX задумывался как «обертка», которая содержала бы сам объект, и средства для связи с другими объектами и серверами.

Определение работы Delphi III

Delphi 1

function DelphiLoaded : boolean;

{ Определение работающей Delphi. Во всяком случае, дает правильный результат если Delphi минимизирован, или имеет открытый проект. Также, правильный результат получается, если вызывающее приложение автономно, или запущено из-под IDE. Код написан на основе идей Wade Tatman wtatman@onramp.net - Mike O'Hanlon, The Pascal Factory, найденных в Delphi-Talk List. }

 function WindowExists(ClassName, WindowName: string): boolean;

 { Проверяем наличие определенного окна Window, используя для этого паскалевские строки вместо PChars. }

 var

  PClassName, PWindowName: PChar;

  AClassName, AWindowName: array[0..63] of char;

 begin

  if ClassName = '' then PClassName := nil

  else PClassName := StrPCopy(@AClassName[0], ClassName);

  if WindowName = '' then PWindowName := nil

  else PWindowName := StrPCopy(@AWindowName[0], WindowName);

  if FindWindow(PClassName, PWindowName) <> 0 then WindowExists := true

  else WindowExists := false;

 end; {WindowExists}

begin {DelphiLoaded}

 DelphiLoaded := false;

 if WindowExists('TPropertyInspector', 'Object Inspector') then

  if WindowExists('TMenuBuilder', 'Menu Designer') then

   if WindowExists('TApplication', 'Delphi') then

    if WindowExists('TAlignPalette', 'Align') then

     if WindowExists('TAppBuilder', '')  then DelphiLoaded := true;

end; {DelphiLoaded}

Следующая программа возвращает TRUE при запуске в Delphi IDE (ПРИМЕЧАНИЕ: это _не_ сработает, если подпрограмма в DLL).

function InIDE: Boolean;

begin

 Result := Bool(PrefixSeg) and Bool(PWordArray(MemL[DSeg:36])^[8]));

end; { InIDE }

Работа с IDE из программы

Вот три подпрограммы, работающие у меня в связке D1 и Win 3.1x:

function LaunchedFromDelphiIDE: Boolean;

{----------------------------------------------------------------}

{ Осуществляем проверку запущенности приложения из-под Delphi    }

{ IDE. Идея взята из сообщения в Delphi-Talk от Ed Salgado       }

{ из Eminent Domain Software.                                    }

{----------------------------------------------------------------}

begin

 LaunchedFromDelphiIDE := Bool(PrefixSeg) {т.е. не DLL}

  and Bool(PWordArray(MemL[DSeg:36])^[8]);

end; {LaunchedFromDelphiIDE}

function DelphiLoaded: Boolean;

{----------------------------------------------------------------}

{ Проверяем, загружена ли Delphi. Дает правильные результаты     }

{  - если вызывающее приложение запущено отдельно, или из-под IDE}

{  - если Delphi имеет открытый проект                           }

{  - если Delphi минимизирована.                                 }

{ Автор идеи Wade Tatman (wtatman@onramp.net).                   }

{----------------------------------------------------------------}

begin

DelphiLoaded := false;

 if WindowExists('TPropertyInspector', 'Object Inspector') then

  if WindowExists('TMenuBuilder', 'Menu Designer') then

   if WindowExists('TAppBuilder', '(AnyName)') then

    if WindowExists('TApplication', 'Delphi') then

     if WindowExists('TAlignPalette',  'Align') then

      DelphiLoaded := true;

end; {DelphiLoaded}

function DelphiInstalled: Boolean;

{----------------------------------------------------------------}

{ Проверяем наличие Delphi.ini, ищем в нем путь к Библиотеке     }

{ Компонентов, после чего проверяем ее наличие по этому пути.    }

{----------------------------------------------------------------}

var IniFile: string;

begin

 DelphiInstalled := false;

 IniFile := WindowsDirectory + '\Delphi.ini';

 if FileExists(IniFile) then

  if FileExists(GetIni(IniFile, 'Library', 'ComponentLibrary')) then

   DelphiInstalled := true;

end; {DelphiInstalled}

Я уверен, что один из приведенных выше методов вам поможет. Последние две подпрограммы используют некоторые другие инкапсуляции Windows API и классов Delphi, и они определены следующим образом:

function WindowExists (WindowClass, WindowName: string): Boolean;

{----------------------------------------------------------------}