Первая строка распределяет большой блок памяти. Затем, в блоке try
, выполняется несколько операторов, каждый из которых может вызвать ошибку, или, другими словами, "вызвать исключительную ситуацию". Если возникает ошибка, оставшаяся часть блока try пропускается, и выполняются блоки except и finally. Если ошибок нет, то после выполнения всех операторов в блоке try выполнится блок finally. В любом случае, блок памяти будет освобожден. Блок try … finally ловит все, включая Windows GPF или Access Violation. Обратите внимание на вызов raise в блоке try … except. Он снова вызывает исключительную ситуацию, которая вызовет сообщение об ошибке после того, когда закончится блок finally. Если не вызвать raise, то считается, что вы обработали исключительную ситуацию самостоятельно в пределах блока except.3. Есть ли простой способ перехватить exception?
Создайте метод для формы, перехватывающий исключения. Этот метод будет вызываться обработчиком
procedure
begin
if
else raise
end
procedure
begin
Application.OnException := MyExcept;
end
4. Delphi используют строки в стиле Pascal или C?
И те и другие. Delphi имеет два различных набора функций манипулирования строками, один - для
Delphi 2.0 добавляет так называемые длинные строки (
5. Есть ли в Delphi битовые множества?
В явном виде битовых множеств в языке Object Pascal нет. Но вместо этого можно использовать обычные множества, которые на самом деле и хранятся как битовые. Если множество вам нужно для проверки, установлен ли какой то бит в слове (байте и т.д.) можно попробовать такую конструкцию:
type
PByteSet = ^TByteSet;
TByteSet = set of
var
W: Word;
...
if
...
В Delphi 2.0 есть специальный класс
6. Проблема с числом типа Single в DLL.
Я написал на C++ DLL, в которой у меня функция использует число типа float
, передал из Delphi число типаЕсли вы используете числа с плавающей точкой, лучше передавать их не по значению, а по ссылке (указатель в C++). Вероятно DLL написана на MS Visual C++, так как Microsoft и Borland используют разные соглашения о передаче параметров при работе с сопроцессором. В случае Borland C++ и Delphi должны использовать одинаковый способ передачи параметров и значений (через стек сопроцессора). В любом случае вместо
7. Как заставить приложение Delphi отвечать на сообщения Windows?
Используем сообщение
procedure
Код в implementation
может выглядеть так:procedure
begin