Навигация
Главная
Поиск
Форум
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
21 ошибка прогр... 65535
HACK F.A.Q 65535
Бип из системно... 65535
Гостевая книга ... 65535
Invision Power ... 65535
Пример работы с... 65535
Содержание сайт... 65535
ТЕХНОЛОГИИ ДОСТ... 65535
Организация зап... 65535
Вызов хранимых ... 65535
Создание отчето... 65535
Имитационное мо... 65535
Программируемая... 65535
Эмулятор микроп... 65535
Подключение Mic... 65535
Создание потоко... 65535
Приложение «Про... 65535
Оператор выбора... 65535
Реклама
Сейчас на сайте
Гостей: 33
На сайте нет зарегистрированных пользователей

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

Моделирование работы обрабатывающего участка цеха в GPSS
Расчет размера дохода на одного человека в Turbo Pascal
База данных междугородних телефонных разговоров на Delphi

Описание внешних функций и процедур в модуле документа



Для начала рассмотрим, как можно получить доступ к функциям и про-
цедурам из стандартной динамической библиотеки и какие ограничения
накладываются на них и на их аргументы и возвращаемые значения. В та-
ких функциях можно использовать не все типы переменных — только неко-
торые типы данных в 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 14:06:13 · 0 Комментариев · 7446 Прочтений · Для печати

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


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



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

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

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

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

Пароль



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

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

Случайные загрузки
Tag Игра "Пятнашк...
TelBook
Visual Basic for ...
Книга по Delphi (...
CaptionButton
PBFoldder
Фундаментальные а...
Delphi 6. Учебный...
Turbo Pascal for ...
Шейдеры в Delphi
Медиа комбайн
CABfiles
Billenium Effects...
PHP, MySQL и Drea...
Род Стивенс. Delp...
Изучаем Ассемблер
Gold Submitter II...
Как программирова...
SysInfo [Исходник...
isoCanvas (Редакт...

Топ загрузок
Приложение Клие... 100772
Delphi 7 Enterp... 97809
Converter AMR<-... 20259
GPSS World Stud... 17014
Borland C++Buil... 14189
Borland Delphi ... 10267
Turbo Pascal fo... 7372
Калькулятор [Ис... 5972
Visual Studio 2... 5206
Microsoft SQL S... 3661
Случайные статьи
Где почта России п...
Меню фотоаппарата ...
Введение
Просмотр файлов на...
Логическое «И»
Что содержит конфи...
Удаление Windows M...
Имитационное модел...
Получающий информа...
Достаточность
Constructor identi...
Как избавиться от ...
Cannot Read or Wri...
Завершение установ...
Поиск в Гугле
Описание типа доку...
Добавление медиако...
Инвестиционный пор...
Аналоговый сигнал ...
Я хочу, чтобы окно...
Как начать играть ...
Наиболее сложная л...
Уменьшение длитель...
Документируйте в п...
Питер Наур и его р...
Статистика



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


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