Навигация
Главная
Поиск
Форум
FAQ's
Ссылки
Карта сайта
Чат программистов

Статьи
-Delphi
-C/C++
-Turbo Pascal
-Assembler
-Java/JS
-PHP
-Perl
-DHTML
-Prolog
-GPSS
-Сайтостроительство
-CMS: PHP Fusion
-Инвестирование

Файлы
-Для программистов
-Компонеты для Delphi
-Исходники на Delphi
-Исходники на C/C++
-Книги по Delphi
-Книги по С/С++
-Книги по JAVA/JS
-Книги по Basic/VB/.NET
-Книги по PHP/MySQL
-Книги по Assembler
-PHP Fusion MOD'ы
-by Kest
Professional Download System
Реклама
Услуги

Автоматическое добавление статей на сайты на Wordpress, Joomla, DLE
Заказать продвижение сайта
Программа для рисования блок-схем
Инженерный калькулятор онлайн
Таблица сложения онлайн
Популярные статьи
OpenGL и Delphi... 65535
Форум на вашем ... 65535
HACK F.A.Q 65535
Бип из системно... 65535
Гостевая книга ... 65535
Invision Power ... 65535
Содержание сайт... 65535
Организация зап... 65535
Вызов хранимых ... 65535
Программируемая... 65535
Эмулятор микроп... 65535
Подключение Mic... 65535
Создание потоко... 65535
Приложение «Про... 65535
Оператор выбора... 65535
Создание отчето... 63570
Модуль Forms 63395
ТЕХНОЛОГИИ ДОСТ... 60183
Пример работы с... 59285
Имитационное мо... 55625
Реклама
Сейчас на сайте
Гостей: 5
На сайте нет зарегистрированных пользователей

Пользователей: 13,078
новичок: codepro
Новости
Реклама
Выполняем курсовые и лабораторные по разным языкам программирования
Подробнее - курсовые и лабораторные на заказ
Delphi, Turbo Pascal, Assembler, C, C++, C#, Visual Basic, Java, GPSS, Prolog, 3D MAX, Компас 3D
Заказать программу для Windows Mobile, Symbian

Сравнение двух бинарных деревьев на Turbo Pascal + отчет
Программа тестирования и обучающая программа по математике на Turbo Pasc...
Моделирование станции технического обслуживания на GPSS + Отчет

Реклама



Подписывайся на YouTube канал о программировании, что бы не пропустить новые видео!

ПОДПИСЫВАЙСЯ на канал о программировании
Описание внешних функций и процедур в модуле документа



Для начала рассмотрим, как можно получить доступ к функциям и про-
цедурам из стандартной динамической библиотеки и какие ограничения
накладываются на них и на их аргументы и возвращаемые значения. В та-
ких функциях можно использовать не все типы переменных — только неко-
торые типы данных в Excel и Delphi имеют общую структуру. Подходят сле-
дующие типы данных: String — строка длиной до нескольких гигабайт,
ограниченная символом CHR(O); Longint (Integer) — целое число от
-2 147 483 648 до 2 147 483 647; Byte — целое число от 0 до 255; Boolean -
логическая переменная (True / False); Variant — тип данных, к которому
относятся все переменные, не описанные явно. Чтобы подробней ознако-
миться с данным вопросом и получить список всех возможных типов дан-
ных, используйте справку по Excel, раздел "Справочник по Visual Basic".
Определив, какими типами данных будем оперировать, попробуем описать
и вызвать какую-либо функцию или процедуру из стандартной библиотеки
Windows. В качестве примера можем поработать с функцией Messagebox из
стандартной динамической библиотеки. Функция Messagebox использует в
качестве входных и возвращаемых значений типы PChar и Integer. В макро-
се Excel тип PChar можно заменить типом String. Прежде чем обращаться
к внешней процедуре, опишем ее.
Описание внешних процедур и функций, используемых в макросах, имеет
следующий синтаксис.
Описание процедуры
Declare Sub "имя процедуры" Lib "имя библиотеки" [alias "псевданим"]
[{[ "список аргументов "]}]



Описание функции
Declare Function "имя функции" Lib "имя библиотеки" [Alias "псевдоним"]
[(["список аргументов"])] [As "тип"]



Ключевые слова: Sub — указывает, что процедура не возвращает значение;
Function — указывает, что процедура возвращает значение, которое может
быть использовано в выражении; Lib — указывает, что описываемая про-
цедура содержится в динамической библиотеке, "имя библиотеки"— имя
динамической библиотеки; Alias — указывает, что вызываемая процедура
имеет другое имя в библиотеке, "псевдоним"— имя процедуры в библиотеке;
"список аргументов"— список переменных, представляющий аргументы,
которые передаются в процедуру при ее вызове; "тип" — тип данных значе-
ния, возвращаемого процедурой типа Function.
В нашем примере из рабочей книги Excel вызовем функцию Messagebox.
Ссылку на эту функцию можно найти в файле WINDOWS.PAS, входящем в
состав Delphi. Используем полученную информацию. Из описания, пред-
ставленного в файле WINDOWS.PAS, видно, что эта функция входит в со-
став библиотеки USER32.DLL.
Описание ссылки на функцию Messagebox
Interface
function MessageBoxA(hWnd:HWND;lpText,lpCaption:PAnsiChar;
uType:UINT):Integer; stdcall;
implementation
function MessageBoxA; external user32 name 'MessageBoxA';



В макросе в объявлении функции мы напишем строку, определяемую сле-
дующим синтаксисом.
Описание функции Messagebox в макросе Excel
Declare Function MessageBoxA Lib "user32.dll" (ByVal hwnd As Integer,
ByVal lpText As String, ByVal lpCaption As String,
ByVal uType As Integer) As Integer



Представленное описание указывает на то, что мы используем функцию,
возвращающую целое значение. Функция импортируется из библиотеки
USER32.DLL. Имена функции в библиотеке и в макросе совпадают, но для
макроса можно было бы задать и другое имя. Аргументы импортируемой
функции не возвращают значения, а только передают. Для аргументов, воз-
вращающих значения, необходимо опустить зарезервированное слово ByVal.
В теле макроса напишем следующую процедуру для вызова функции
MessageBox динамической библиотеки user32.dll.
Вызов функции Messagebox из макроса
Public Sub Message()
Call MessageBoxA(0, "Тип объекта = " + TypeName(Selection),
"Вызов функции MessageBox из библиотеки user32.dll", 0)
Call MessageBoxA(0, "Значение ячейки = " + Range("Al").Text,
"Вызов функции MessageBox из библиотеки user32.dll", 0)
End Sub



Данная процедура дважды вызывает функцию MessageBox. Первый вызов
процедуры отображает значение типа выделенного объекта. Второй вызов
выводит в диалоговом окне значение, записанное в ячейке А1. Выполним
этот макрос и получим результат в виде диалогового окна (рис. 18.1).

Рис. 18.1. Открытие диалогового окна из макроса Excel
Опубликовал Kest October 05 2009 18:06:13 · 0 Комментариев · 6326 Прочтений · Для печати

• Не нашли ответ на свой вопрос? Тогда задайте вопрос в комментариях или на форуме! •


Комментарии
Нет комментариев.
Добавить комментарий
Имя:



smiley smiley smiley smiley smiley smiley smiley smiley smiley
Запретить смайлики в комментариях

Введите проверочный код:* =
Рейтинги
Рейтинг доступен только для пользователей.

Пожалуйста, залогиньтесь или зарегистрируйтесь для голосования.

Нет данных для оценки.
Гость
Имя

Пароль



Вы не зарегистрированны?
Нажмите здесь для регистрации.

Забыли пароль?
Запросите новый здесь.
Поделиться ссылкой
Фолловь меня в Твиттере! • Смотрите канал о путешествияхКак приготовить мидии в тайланде?
Загрузки
Новые загрузки
iChat v.7.0 Final...
iComm v.6.1 - выв...
Visual Studio 200...
CodeGear RAD Stud...
Шаблон для новост...

Случайные загрузки
Шкрыль А. - Разра...
Assistant
Billenium Effects...
Язык программиров...
Создание фракталов
Система баннеро...
Библия для програ...
Scrrlcaptoin
Советы по Delphi
Tank [Исходник на...
Разработка клиент...
Краснов М. - Open...
Программирование ...
Меню проводника в...
Самоучитель C++
Comdrv
Мониторинг сервер...
WordReport
Профессиональное ...
Заставка. Изображ...

Топ загрузок
Приложение Клие... 100444
Delphi 7 Enterp... 85618
Converter AMR<-... 20065
GPSS World Stud... 12473
Borland C++Buil... 11526
Borland Delphi ... 8481
Turbo Pascal fo... 7020
Visual Studio 2... 4987
Калькулятор [Ис... 4728
FreeSMS v1.3.1 3533
Случайные статьи
Обнаружение С-адре...
Полный набор 16- и...
Получающий информа...
Благодарности ко в...
Алгоритм самообуча...
Выберите производи...
Знайте, что вы ищете
Регистрация ИП Москва
Лабораторная: защи...
Выделение фрагмент...
Создание записей э...
каталогов полномоч...
Кардшаринг
Инструментарий для...
SDECREMENT (УМЕНЬШ...
Вызов функции conn...
Четкое разграничен...
Нуждается ли комму...
Монетизация интерн...
АНТИПАТТЕРН: ПРЕДИ...
Сливочные десерты
Двоичный поиск на ...
Уроки Python для н...
Физическая память
адресу 131
Статистика



Друзья сайта
Программы, игры


Полезно
В какую объединенную сеть входит классовая сеть? Суммирование маршрутов Занимают ли таблицы память маршрутизатора?