Виртуальная библиотека Delphi
- Название:Виртуальная библиотека Delphi
- Автор:
- Жанр:
- Издательство:неизвестно
- Год:неизвестен
- ISBN:нет данных
- Рейтинг:
- Избранное:Добавить в избранное
-
Отзывы:
-
Ваша оценка:
Виртуальная библиотека Delphi краткое содержание
Виртуальная библиотека Delphi - читать онлайн бесплатно полную версию (весь текст целиком)
Интервал:
Закладка:
4. Какую модель данных использует Delphi?
Delphi использует смешанную (mixed) модель памяти, но она очень похожа на модель largeв C.С++:
• Методы дальние ( far)
• Процедуры, описанные в интерфейсной части, дальние
• Процедуры, используемые только в implementationпо умолчанию ближние
• Данные в Heap и все указатели вообще (включая экземпляры объектов) дальние
• Глобальные переменные ближние (в сегменте DS)
• Параметры процедур и локальные переменные ближние (в стеке)
• Процедуры, объявленные farили exportдальние
• VMT дальние для новой модели классов и ближние для старой
Эта схема используется в Borland Pascal долгое время.
5. Можно ли использовать в приложении ресурсы, созданные в BPW 7.0?
Все ресурсы, созданные в других приложениях, можно подключить и использовать в Delphi с помощью директивы компилятора {$R ...}и процедур Windows API. Кроме того, меню из файла ресурсов и графические файлы *.BMP, *.ICO и *.WMF можно импортировать в приложение Delphi на этапе разработки. В настоящее время компанией Borland поставляется программный продукт RAD Pack for Delphi, где в состав поставки входит эксперт, позволяющий преобразовывать ресурсы из BP7.0 в формы Delphi.
6. Возможно ли написать Screen Saver для Windows в Delphi?
Для создания программы, работающей как Screen Saver:
1. В проектном файле (*.dpr) напишите {$D SCRNSAVE }после uses; данная директива вставляет указанный текст (SCRNSAVE ) в раздел описания модуля — в данном случае программы. Это главное, что необходимо для того, чтобы Windows распознал программу как Screen Saver.
2. Hа главной форме выключите Border ( BorderStyle=bsNone ) и иконки. Установите свойства Left и Top =0 , WindowState=wsMaximize .
3. В обработчике события OnCreate , установите Application.OnMessage на процедуру деактивации Screen Saver. Установите Application.OnIdle на любую процедуру для рисования на экране.
4. В обработчике OnCreate должна проверяться командная строка на наличие ключей /c и /s. Эти параметры определяют, нужно ли запускать сам Screen Saver или его конфигурацию (/c - конфигурация).
5. Скомпилируйте программу и переименуйте из .exe в .scr ; поместите файл в каталог Windows — Screen Saver должен появиться на панели управления (Control Panel).
7. Как Delphi обрабатывает функции обратного вызова Windows (сallback)?
Точно так же как C: вы можете получить указатель ( far pointer ) на вашу callback процедуру (не забыть при этом обьявить ее с директивой компилятора {$F+}, либо спецификатором far) и передать этот указатель в Windows. Это все.
Delphi и Visual Basic
1. Есть ли в Delphi эквивалент массива элементов управления из Visual Basic?
Hет. Компоненты Delphi не имеют свойства Index, подобное VB. Однако, имеются три основные причины, почему вы хотите использовать их в VB, и для каждой из них есть решение в Delphi.
Причина 1. Вы хотите использовать один обработчик события для разных компонент на форме.
Это просто. Все, что вы должны сделать — это выбрать тот же самый обработчик для каждой визуальной компоненты. Это лучше, чем в случае с массивом компонент, потому что вы можете одну и ту же процедуру-обработчик события присвоить различным типам компонент; например, кнопка на форме и пункт меню могут вызывать ту же самую функцию для обработки события OnClick .
Причина 2. Вы хотите динамически создавать и уничтожать визуальные компоненты во время выполнения программы.
Это также довольно просто в Delphi. Предположим, что на форме есть кнопка, и, каждый раз когда она нажимается, вы хотите создавать другую кнопку. Следующий пример показывается, как это делать:
procedureTForm1.Button1Click(Sender: TObject);
var
NewButton: TButton;
begin
NewButton := TButton.Create(Self);
NewButton.Parent := Self;
end;
Причина 3. Вам действительно требуется доступ к компонентам по номеру.
Предположим, что вы решили написать игру вроде Реверси в Delphi. Вам нужно разместить 100 объектов TShape на форме, в виде квадрата 10×10. Конечно, размещать каждый элемент вручную на экране — задача трудоемкая и неинтересная, при этом, в декларации формы появляется 100 строк кода, которые, в общем-то, не нужны. Вместо этого можно завести массив вроде
Board: array[1..10, 1..10] ofTShape; Далее в программе нужно создать каждый из этих объекты, вызвав TShape.Create(FormXX) ; указать вручную начальные установки для них. Кроме того, в свойстве Parent каждого объекта из массива нужно указать ту панель ( TPanel ) или форму, на которой они располагаются. Это нужно для правильной перерисовки объектов.
Если же вы не используете такие большие массивы, т.е., например хотите одинаково реагировать на нажатие 3-5 кнопок с незначительным различием для каждой из них, то можно использовать свойство Tag.
2. Как использовать DLL, написанные в Delphi, например в Visual Basic?
Допустим, вы написали на Delphi DLL и в нем объявили функцию
functionDataFileType(lpStr: PChar): Integer; export;
begin
StrPCopy(lpStr, oDataMap.VendorName);
Result := StrLen(lpStr);
end;
в Visual Basic Вы должны подключить ее как:
Declare Function DataFileType Lib "File.dll" (ByVal lpStr As String) As Integer
а в программе на VB использовать следующим образом:
nSize = DataFileType(lpVar)
sVendorName = Mid$(lpVar, 1, nSize)
3. Конвертация TBasicString (VBX) в string.

Я использую VBX и испытываю проблемы с конвертацией TBasicString в string. Как это сделать?

Существует две функции —
• BStrPCopy — принимает Basic string и конвертирует в string
• SetBStr — принимает stringи возвращает Basic string Действительно, ссылок на эти функции нет в документации, но имена этих функций можно "обнаружить" в VBXCTRL.DCU.
Базы данных
1. Ошибка инициализации BDE ($2C09).

Когда я пытаюсь запустить приложение из Delphi, то получаю ошибку EDatabaseError и сообщение 'An error occurred while attempting to initialize the Borland Database Engine (Error $2C09)'

Добавьте SHARE.EXE в AUTOEXEC.BAT или добавьте DEVICE=VSHARE.386 в раздел [386Enh] файла SYSTEM.INI и перезагрузитесь.
2. Ошибка при загрузке языкового драйвера.

У меня есть Quattro Pro 6.0 и IDAPI в сети. После установки Delphi и нового IDAPI поверх сетевого IDAPI при запуске Quattro Pro с другой машины я получаю ошибку 'Could not load Language Driver' .

Добавьте раздел [Borland Language Drivers] в WIN.INI файл для указания каталога языкового драйвера. Пример:
Читать дальшеИнтервал:
Закладка: