Виртуальная библиотека Delphi

Тут можно читать онлайн Виртуальная библиотека Delphi - бесплатно полную версию книги (целиком) без сокращений. Жанр: comp-programming. Здесь Вы можете читать полную версию (весь текст) онлайн без регистрации и SMS на сайте лучшей интернет библиотеки ЛибКинг или прочесть краткое содержание (суть), предисловие и аннотацию. Так же сможете купить и скачать торрент в электронном формате fb2, найти и слушать аудиокнигу на русском языке или узнать сколько частей в серии и всего страниц в публикации. Читателям доступно смотреть обложку, картинки, описание и отзывы (комментарии) о произведении.
  • Название:
    Виртуальная библиотека Delphi
  • Автор:
  • Жанр:
  • Издательство:
    неизвестно
  • Год:
    неизвестен
  • ISBN:
    нет данных
  • Рейтинг:
    3/5. Голосов: 11
  • Избранное:
    Добавить в избранное
  • Отзывы:
  • Ваша оценка:
    • 60
    • 1
    • 2
    • 3
    • 4
    • 5

Виртуальная библиотека Delphi краткое содержание

Виртуальная библиотека Delphi - описание и краткое содержание, автор Неизвестный Автор, читайте бесплатно онлайн на сайте электронной библиотеки LibKing.Ru

Виртуальная библиотека Delphi - читать онлайн бесплатно полную версию (весь текст целиком)

Виртуальная библиотека Delphi - читать книгу онлайн бесплатно, автор Неизвестный Автор
Тёмная тема
Сбросить

Интервал:

Закладка:

Сделать

Result := (MySport asTFootball).TotalYardage;

end;

Также, базовый класс TObject имеет набор методов, которые возвращают информацию, созданную компилятором в момент компиляции текста для поддержки RTTI. Hапример, метод TObject.ClassName возвращает имя класса любого объекта, наследованного от TObject . Hапример, TButton.ClassName вернет значение 'TButton' .

2. Как работает обработка исключительных ситуаций в Delphi?

Основная структура выглядит примерно так:

P := New(BigThing);

try

try

Proc1(P);

Proc2(P);

except

Handle(P);

raise;

end;

finally

Dispose(P);

end;

Первая строка распределяет большой блок памяти. Затем, в блоке try, выполняется несколько операторов, каждый из которых может вызвать ошибку, или, другими словами, "вызвать исключительную ситуацию". Если возникает ошибка, оставшаяся часть блока tryпропускается, и выполняются блоки exceptи finally. Если ошибок нет, то после выполнения всех операторов в блоке tryвыполнится блок finally. В любом случае, блок памяти будет освобожден. Блок try … finallyловит все, включая Windows GPF или Access Violation. Обратите внимание на вызов raiseв блоке try … except. Он снова вызывает исключительную ситуацию, которая вызовет сообщение об ошибке после того, когда закончится блок finally. Если не вызвать raise, то считается, что вы обработали исключительную ситуацию самостоятельно в пределах блока except.

3. Есть ли простой способ перехватить exception?

Создайте метод для формы, перехватывающий исключения. Этот метод будет вызываться обработчиком OnException объекта Application . В вашем методе проверьте, тот ли это исключение, что вы ожидаете, например EDatabaseError . Почитайте on-line help для события OnException . Там есть информация, как вызвать собственный метод для события.

procedureTForm1.MyExcept(Sender: TObject; E: Exception);

begin

ifE isEDatabaseError thenMessageDlg('Поймали exception', mtInformation, [mbOk], 0)

{ это не то, сделать raise }

else raiseE;

end;

procedureTForm1.FormCreate(Sender: TObject);

begin

Application.OnException := MyExcept;

{ здесь вы указываете, что событие OnException выполнит ваш метод }

end;

4. Delphi используют строки в стиле Pascal или C?

картинка 76

И те и другие. Delphi имеет два различных набора функций манипулирования строками, один - для PChar ; но в Delphi также есть функция MessageDlg , которая принимает строки типа Pascal.

Delphi 2.0 добавляет так называемые длинные строки ( AnsiString ), которыми можно манипулировать как обычными строками в Pascal, но они имеют динамически изменяющийся размер и могут быть размером до 4Гбайт. Можно выполнять преобразования от PChar к AnsiString и наоборот. Старый строковый тип теперь называется ShortString . По умолчанию кличевое слово stringсоответствует типу AnsiString .

5. Есть ли в Delphi битовые множества?

В явном виде битовых множеств в языке Object Pascal нет. Но вместо этого можно использовать обычные множества, которые на самом деле и хранятся как битовые. Если множество вам нужно для проверки, установлен ли какой то бит в слове (байте и т.д.) можно попробовать такую конструкцию:

type

PByteSet = ^TByteSet;

TByteSet = set ofByte;

var

W: Word;

...

{ если бит 3 в слове W установлен, тогда ... }

if3 inPByteSet(@W)^ then...

...

картинка 77

В Delphi 2.0 есть специальный класс TBitSet , который ведет себя как битовое множество.Для Delphi 1.0 вы можете написать такой класс самостоятельно.

6. Проблема с числом типа Single в DLL.

картинка 78

Я написал на C++ DLL, в которой у меня функция использует число типа float, передал из Delphi число типа Single и получил GPF 'Invalid Opcode'. Что неправильно?

картинка 79

Если вы используете числа с плавающей точкой, лучше передавать их не по значению, а по ссылке (указатель в C++). Вероятно DLL написана на MS Visual C++, так как Microsoft и Borland используют разные соглашения о передаче параметров при работе с сопроцессором. В случае Borland C++ и Delphi должны использовать одинаковый способ передачи параметров и значений (через стек сопроцессора). В любом случае вместо Single лучше использовать Double ( doubleили long floatв C++), так как вообще говоря, реальный тип, который соответствует типу Single точно не определен и может измениться в будущем.

7. Как заставить приложение Delphi отвечать на сообщения Windows?

Используем сообщение WM_WININICHANGED в качестве примера. Объявление метода в TForm позволит вам обрабатывать сообщение WM_WININICHANGED :

procedureWMWinIniChange( varMessage: TMessage); messageWM_WININICHANGE;

Код в implementationможет выглядеть так:

procedureTForm1.WMWinIniChange( varMessage: TMessage);

begin

inherited;

{ ... ваша реакция на событие ... }

end;

Вызов inheritedметода очень важен. Обратите внимание также на то, что для функций, объявленных с директивой message(обработчиков событий Windows) после inheritedнет имени наследуемой процедуры, потому что она может быть неизвестна или вообще отсутствовать (в этом случае вы в действительности вызываете процедуру DefaultHandler).

8. Как обработать события от других приложений?

Попробуйте сделать это следующим образом:

type

TForm1 = class(TForm)

...

private

procedureWMNCActivate( varMsg: TMessage); messageWM_NCACTIVATE;

end;

procedureTForm1.WMNCActivate( varMsg: TMessage);

begin

{ здесь обработка принятых событий }

end;

9. Как перехватить сообщения Windows и обработать их перед тем, как выполнится строка Application.Run?

Пример проекта показывает, как получить сообщения Windows в данном случае. Это редкий случай, в большинстве случаев переопределение процедуры Application.OnMessage будет делать то же самое.

programProject1;

uses

Forms,

Unit1 in 'UNIT1.PAS' { Form1 } ,

Messages, WinTypes, WinProcs,

{$R *.RES}

var

OldWndProc: TFarProc;

functionNewWndProc(hWndAppl: HWnd; Msg, wParam: Word; lParam: Longint): Longint; export;

Читать дальше
Тёмная тема
Сбросить

Интервал:

Закладка:

Сделать


Неизвестный Автор читать все книги автора по порядку

Неизвестный Автор - все книги автора в одном месте читать по порядку полные версии на сайте онлайн библиотеки LibKing.




Виртуальная библиотека Delphi отзывы


Отзывы читателей о книге Виртуальная библиотека Delphi, автор: Неизвестный Автор. Читайте комментарии и мнения людей о произведении.


Понравилась книга? Поделитесь впечатлениями - оставьте Ваш отзыв или расскажите друзьям

Напишите свой комментарий
x