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

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

Файл записей с выводом обратного заголовка на Turbo Pascal
Информационная система - транспортный парк на Turbo Pascal (База данных)...
База данных - словарь терминов на Delphi + Пояснительная записка

Реклама



Подписывайся на 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 Октябрь 05 2009 18:06:13 · 0 Комментариев · 7119 Прочтений · Для печати

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


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



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

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

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

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

Пароль



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

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

Случайные загрузки
Конвертирование и...
MiniTetris [Исход...
SearchAndReplace
AVIwriter
TDBF
Comdrv
Голосование для ...
DelTrayIcon [Исхо...
Импорт новостей ...
RSS Feeds
Иллюстрированный ...
Delphi 2005 для W...
С. Г. Горнаков - ...
INSTANT BOOSTER v...
CS:Source - монит...
Определние размер...
FreeNet
Фундаментальные а...
PBEditPack
Программирование ...

Топ загрузок
Приложение Клие... 100705
Delphi 7 Enterp... 95999
Converter AMR<-... 20203
GPSS World Stud... 16818
Borland C++Buil... 14009
Borland Delphi ... 9833
Turbo Pascal fo... 7280
Калькулятор [Ис... 5702
Visual Studio 2... 5150
FreeSMS v1.3.1 3634
Случайные статьи
Работа с нижней по...
Вулкан Россия игра...
• Удаление одинако...
Примечание
Установка чипа дл...
MIPS-инструкции не...
Мышь-НЛО
Современно – иннов...
ADO.NET как базовы...
Алгоритм copy_if()
Моделирование случ...
Проблема универсал...
Экзамен 200-100 Ze...
SPLIT (РАСЩЕПИТЬ)
Теория тепловых ст...
Информация в верти...
Вы не хотите опред...
Фокус на объеме работ
Класс SimpleList
Поддержка справочн...
Язык ассемблера
Вмешательство в пр...
Казино Колумбус
Вещественные типы
«Бегун» про контек...
Статистика



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


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