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

Здесь есть возможность читать онлайн «Виртуальная библиотека Delphi» весь текст электронной книги совершенно бесплатно (целиком полную версию без сокращений). В некоторых случаях можно слушать аудио, скачать через торрент в формате fb2 и присутствует краткое содержание. Жанр: Программирование, на русском языке. Описание произведения, (предисловие) а так же отзывы посетителей доступны на портале библиотеки ЛибКат.

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

Предлагаем к чтению аннотацию, описание, краткое содержание или предисловие (зависит от того, что написал сам автор книги «Виртуальная библиотека Delphi»). Если вы не нашли необходимую информацию о книге — напишите в комментариях, мы постараемся отыскать её.

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

Ниже представлен текст книги, разбитый по страницам. Система сохранения места последней прочитанной страницы, позволяет с удобством читать онлайн бесплатно книгу «Виртуальная библиотека Delphi», без необходимости каждый раз заново искать на чём Вы остановились. Поставьте закладку, и сможете в любой момент перейти на страницу, на которой закончили чтение.

Тёмная тема
Сбросить

Интервал:

Закладка:

Сделать

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;

begin

{ default WndProc return value }

Result := 0;

{ handle messages here; the message number is in Msg }

Result := CallWindowProc(OldWndProc, hWndAppl, Msg, wParam, lParam);

end;

begin

Application.CreateForm(TForm1, Form1);

OldWndProc := TFarProc(GetWindowLong(Application.Handle, GWL_WNDPROC));

SetWindowLong(Application.Handle, GWL_WNDPROC, Longint(@NewWndProc));

Application.Run;

end.

10. Проблема с DragDrop для внешних программ.

картинка 80

Я пишу небольшую программку — "мусорную корзину". В FormCreate вызывается DragAcceptFiles(HANDLE, True) . Проблема в том, что когда размер окна восстанавливается и затем минимизируется Drag and Drop перестает работать. Я безуспешно пробовал помещать DragAcceptFiles в разные методы формы. Однако если сделать вызов DragAcceptFiles(Application.Handle, True) в MainForm.Create , то все работает. Как перехватить событие WM_DROPFILES ?

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

Интервал:

Закладка:

Сделать

Похожие книги на «Виртуальная библиотека Delphi»

Представляем Вашему вниманию похожие книги на «Виртуальная библиотека Delphi» списком для выбора. Мы отобрали схожую по названию и смыслу литературу в надежде предоставить читателям больше вариантов отыскать новые, интересные, ещё непрочитанные произведения.


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

Обсуждение, отзывы о книге «Виртуальная библиотека Delphi» и просто собственные мнения читателей. Оставьте ваши комментарии, напишите, что Вы думаете о произведении, его смысле или главных героях. Укажите что конкретно понравилось, а что нет, и почему Вы так считаете.

x