Валентин Озеров - Советы по Delphi. Версия 1.4.3 от 1.1.2001
- Название:Советы по Delphi. Версия 1.4.3 от 1.1.2001
- Автор:
- Жанр:
- Издательство:неизвестно
- Год:неизвестен
- ISBN:нет данных
- Рейтинг:
- Избранное:Добавить в избранное
-
Отзывы:
-
Ваша оценка:
Валентин Озеров - Советы по Delphi. Версия 1.4.3 от 1.1.2001 краткое содержание
…начиная с 1001. Смотрите другие файлы…
Советы по Delphi. Версия 1.4.3 от 1.1.2001 - читать онлайн бесплатно полную версию (весь текст целиком)
Интервал:
Закладка:
Формат .DB-файла
Файлы с таким расширением – стандартные файлы Paradox.
Формат .DBF-файла
Файлы с таким расширением – стандартные dBASE-файлы.
Фомат .GDB-файла
Файлы с таким расширением – стандартные Interbase-файлы.
Формат .DMT-файла
Этот «частный» бинарный файл содержит встроенные и определенные пользователем шаблоны меню. Данный файл не может быть отредактирован никакими способами через IDE. Поскольку данный файл является «личным», то совместимость с последующими версиями Delphi не гарантируется.
Формат .DBI-файла
Данный текстовый файл содержит информацию, необходимую для инициализации Database Explorer. Данный файл не может быть отредактирован никакими способами через Database Explorer.
Формат .DEM-файла
Данный текстовый файл содержит некоторые стандартные, привязанные к стране, форматы компонента TMaskEdit. Как и любой текстовый файл данных, используемый Delphi, редактировать его самостоятельно не рекомендуется.
Формат .OCX-файла
.OCX-файл является специализированной DLL, которая содержит все или несколько функций, связанных с элементом управления ActiveX. Файл OCX задумывался как «обертка», которая содержала бы сам объект, и средства для связи с другими объектами и серверами.
Определение работы Delphi III
Delphi 1
functionDelphiLoaded : boolean;
{ Определение работающей Delphi. Во всяком случае, дает правильный результат если Delphi минимизирован, или имеет открытый проект. Также, правильный результат получается, если вызывающее приложение автономно, или запущено из-под IDE. Код написан на основе идей Wade Tatman wtatman@onramp.net - Mike O'Hanlon, The Pascal Factory, найденных в Delphi-Talk List. }
functionWindowExists(ClassName, WindowName: string): boolean;
{ Проверяем наличие определенного окна Window, используя для этого паскалевские строки вместо PChars. }
var
PClassName, PWindowName: PChar;
AClassName, AWindowName: array[0..63] ofchar;
begin
ifClassName = '' thenPClassName := nil
elsePClassName := StrPCopy(@AClassName[0], ClassName);
ifWindowName = '' thenPWindowName := nil
elsePWindowName := StrPCopy(@AWindowName[0], WindowName);
ifFindWindow(PClassName, PWindowName) <> 0 thenWindowExists := true
elseWindowExists := false;
end; {WindowExists}
begin{DelphiLoaded}
DelphiLoaded := false;
ifWindowExists('TPropertyInspector', 'Object Inspector') then
ifWindowExists('TMenuBuilder', 'Menu Designer') then
ifWindowExists('TApplication', 'Delphi') then
ifWindowExists('TAlignPalette', 'Align') then
ifWindowExists('TAppBuilder', '') thenDelphiLoaded := true;
end; {DelphiLoaded}
Следующая программа возвращает TRUE при запуске в Delphi IDE (ПРИМЕЧАНИЕ: это _не_ сработает, если подпрограмма в DLL).
functionInIDE: Boolean;
begin
Result := Bool(PrefixSeg) andBool(PWordArray(MemL[DSeg:36])^[8]));
end; { InIDE }
Работа с IDE из программы
Вот три подпрограммы, работающие у меня в связке D1 и Win 3.1x:
functionLaunchedFromDelphiIDE: Boolean;
{----------------------------------------------------------------}
{ Осуществляем проверку запущенности приложения из-под Delphi }
{ IDE. Идея взята из сообщения в Delphi-Talk от Ed Salgado }
{ из Eminent Domain Software. }
{----------------------------------------------------------------}
begin
LaunchedFromDelphiIDE := Bool(PrefixSeg) {т.е. не DLL}
andBool(PWordArray(MemL[DSeg:36])^[8]);
end; {LaunchedFromDelphiIDE}
functionDelphiLoaded: Boolean;
{----------------------------------------------------------------}
{ Проверяем, загружена ли Delphi. Дает правильные результаты }
{ - если вызывающее приложение запущено отдельно, или из-под IDE}
{ - если Delphi имеет открытый проект }
{ - если Delphi минимизирована. }
{ Автор идеи Wade Tatman (wtatman@onramp.net). }
{----------------------------------------------------------------}
begin
DelphiLoaded := false;
ifWindowExists('TPropertyInspector', 'Object Inspector') then
ifWindowExists('TMenuBuilder', 'Menu Designer') then
ifWindowExists('TAppBuilder', '(AnyName)') then
ifWindowExists('TApplication', 'Delphi') then
ifWindowExists('TAlignPalette', 'Align') then
DelphiLoaded := true;
end; {DelphiLoaded}
functionDelphiInstalled: Boolean;
{----------------------------------------------------------------}
{ Проверяем наличие Delphi.ini, ищем в нем путь к Библиотеке }
{ Компонентов, после чего проверяем ее наличие по этому пути. }
{----------------------------------------------------------------}
varIniFile: string;
begin
DelphiInstalled := false;
IniFile := WindowsDirectory + '\Delphi.ini';
ifFileExists(IniFile) then
ifFileExists(GetIni(IniFile, 'Library', 'ComponentLibrary')) then
DelphiInstalled := true;
end; {DelphiInstalled}
Я уверен, что один из приведенных выше методов вам поможет. Последние две подпрограммы используют некоторые другие инкапсуляции Windows API и классов Delphi, и они определены следующим образом:
functionWindowExists (WindowClass, WindowName: string): Boolean;
{----------------------------------------------------------------}
{ С помощью паскалевских строк проверяем наличие определенного }
{ окна. Для поиска только имени окна (WindowName), используем }
{ WindowClass '(AnyClass)'; для поиска только класса окна }
{ (WindowClass), используем WindowName '(AnyName)'. }
{----------------------------------------------------------------}
var
PWindowClass, PWindowName: PChar;
AWindowClass, AWindowName: array[0..63] ofChar;
begin
ifWindowClass = '(AnyClass)' thenPWindowClass := nil
elsePWindowClass := StrPCopy(PChar(@AWindowClass), WindowClass);
ifWindowName = '(AnyName)' thenPWindowName := nil
elsePWindowName := StrPCopy(PChar(@AWindowName), WindowName);
ifFindWindow(PWindowClass, PWindowName) <> 0 thenWindowExists := true
else WindowExists := false;
end; {WindowExists}
functionWindowsDirectory: string;
{----------------------------------------------------------------}
{ Возвращаем путь к каталогу Windows (без обратной косой черты) }
{----------------------------------------------------------------}
constBufferSize = 144;
varABuffer: array[0..BufferSize] ofChar;
begin
ifGetWindowsDirectory(PChar(@ABuffer), BufferSize) = 0 thenWindowsDirectory := ''
elseWindowsDirectory := StrPas(PChar(@ABuffer));
end; {WindowsDirectory}
functionGetIni( constIniFile, Section, Entry: string): string;
{----------------------------------------------------------------}
{ Получаем инициализационную 'profile' строку из определенного }
Интервал:
Закладка: