Copyright (C) 1998-2005 MKTMK Moscow, Russia

http://www.mktmk.narod.ru.

e-mail: mktmk<at>narod.ru

 

This document write in WIN1251 code (Russian).

 

 

   Интегрированная среда разработки для Open Basic

                      (IDE OB)

               Описание применения.

                   Версия 1.00.

 

 

Аннотация

 

 Интегрированная среда разработки для Open Basic (IDE OB) предназначена для

поддержки отладки программ интерпретатора Open Basic.

 

 Open Basic (OB) представляет собой реализацию интерпретатора языка Basic не

зависящую от ОС.

 

 IDE OB может служить примером интеграции интерпретатора Open Basic и

ОС Windows.

 

 IDE OB не является частью интерпретатора Open Basic.

 

 IDE OB предоставляет обычный сервис отладочной среды:

 

 - редактирование текста программ

 - загрузка программ в интерпретатор (несколько режимов)

 - запуск программ в интерпретаторе

 - останов программ

 - пошаговое исполнение программ

 - анимированное исполнение программ

 - точки останова (на уровне интерпретатора, без поддержки со стороны IDE OB)

 - просмотр и модификация переменных (в окне Watch)

 - просмотр диагностических сообщений интерпретатора (в окне Messages)

 - поддержка операторов PRINT и INPUT (в окне I/O Terminal)

 

  IDE OB написана на Borland C++ Builder 6.0 (BCB 6.0).

 

Производитель

 

Copyright (C) 1998-2005 MKTMK Moscow, Russia

http://www.mktmk.narod.ru.

e-mail: mktmk<at>narod.ru

 

MKTMK software company. Moscow, Russia

 

Гарантии

 

 IDE OB и документация поставляются на условиях "как есть". Фирма MKTMK не

несет ответственности за возможные убытки, понесенные из-за использования

IDE OB.

 Мы будем признательны за все найденные в программе ошибки.

 

Ссылки

 

 Все упомянутые в тексте торговые марки являются собственностью их владельцев.

 

Перечень файлов поставки

 

 IDE OB поставляется в двух файлах.

 

 1. Инсталлятор setup.exe.

 2. Архив ide_ob.zip.

 

 Инсталлятор setup.exe содержит исполняемую часть проекта.

 Архив содержит полный проект IDE OB, включая исходные тексты.

 

 Состав архива ide_ob.zip:

 

c:\ide_ob\htm

ide_rus.htm   -   файл с текстом данного описания на русском языке

ide_eng.htm   -   файл с текстом данного описания на английском языке

read_rus.htm  -   описание интерпретатора Open Basic на русском языке

read_eng.htm  -   описание интерпретатора Open Basic на английском языке

 

c:\ide_ob\include

mstore.h      -   стратегии хранения данных

mvect.h       -   вектор

mlist.h       -   список

mstack.h      -   стек

mhash.h       -   хеш-таблица

ob.h          -   основной заголовочный файл Open Basic

 

c:\ide_ob\lib

ob15_1.lib    -   библиотека интерпретатора Open Basic для BCB 6.0.

 

c:\ide_ob\exe

ide_ob.exe    -   выходной исполняемый файл IDE OB

 

c:\ide_ob\obj

              -   объектные файлы

c:\ide_ob\bas

test0.bas     -   пример *.bas программы

test1.bas     -   пример *.bas программы

test2.bas     -   пример *.bas программы

test3.bas     -   пример *.bas программы

test4.bas     -   пример *.bas программы

test5.bas     -   пример *.bas программы

test6.bas     -   пример *.bas программы

test7.bas     -   пример *.bas программы

test8.bas     -   пример *.bas программы

test9.bas     -   пример *.bas программы

test10.bas    -   пример *.bas программы

test11.bas    -   пример *.bas программы

test12.bas    -   пример *.bas программы

test13.bas    -   пример *.bas программы

test14.bas    -   пример *.bas программы

test15.bas    -   пример *.bas программы

test16.bas    -   пример *.bas программы

test17.bas    -   пример *.bas программы

 

c:\ide_ob

IDE_OB   BPR  -   файл проекта BCB 6.0.

UNIT1    CPP  -   исходный текст

UNIT10   CPP  -   исходный текст

UNIT2    CPP  -   исходный текст

UNIT6    CPP  -   исходный текст

UNIT7    CPP  -   исходный текст

UNIT8    CPP  -   исходный текст

UNIT9    CPP  -   исходный текст

userfun.cpp   -   исходный текст

UNIT1    DDP

UNIT2    DDP

UNIT6    DDP

UNIT7    DDP

UNIT8    DDP

UNIT9    DDP

UNIT1    DFM

UNIT2    DFM

UNIT6    DFM

UNIT7    DFM

UNIT8    DFM

UNIT9    DFM

IDE_OB   DSK

MENUM    H    -   заголовочный файл

UNIT1    H    -   заголовочный файл

UNIT10   H    -   заголовочный файл

UNIT2    H    -   заголовочный файл

UNIT6    H    -   заголовочный файл

UNIT7    H    -   заголовочный файл

UNIT8    H    -   заголовочный файл

UNIT9    H    -   заголовочный файл

IDE_OB   RES  -   ресурсы

IDE_OB   ICO  -   пиктограмма

IDE_OB   CPP  -   исходный текст

IDE_OB   H    -   заголовочный файл

 

                    Содержание

 

Аннотация. 1

Производитель. 1

Гарантии. 1

Ссылки. 2

Перечень файлов поставки. 2

1. Описание задачи и назначение программы.. 4

2. Условия применения. 4

2.1. Инсталляция проекта с помощью инсталлятора setup.exe. 5

2.2. Инсталляция проекта из архива ide_ob.zip. 5

3. Входные и выходные данные. 5

3.1. Окна программы.. 5

3.1.1. Окно редактирования Edit 5

3.1.2. Окно I/O Terminal 5

3.1.3. Окно Watch. 5

3.1.4. Окно Messages. 6

3.1.4.1. Диагностика IDE OB в окне Messages. 6

3.2. Главное меню и инструментальная панель программы.. 7

3.2.1. Меню File. 7

3.2.1.1. New.. 7

3.2.1.2. Open (F3) 7

3.2.1.3. Save (F2) 7

3.2.1.4. Save as... 7

3.2.1.5. Exit 7

3.2.2. Меню Search. 7

3.2.2.1. Find/Replace (Ctrl+L) 7

3.2.3. Меню Basic. 8

3.2.3.1. Load (кнопка L) 8

3.2.3.2. Load overlay (кнопка Lo) 8

3.2.3.3. Load at cursor (кнопка Lc) 8

3.2.3.4. Load at cursor overlay (кнопка Lco) 8

3.2.3.5. Run/Continue (кнопка R/C) 8

3.2.3.6. Load and Run (кнопка L+R) 8

3.2.3.7. Stop (кнопка Stop) 8

3.2.3.8. Abort (кнопка Ab) 9

3.2.3.9. Step (кнопка Step) 9

3.2.3.10. Animate (кнопка An) 9

3.2.3.11. Info (кнопка I) 9

3.2.3.12. Правила загрузки и запуска. 9

3.2.4. Меню Options. 9

3.2.4.1. Панель Options. 9

3.2.5. Меню Windows. 10

3.2.5.1. I/O Terminal 10

3.2.5.2. Watch. 10

3.2.5.3. Messages. 10

3.2.6. Меню Help. 10

3.2.6.1. About 10

3.3. Панель статуса. 10

3.4. Меню окна Watch и Popup меню окна Watch. 10

3.4.1. Modification current line. 10

3.4.2. Modification all list 10

3.4.3. Save watch list 10

3.4.4. Update watch list 11

3.5. Рабочие файлы программы.. 11

3.6. Подключение пользовательских функций к исполняющей системе интерпретатора Open Basic в IDE OB. 11

3.6.1        Описание пользовательских функций, подключенных к IDE OB.. 11

3.7. Особенности запуска интерпретатора Open Basic в треде (thread) Windows. 13

 

 

1.  Описание задачи и назначение программы

 

 Open Basic (OB) представляет собой реализацию интерпретатора языка Basic не

зависящую от ОС.

 

 IDE OB создана для облегчения отладки программ, написанных на Open Basic.

 

2.  Условия применения

 

 IDE OB написана на Borland C++ Builder 6.0 с использованием VCL.

 Файл проекта и исходные тексты располагается на диске C:\IDE_OB.

 Промежуточные файлы располагаются на диске C:\IDE_OB\OBJ.

 Выходной файл располагается на диске C:\IDE_OB\EXE.

 

2.1.  Инсталляция проекта с помощью инсталлятора setup.exe.

 

 Запустите setup.exe и следуйте его подсказкам.

 

2.2.  Инсталляция проекта из архива ide_ob.zip.

 

 Проект рассчитан на то, что он располагается на диске C: в директории

C:\IDE_OB. При этом BCB 6.0 должен также располагаться на диске C: в

директориях по умолчанию.

 Разархивируйте ide_ob.zip на диск C: с сохранением структуры каталогов и

загрузите файл проекта в BCB 6.0.

 

3. Входные и выходные данные

 

3.1.  Окна программы

 

3.1.1.  Окно редактирования Edit

 

 Главное окно программы. Содержит текст текущей программы. По команде "Load"

текущая программа загружается в интерпретатор Open Basic.

 При пошаговом исполнении и при останове программы текущая исполняемая строка

выделяется в окне редактирования.

 

3.1.2.  Окно I/O Terminal

 

 Содержит информацию, выводимую операторами PRINT из текущей Basic-программы.

При выполнении оператора INPUT окно I/O Terminal становится модальным и из него

осуществляется ввод информации с клавиатуры. Завершение ввода - клавиша Enter.

Строковые переменные при таком вводе должны заключаться в кавычки.

 Строки этого окна имеют сквозную нумерацию. Максимальное количество строк в

окне - 1000.

 

3.1.3.  Окно Watch

 

 Содержит информацию о просмотре и модификации переменных текущей

Basic-программы.

 Имена переменных, массивов и элементов массивов набираются в отдельных

строках.

 Имена элементов массивов должны указываться с индексами в круглых скобках.

 Обновление информации в окне Watch производится при останове программы,

по кнопке Info или по командам меню окна Watch.

 Кроме главного меню окно Watch имеет Popup меню.

 При отображении переменные отделяются от своего значения знаком равенства.

 Если переменная или массив не существует на данных момент, справа от знака

равенства выводится три вопросительных знака.

 При отображении массивы заключаются в фигурные скобки и их элементы отделяются

запятыми.

 Модификация переменных производится из меню окна Watch или из Popup меню

этого окна.

 Модификация возможна только для переменных и элементов массивов в отдельных

строках.

 Для элементов массивов, отображенных в составе массивов модификация

невозможна.

 Чтобы включить переменную в список просмотра и модификации, необходимо

набрать ее имя в окне Watch и запустить обновление окна Watch командой Info

или через меню окна Watch.

 Чтобы модифицировать переменную необходимо набрать ее новое значение справа от

знака равенства и запустить модификацию окна Watch командой

"Modification current line" или "Modification all list".

 

3.1.4.  Окно Messages

 

 В это окно выводится информация о текущем состоянии IDE OB, об ошибках и

предупреждениях интерпретатора Open Basic и IDE OB. Некоторые критические

сообщения об ошибках имеют цветовое выделение.

 Подробнее о диагностике Open Basic см. описание Open Basic.

 Подробнее о диагностике IDE OB см. следующий пункт.

 Строки этого окна имеют сквозную нумерацию. Максимальное количество строк в

окне - 1000.

 

3.1.4.1.  Диагностика IDE OB в окне Messages

 

1.  "Load OK", - загрузка текущей программы в интерпретатор Open Basic успешно

     завершена (норма)

 

2.  "Load overlay OK", - загрузка текущей программы в интерпретатор Open Basic

     успешно завершена (режим overlay) (норма)

 

3.  "Running ...",     - произведен запуск загруженной программы в

     интерпретаторе Open Basic (норма)

 

4.  "IDE system error - this messages do not use", - не используется при

     нормальной работе

 

5.  "No action release, system error", - не используется при нормальной работе

 

6.  "Get 'Terminated' signal", - тред, в котором исполняется интерпретатор

     Open Basic остановлен (предупреждение)

 

7.  "Load at cursor OK", - загрузка текущей программы в интерпретатор Open

     Basic успешно завершена (режим загрузки от курсора)(норма)

 

8.  "Load at cursor overlay OK", - загрузка текущей программы в интерпретатор

     Open Basic успешно завершена (режим overlay загрузки от курсора) (норма)

 

9.  "Edit file modified or not Basic loaded. Please reload for run" - попытка

     запустить не загруженный или модифицированный после последней загрузки

     файл (предупреждение)

 

10. "Load do not finished within 10sek. Run do not perform" - при выполнении

     команды "Load and Run" загрузка не завершилась в течении 10 сек (истек

     таймаут) (предупреждение или ошибка)

 

11. "Stop by stop code. Stop code=ENDOPERATORDETECT" - программа завершилась

     при обнаружении оператора END (норма)

 

12. "Stop by stop code. Stop code=ENDFILEEND" - программа завершилась из-за

     исчерпания входного потока (норма)

 

13. "Stop by stop code. Stop code=BREAKPOINTEND" - программа завершилась после

     считывания символа '@', который является символом точки останова для

     Open Basic (норма)

 

14. "Stop by stop code. Stop code=NOLOADEND" - запуск невозможет т.к.не была

     выполнена загрузка программы и входной поток не открыт (предупреждение)

 

15. "Stop by stop code. Stop code=BREAKBEFOREOPERATOR" - программа завершилась

     перед выполнением какого-то оператора OB (ошибка)

 

16. "Stop by stop code. Stop code=BREAKAFTEROPERATOR" - программа завершилась

     после выполнения какого-то оператора OB (ошибка)

 

17. "Stop by stop code. Stop code=EOLEND" - программа завершилась после

     исполнения очередной строки (норма)

 

18. "Stop by stop code. Stop code=Unknown stop code" - программа завершилась

     с неизвестным кодом завершения (ошибка)

 

3.2.  Главное меню и инструментальная панель программы

 

3.2.1.  Меню File

 

3.2.1.1.  New

 

 Открывает новый файл для редактирования.

 

3.2.1.2.  Open (F3)

 

 Открывает существующий файл для редактирования.

 

3.2.1.3.  Save (F2)

 

 Сохраняет существующий файл под тем же именем.

 

3.2.1.4.  Save as...

 

 Сохраняет существующий файл под новым именем.

 

3.2.1.5.  Exit

 

 Выход из программы.

 

3.2.2.  Меню Search

 

3.2.2.1.  Find/Replace (Ctrl+L)

 

 Вызывает стандартный диалог Find/Replace. Поиск и замена в текущей программе.

 

3.2.3.  Меню Basic

 

3.2.3.1.  Load (кнопка L)

 

 Загружает текущую программу из окна редактирования в интерпретатор Open Basic.

 Таблицы переменных и массивов предыдущей программы очищаются.

 Старт программы командой "Run" или "Step" будет осуществлен с первой строки.

 

3.2.3.2.  Load overlay (кнопка Lo)

 

 Загружает текущую программу из окна редактирования в интерпретатор Open Basic.

 Таблицы переменных и массивов предыдущей программы не очищаются.

 Старт программы командой "Run" или "Step" будет осуществлен с первой строки.

 

3.2.3.3.  Load at cursor (кнопка Lc)

 

 Загружает текущую программу из окна редактирования в интерпретатор Open Basic.

 Таблицы переменных и массивов предыдущей программы очищаются.

 Старт программы командой "Run" или "Step" будет осуществлен с текущей позиции

курсора.

 

3.2.3.4.  Load at cursor overlay (кнопка Lco)

 

 Загружает текущую программу из окна редактирования в интерпретатор Open Basic.

 Таблицы переменных и массивов предыдущей программы не очищаются.

 Старт программы командой "Run" или "Step" будет осуществлен с текущей позиции

курсора.

 

3.2.3.5.  Run/Continue (кнопка R/C)

 

 Запускает загруженную в интерпретатор Open Basic программу.

 

3.2.3.6.  Load and Run (кнопка L+R)

 

 Загружает текущую программу из окна редактирования в интерпретатор Open Basic

и сразу запускает ее.

 Таблицы переменных и массивов предыдущей программы очищаются.

 Старт программы командой будет осуществлен с первой строки.

 

3.2.3.7.  Stop (кнопка Stop)

 

 Останавливает запущенную программу.

 Текущая исполняемая строка выделяется в окне редактирования.

 После останова выполнение программы может быть продолжено командами

"Run/Continue" или "Step".

 

3.2.3.8.  Abort (кнопка Ab)

 

 Аварийно завершает тред, в котором исполняется текущая программа. Команда

"Abort" должна выполняться только при аварийных зависаниях (если команда

"Stop" не может завершить программу). При выполнении команды "Abort" возможен

крах IDE OB.

 При выдаче команды "Abort" запрашивается подтверждение на выполнение.

 

3.2.3.9.  Step (кнопка Step)

 

 Выполняет одну строку текущей программы и останавливается. Предварительно

программа должна быть загружена командой "Load".

 Текущая исполняемая строка выделяется в окне редактирования.

 

3.2.3.10.  Animate (кнопка An)

 

 Автоматически выполняет команду "Step" с задержкой между выполнениями. Период

задержки задается в команде "Options" и сохраняется в файле конфигурации.

 

3.2.3.11.  Info (кнопка I)

 

 Выводит в окно Messages информацию о текущем состоянии интерпретатора

Open Basic и обновляет информацию в окне Watch.

 

3.2.3.12.  Правила загрузки и запуска

 

 Перед запуском программы по команде "Run/Continue" или "Step" текущая

программа должна быть загружена в интерпретатор Open Basic одной из

команд "Load".

 После выполнения одной из команд "Load" перед запуском нужно дождаться

появления сообщения об успешной загрузке в окне Messages.

 При выполнении команды "Load and Run" на загрузку отводится 10 сек. Если за

10 сек загрузка не завершилась, запуск программы не производится и выводится

диагностика об ошибке (предупреждение).

 Новая программа может быть загружена и запущена в интерпретаторе Open Basic

только после останова или окончания предыдущей запущенной программы.

 Если программа запущена, а в окне редактирования производится модификация

файла, программа немедленно останавливается. Для последующего запуска

необходима перезагрузка программы. Это сделано для правильной синхронизации

текущей строки в отображаемой и запущенной программы при остановах.

 Возможен одновременный запуск нескольких экземпляров IDE OB.

 

3.2.4.  Меню Options

 

3.2.4.1.  Панель Options

 

 Панель содержит два поля:

 

 1. IDE font size       - задает размер шрифта в IDE OB.

 2. Animate period (ms) - задает период для команды "Animate".

 

Оба параметра сохраняются в файле конфигурации.

 

3.2.5.  Меню Windows

 

3.2.5.1.  I/O Terminal

 

 Открывает окно I/O Terminal.

 

3.2.5.2.  Watch

 

 Открывает окно Watch.

 

3.2.5.3.  Messages

 

 Открывает окно Messages.

 

3.2.6.  Меню Help

 

3.2.6.1.  About

 

 Содержит информацию о производителе и версии Open Basic и IDE OB.

 

3.3.  Панель статуса

 

 В первой половине панели статуса отображается информация о соответствии

редактируемого файла и его образа на диске.

 Во второй половине панели статуса отображается информация о соответствии

редактируемого и загруженного в интерпретатор Open Basic файла.

 

3.4.  Меню окна Watch и Popup меню окна Watch

 

3.4.1.  Modification current line

 

 Заносит указанное после знака равенства значение в переменную в строке

курсора. Если преобразование невозможно (например при попытке присвоить

числовой переменной строку), переменная сохраняет старое значение.

 

3.4.2.  Modification all list

 

 Заносит указанное после знака равенства значение в переменную во всех строках

watch листа. Если преобразование невозможно (например при попытке присвоить

числовой переменной строковое значение), переменная сохраняет старое значение.

 

3.4.3.  Save watch list

 

 Сохраняет содержимое окна Watch в файле ide_ob.wtl.

 

3.4.4.  Update watch list

 

 Обновляет содержимое окна Watch.

 

3.5.  Рабочие файлы программы

 

 В процессе работы IDE OB создает три файла:

 

 1. файл конфигурации ide_ob.cfg (двоичный)

 2. файл просмотра и модификации переменных ide_ob.wtl (текстовый)

 3. рабочий файл tmp1.$$$ с текстом текущей запущенной программы (текстовый)

 

 В файле конфигурации ide_ob.cfg при выходе из программы сохраняется текущая

конфигурация IDE OB (форма и расположение окон, константы с панели Options

и т.д.). Если при старте программы файл конфигурации не найден, эти параметры

загружаются значениями по умолчанию.

 В файле просмотра и модификации переменных ide_ob.wtl при выходе из программы

сохраняется текущее содержимое окна Watch.

 Рабочий файл tmp1.$$$ создается в процессе работы и уничтожается при выходе

из программы. В нем хранится текущая программа из окна редактирования,

загруженная в интерпретатор Open Basic.

 

3.6. Подключение пользовательских функций к исполняющей системе интерпретатора Open Basic в IDE OB.

 

 Чтобы подключить пользовательскую функцию к исполняющей системе интерпретатора

Open Basic в IDE OB нужно:

 

 1. В файле userfun.cpp найти реализацию функций winuserfunc, winuserfunc1,

    winuserfunc2, winuserfunc3, winuserfunc4, winuserfunc5, winuserfunc6.

 

 2. По этому образцу написать свою функцию.

 

 3. В конце файла userfun.cpp найти пример подключения функций winuserfunc,

    winuserfunc1, winuserfunc2, winuserfunc3, winuserfunc4, winuserfunc5,

    winuserfunc6 к исполняющей системе интерпретатора Open Basic с помощью

    метода ob_obasic::setfun.

 

 4. По этому образцу подключить свою функцию.

 

 5. Перетранслировать проект.

 

 6. Написать *.bas программу с использованием своей функции.

 

 7. Запустить эту *.bas программу на исполнение.

 

3.6.1   Описание пользовательских функций, подключенных к IDE OB

 

 

 

Примечание:

 

Функции, описанные в этом разделе определены и подключены к исполняющей системе Open Basic только в IDE OB. В консольной Open Basic версии они не определены и не подключены.

 

 

 

 

Имя С++ функции

Имя Basic функции (одна С++ функция может подключаться под разными именами к исполняющей системе Open Basic)

Описание функции

winuserfunc

1.    Win_User_Function%

2.    MessBoxExample%

Вызывает MessageBox и возвращает в Basic программу код нажатой клавиши (No=0, Yes=1, Cancel=2)

winuserfunc1

1.    Win_User_Function1%

2.    CaptionMessBoxExample%

Вызывает MessageBox, в качестве заголовка и сообщения которого используется первый и второй строковый параметр функции. Возвращает в Basic программу код нажатой клавиши (No=0, Yes=1, Cancel=2)

winuserfunc2

1.    Win_User_Function2

2.    FloatQueryAndReturn

Вызывает диалог запроса числа с плавающей запятой. После ввода возвращает число с плавающей запятой в Basic программу. Если в процессе ввода допущена ошибка, возвращает ноль и печатает сообщение.

winuserfunc3

1.    Win_User_Function3$

2.    StaticStringReturn$

Вызывает диалог запроса целого числа в диапазоне 0-9. После ввода рассматривает это число как индекс во внутреннем массиве строк и возвращает строку с указанным индексом в Basic программу. Если в процессе ввода допущена ошибка, возвращает предопределенную строку с сообщением об ошибке. Пример возврата строки, размещенной в статической памяти.

winuserfunc4

1.    Win_User_Function4$

2.    DynamicStringReverse$

Вызывает диалог запроса строки. После ввода возвращает строку в Basic программу. Пример возврата строки, размещенной в куче оператором new.

winuserfunc5

MainFormResize%

Принимает два аргумента с плавающей запятой. Первый аргумент это изменение высоты главного окна IDE OB (в процентах со знаком) от текущего значения. Второй аргумент это изменение ширины главного окна IDE OB (в процентах со знаком) от текущего значения. При вызове без аргумента устанавливает исходный размер главного окна IDE OB. Позволяет получить забавный эффект “ползающего” окна, когда ее вызывают в цикле с разными значениями параметров (см. пример test0.bas)

winuserfunc6

SLEEP%

Осуществляет задержку на количество миллисекунд, указанных в ее первом аргументе. Тип аргумента - целое.

winuserfunc7

ShellExecute%

Выполняет вызов Win API ShellExecute. В качестве аргумента ShellExecute используется первый строковый аргумент Basic-функции. В примере test18.bat эта функция используется для запуска экземпляров программ notepad.exe и wordpad.exe.

 

 

 

3.7.  Особенности запуска интерпретатора Open Basic в треде (thread) Windows

 

 В программе IDE OB метод "run" интерпретатора Open Basic запускается в

отдельном треде.

 В программе IDE OB есть общие объекты VCL, доступ к которым осуществляется

из главного треда и из треда интерпретатора Open Basic. Примером такого объекта

может служить окно Messages. Вывод диагностики в него осуществляется и из

главного треда, и из треда интерпретатора Open Basic.

 Для предотвращения коллизий обращение к таким общим объектам VCL из

пользовательских функций необходимо осуществлять через метод Synchronize.

 Если объект VCL не используется в других тредах, обращение к нему может быть

оформлено без метода Synchronize.

 В файлах userfun.cpp и UNIT10.h можно найти примеры реализации функций доступа

к общим объектам VCL через метод Synchronize (например при печати в окно

Messages).

 

Сайт создан в системе uCoz