Рейтинг:  5 / 5

Звезда активнаЗвезда активнаЗвезда активнаЗвезда активнаЗвезда активна
 

 

Часто задаваемые вопросы по Alaska Xbase++

 

Что такое Xbase++?

Сколько стоит Xbase++? Где я могу найти условия его поставки?

Что включено в комплект поставки Xbase++?

Где я могу найти условия технической поддержки Xbase++?

Я ознакомился с информацией по Xbase++ и у меня возникли вопросы. Какие дополнительные источники информации вы можете мне порекомендовать?

Существует ли демо-версия Xbase++ и где ее взять?

Чем демо-версия Xbase++ отличается от полнофункциональной?

Существует ли документация к Xbase++ на русском языке?

Насколько сложен перевод Clipper-приложений под Xbase++?

Нужно ли мне вносить какие-либо изменения в исходные тексты моей программы, чтобы перекомпилировать ее с Xbase++?

Если я перекомпилирую мое Clipper-приложение с помощью Xbase++, получу ли я GUI-приложение без необходимости внесения каких-либо изменений в исходные тексты?

Насколько набор функций, синтаксис и структура языка равнозначны Clipper, т.е. если взять уже готовые программы на Clipper 5 (без каких-либо библиотек) и перекомпилировать, то сколько ошибок "вылезет" из-за отсутствия в Xbase++ той или иной функции или процедуры?

Существуют ли библиотеки для Xbase++, совместимые с CA-Clipper Tools?

Существуют ли демо-версия XbToolsIII?

Сколько стоит XbToolsIII? Не могу найти цену в вашем прайс-листе.

Возможна ли совместная работа Xbase++ с Advantage Database Server?

Существуют ли демо-версия ADS-DBE?

Мы планируем перевод наших Clipper-приложений в Windows с помощью Xbase++, и в Клиент/Сервер с помощью Advantage Database Server. Какой комплект ПО нам необходим?

Если я покупаю профессиональную лицензионную подписку на Xbase++, мне нужно покупать отдельную лицензию ADS-DBE?

Какова стабильность индексов  (NTX и CDX) по сравнению с Clipper, особенно в  многопользовательском режиме работы программы?

Какие дополнительные средства разработки желательно иметь вместе с Xbase++?

Есть ли у Xbase++ среда визуальной разработки типа Delphi?

Существуют ли средства создания отчетов для Xbase++?

Совместим ли Xbase++ с SixDriver?

С какими СУБД, кроме Advantage Database Server (ADS), может работать Xbase++?

Как из под Xbase++ можно обратиться к Advantage Local Server (ALS)?

Что нужно сделать для корректной работы Xbase++ и Advantage Local Server (ALS) с русскими буквами?

Недавно на вашем сайте появились ссылки на библиотеку ASINET. Что это за библиотека и сколько она стоит?

Xbase++ действительно создает исполнимый код или, как и Clipper, P-код?

Multisoft планирует выпустить Visual FlagShip (VFS). Что лучше: Xbase++ или VFS?

Корректно ли Xbase++ работает с русским языком?

Поддерживается ли кириллица в индексах?

Как в Xbase++ осуществляется поддержка русского языка в DBF файлах, созданных под DOS (необходима ли совместимость с предыдущими программами, работающими под DOS)?

Что такое "лицензионные подписки на Xbase++" - Foundation Subscription и Professional Subscription?

Что такое PDR (Problem Description Report)?

Какие вы можете дать рекомендации по инсталляции Xbase++?

Почему после перевода Clipper приложений под Xbase++ (в текстовый режим) в записях нет русских букв?

Почему после перевода Clipper приложений под Xbase++ (в графический режим) в записях нет русских букв?

Мы тестируем Xbase++ v. 1.82 Trial в режиме VIO. Как добиться введения в Get русской <р> ( код 224), которая преобразовывается <INKEY> и <AppEvent> в <End>?

Мы тестируем Xbase++ v. 1.82 Trial в VIO и гибридном режимах. Как обеспечить вывод русской <Н> ( код 141) в операторах <?> ?

Почему Xbase++ приложения под Windows 95 работают очень медленно (значительно медленнее Clipper)? Каким образом можно повысить скорость работы Xbase++ приложений?

Я перекомпилировал Clipper-приложение для работы в защищенном режиме с помощью Xbase++ и XbTools, и в результате получил exe-файл размером 7 MB. При использовании Clipper и Clipper Tools, размер exe-файла - 1,5 MB. Можно ли как-то уменьшить размер exe-файла в первом случае?

Могу ли я поместить иконку Xbase++ программы в панель задач?

DBU в графическом режиме работает некорректно: выбор действий из меню невозможен.

Почему Set Color для окна Wopen() не сохраняет своего значения при переключении между окнами Wselect()?

Конструкция do while c выражением типа s>ns.or.s1<ns1.or.k>nk.or.k1<nk1 при трансляции приводит к выдаче сообщения ххх.prg(..:0): error XBT0251: Reserved keyword.

Почему при использовании оконных функций XbToolsIII программа аварийно завершается?

COPY TO xxx SDF приводит к загрузке DLL, содержащего SDFDBE. Выгрузка этого DLL не осуществляется, что приводит к ошибке во время исполнения DbeLoad (SDFDBE), необходимого для дальнейшей работы с xxx. Что делать?

Мы раньше работали со своими фонтами, загружая их из текстового файла с помощью функции CT FontLoad(). Сейчас мы не можем этого сделать: функция FontLoad возвращает не 0.

Список зарезервированных ключевых слов, приведенный в документации, неполон (DIR).

Как мне откомпилировать PRG модуль, если в этом модуле имеется ссылка на поле с именем hidden в базе данных? Компилятор не пропускает, говорит, что это зарезервированное слово, а оно у меня в базе проходит как имя поля и, соответственно, в программе к нему есть обращение.

Попытка оформить DBU в виде DLL с использованием Blinker приводит к аварии: BLINKER : 1161 : more than one NAME or LIBRARY module definition command.

Каковы различия в использовании функций из динамических и статических DLL?

Можно ли в Xbase++, как и в Clipper, прилинковать программу на C?

При конвертации Clipper-приложения в xbpcrt приложение, символы типа "+" и "-" отображаются некорректно. Что посоветуете?

В Xbase++ версии 1.3 функция Upper() некорректно работала с русскими символами. Решена ли эта проблема в текущей версии Xbase++?

Я хочу пользоваться функциями из Windows 32 DLL. Я знаю, какие у них параметры, но у меня не получается их передать, так как они используют C++ структуры. Как мне вызывать эти функции из Xbase++?

Я выполняю Xbase++ программу в текстовом режиме из файл-менеджера FAR. После завершения программы, FAR не восстанавливает панель экрана и теряет курсор. Что делать?

 

horizontal rule

Что такое Xbase++?

Alaska Xbase++ компании Alaska Software (Германия) - это не только 32-ух битный компилятор для перевода Clipper-приложений в Windows, но и основанный на языке Clipper самостоятельный пакет разработки профессиональных Windows 32-bit приложений, в который включены следующие инструменты разработки:

 

bullet

язык программирования;

bullet

компилятор (xpp);

bullet

линкер (alink);

bullet

менеджер проектов (pbuild);

bullet

дизайнер экранных форм (xppfd);

bullet

отладчик (xppdbg);

bullet

вспомогательные утилиты.

 

Более подробную информацию по Alaska Xbase++ вы можете найти здесь.

Сколько стоит Xbase++? Где я могу найти условия его поставки?

Цены на Alaska Xbase++ и утилиты, а также условия поставки продуктов (включая комплект поставки, сроки поставки и структуру заказа) опубликованы на на страничке "Alaska Xbase++: Прайс-Лист" нашего сайта.

Что включено в комплект поставки Xbase++?

В комплект поставки Alaska Xbase++ включены: дистрибутив продукта, исчерпывающий комплект документации на английском языке в формате .HLP и примеры программирования, а также свидетельство о регистрации продукта у разработчика с идентификационным номером пользователя и индивидуальным серийным номером продукта. Печатная документация (в виде книжки) в комплект поставки Alaska Xbase++ не входит.

Где я могу найти условия технической поддержки Xbase++?

Условия технической поддержки Alaska Xbase++ можно найти здесь.

Я ознакомился с информацией по Xbase++ и у меня возникли вопросы. Какие дополнительные источники информации вы можете мне порекомендовать?

 

bullet

Посмотрите страничку "Alaska Xbase++: Полезные ссылки".

bullet

Ознакомьтесь с русскоязычным документом 'Alaska Xbase++: Быстрый Старт', созданным нами по материалам проводимого нами раньше курса обучения работе с Alaska Xbase++ 'Быстрый Старт с Xbase++'. Этот документ включает комплект информации, необходимой на начальном этапе перехода с Clipper под Xbase++.

bullet

Поработайте с демо-версией Alaska Xbase++, с помощью которой вы сможете познакомиться с продуктом, оценить его возможности и определить, действительно ли он является именно тем инструментом разработки, который вам необходим. Демо-версию Alaska Xbase++ можно скачать через Интернет или заказать на CD.

 

Чем демо-версия Xbase++ отличается от полнофункциональной?

Демо-версия Alaska Xbase++ имеет ограничение по времени работы - 30 дней с момента инсталляции. Любой вызов компилятора, линкера и созданного выполняемого модуля сопровождается отображением сообщения о том, что это демо-версия/сделано с помощью демо-версии. По функциональным возможностям демо-версия Alaska Xbase++ от полного продукта не отличается.

Существует ли документация к Xbase++ на русском языке?

Доступна русскоязычная документация к Alaska Xbase++ v.1.9 в формате MS Word.

Насколько сложен перевод Clipper-приложений под Xbase++?

Alaska Xbase++ практически полностью поддерживает Clipper. Основные отличия Alaska Xbase++ от Clipper вы можете найти здесь. Для перехода в терминальный (консольный) режим Windows с помощью Alaska Xbase++, вам достаточно просто перекомпилировать свои Clipper-программы, ПРАКТИЧЕСКИ не меняя исходного текста. Переход в GUI (графический режим) значительно сложнее - придется переделывать диалог с пользователем. 

Посмотрите два примера в папке Migrate и ознакомьтесь с документом 'Alaska Xbase++: Быстрый Старт', в котором для примера описывается перевод под Alaska Xbase++ популярной Clipper-утилиты DBU.

Нужно ли мне вносить какие-либо изменения в исходные тексты моей программы, чтобы перекомпилировать ее с Xbase++?

Существует несколько отличий между Clipper и Alaska Xbase++, которые вы можете найти здесь. Из-за них, некоторые приложения могут быть перекомпилированы без единого изменения, а в некоторые все-таки придется внести небольшие изменения. Все зависит от вашего стиля программирования.

Если я перекомпилирую мое Clipper-приложение с помощью Xbase++, получу ли я GUI-приложение без необходимости внесения каких-либо изменений в исходные тексты?

Нет. Alaska Xbase++ поддерживает 3 режима: терминальный (консольный), гибридный и GUI. Терминальный является режимом по умолчанию, он выглядит как DOS. Clipper-приложение, перекомпилированное с использованием Alaska Xbase++, будет работать именно в этом режиме. Другие режимы достигаются программированием. Гибридный режим тоже эмулирует консольное окно, но при этом позволяет вставку GUI-компонентов, таких как меню, поля списка, поля редактирования.

Насколько набор функций, синтаксис и структура языка равнозначны Clipper, т.е. если взять уже готовые программы на Clipper 5 (без каких-либо библиотек) и перекомпилировать, то сколько ошибок "вылезет" из-за отсутствия в Xbase++ той или иной функции или процедуры?

В Alaska Xbase++ отсутствуют следующие функции: AltD() FkLabel() FkMax() NoSnow() ReadKey() Word(). Существуют отличия и в синтаксисе языка, например, головной модуль должен называться Main, а Parameters надо ставить после Local и Static. Иначе работают и макроподстановки в кодовых блоках. Насколько серьезны отличия - решать вам, все зависит от вашего уровня программирования.

Более подробную информацию об отличиях Alaska Xbase++ и Clipper вы можете найти здесь.

Существуют ли библиотеки для Xbase++, совместимые с CA-Clipper Tools?

Да. Библиотека Alaska XbToolsIII компании Alaska Software совместима с CA-Clipper Tools. К сожалению, демо-версии Alaska XbToolsIII не существует, разработчики ее выпуск не планируют.

Сколько стоит XbToolsIII? Не могу найти цену в вашем прайс-листе.

Лицензия Alaska XbToolsIII распространяется в составе лицензионных подписок на Xbase++. Приобретая любую из лицензионных подписок, вы получаете лицензию Alaska XbToolsIII текущей версии с возможностью получения 3 последующих обновленных версий продукта.

Возможна ли совместная работа Xbase++ с Advantage Database Server?

Механизм управления базами данных Alaska ADS-DBE компании Alaska Software обеспечивает доступ Alaska Xbase++ приложений к Advantage Database Server. К сожалению, демо-версии Alaska ADS-DBE не существует, разработчики ее выпуск не планируют.

Существует также SQL класс для Xbase++, специально разработанный фирмой СофтПро для доступа к Advantage Database Server и Advantage Local Server со StreamlineSQL через Advantage Client Engine (ACE32.DLL).

Если я покупаю профессиональную лицензионную подписку на Xbase++, мне нужно покупать отдельную лицензию ADS-DBE?

Нет! Приобретая профессиональную лицензионную подписку, вместе с другими ее компонентами вы получаете лицензию Alaska ADS-DBE текущей версии с возможностью получения обновленных версий продукта в течение 12 месяцев с момента его регистрации в Alaska Software.

Мы планируем перевод наших Clipper-приложений в Windows с помощью Xbase++, и в Клиент/Сервер с помощью Advantage Database Server. Какой комплект ПО нам необходим?

Вам необходим следующий комплект ПО:

 

bullet

Advantage Database Server

bullet

Alaska Xbase++

bullet

Alaska ADS-DBE

 

Если для создания ваших Clipper-приложений вы использовали CA-Clipper Tools, вам также потребуется Alaska XbToolsIII. Для работы с ADS одновременно и из Clipper-программ и из Alaska Xbase++ программ, что может потребоваться при постепенном переходе с Clipper под Alaska Xbase++ (имеется ввиду перевод в Alaska Xbase++ не всех приложений сразу), вам необходим Advantage CA-Clipper RDD. При использовании же Alaska Xbase++ с ADS, Advantage CA-Clipper RDD не требуется.

Какова стабильность индексов  (NTX и CDX) по сравнению с Clipper, особенно в  многопользовательском режиме работы программы?

Алгоритм работы Alaska Xbase++ с базами данных ничем не отличается от алгоритма Clipper. Alaska Xbase++ не является Клиент/Сервер решением и работает по технологии Файл/Сервер. Комплект из Advantage Database Server и Alaska ADS-DBE позволяет организовать работу по технологии Клиент/Сервер и полностью устранить проблему разрушения индексов.

Какие дополнительные средства разработки желательно иметь вместе с Xbase++?

Для быстрого перевода существующих Clipper-приложений под Alaska Xbase++ с минимумом изменений мы рекомендуем использовать библиотеку eXPress++. Что касается ПОЛНОГО перевода Clipper приложения в Windows GUI с использованием Alaska Xbase++, мы не можем дать конкретные рекомендации, не зная ваших задач. Существует множество утилит для Alaska Xbase++ различного назначения, все зависит от того, какие конкретно цели вы преследуете. Перечень распространяемых нами утилит для Alaska Xbase++ вы можете найти здесь.

Есть ли у Xbase++ среда визуальной разработки типа Delphi?

В Alaska Xbase++ включена среда визуальной разработки - Дизайнер Форм. Вы можете разрабатывать формы с помощью нее, а затем генерировать программный код этих форм. Эта среда облегчает нелегкий труд разработчика, но сравнивать ее по возможностям с IDE Delphi, конечно, нельзя.

Alaska Software объявила о грядущем выпуске Visual Xbase++. Visual Xbase++ - среда быстрой разработки приложений для Alaska Xbase++ языка, включающая менеджер проектов, редактор исходных текстов, визуальный отладчик, визуальный дизайнер, средство создания модели базы данных и другие инструменты, значительно упрощающие разработку приложений.

Существуют ли средства создания отчетов для Xbase++?

Да. Разработчики Alaska Xbase++ рекомендуют использовать генератор отчетов List & Label.

Совместим ли Xbase++ с SixDriver?

В Alaska Xbase++ не используется парадигма замещаемого драйвера баз данных (RDD), как это было в Clipper, в нем применяется концепция механизмов управления базами данных (DBE или DatabaseEngine), которые могут заменяться в зависимости от выбранного типа базы данных. Поэтому библиотеки и RDD, написанные для Clipper, не являются пригодными для использования в Alaska Xbase++. Alaska Xbase++ совместим с базами данных SixDriver и поддерживает CDX-индексы, но не поддерживает набор функций SixDriver. При использовании Alaska Xbase++ совместно с Alaska ADS-DBE ОСНОВНЫЕ функции SixDriver поддерживаются.

С какими СУБД, кроме Advantage Database Server (ADS), может работать Xbase++?

С помощью Alaska ODBC-DBE компании Alaska Software вы получите доступ к электронным таблицам MS Excel, базам данных MS Access, MS SQL Server, Oracle или к любой другой SQL СУБД.  Единственным требованием является наличие установленного ODBC драйвера.

Как из под Xbase++ можно обратиться к Advantage Local Server (ALS)?

(информация любезно предоставлена Константином Лебедевым, фирма "ПЛАТАН Компонентс")

Необходимо вызвать AdsSetServerType(7) из ACE.DLL и иметь в доступном месте: ADSLOC32.DLL, ACE.DLL, AXCWS32.DLL, ADSLOCAL.CFG, ANSI.CHR, EXTEND.CHR. Потом обычным образом создается DAC-объект отдельно для локального соединения.

Что нужно сделать для корректной работы Xbase++ и Advantage Local Server (ALS) с русскими буквами?

Для корректной работы Xbase++ и Advantage Local Server с русскими буквами, необходимо чтобы:
1. В файле adslocal.cfg были строчки:
    ANSI_CHAR_SET=RUSSIAN
    OEM_CHAR_SET=RUSSIAN
2. В Xbase++ программе присутствовала строчка:
    SET COLLATION TO SYSTEM

Недавно на вашем сайте появились ссылки на библиотеку ASINET. Что это за библиотека и сколько она стоит?

Эта библиотека компании Alaska Software включает функции и классы для поддержки основных Internet-протоколов: TCP/IP, POP3, SMTP, HTTP, FTP. Вы можете передавать файлы через Internet, обмениваться сообщениями по e-mail или создавать свои собственные WWW-сервера. Лицензия Alaska ASINET распространяется ТОЛЬКО в составе профессиональной лицензионной подписки на Xbase++. Приобретая эту лицензионную подписку, вместе с другими ее компонентами вы получаете лицензию Alaska ASINET текущей версии с возможностью получения обновленных версий продукта в течение 12 месяцев с момента его регистрации в Alaska Software.

Xbase++ действительно создает исполнимый код или, как и Clipper, P-код?

По заявлению разработчика, Alaska Xbase++ создает некую оптимизированную смесь исполнимого кода и P-кода.

Multisoft планирует выпустить Visual FlagShip (VFS). Что лучше: Xbase++ или VFS?

При использовании VFS вы получаете C код, из которого с помощью компилятора C вы получаете EXE. Если вы хорошо знаете C, вам, может быть, больше понравится VFS. Alaska Xbase++ имеет синтаксис Clipper ООП, все те же типы данных (включая блоки кода и встроенный макротранслятор),  мощный механизм работы с графикой, драйвера для работы с базами данных, которые можно подгрузить/выгрузить и много-много другого! Таким образом, если вам нравится Clipper, ответ однозначен - Alaska Xbase++.

Корректно ли Xbase++ работает с русским языком?

Все замеченные нами проблемы с Xbase++ и русским языком, а также варианты их решения описаны в этом документе - эти проблемы достаточно легко решаются. Количество проблем с русским языком значительно уменьшится при использовании Xbase++ в связке с сервером баз данных Advantage Database Server или со свободно (бесплатно) распространяемым механизмом управления Advantage Local Server.

Поддерживается ли кириллица в индексах?

"Русские" данные в базах данных и индексах хранятся без проблем (для построения индексов, аналогичных Clipper, укажите SET COLLATION TO ASCII).

Как в Xbase++ осуществляется поддержка русского языка в DBF файлах, созданных под DOS (необходима ли совместимость с предыдущими программами, работающими под DOS)?

Весьма просто: отображение информации зависит от выбранного вами шрифта (если, конечно, ваше приложение работает в GUI режиме). Данные в базе данных по умолчанию хранятся в OEM (DOS) кодировке. Правила сортировки (индексации) надо задавать ASCII. Драйвер клавиатуры лучше взять стандартный от Windows.

С хранением в базе данных проблем нет, т.к. русские символы - это всего лишь символы, только из второй половины кодовой таблицы. С сортировкой в индексах проблем пока не замечено. Отображение на экране: если вы создаете консольное 32-ух битное приложение, которое внешне выглядит также, как в DOS, оно так же и будет выглядеть, если вы используете GUI - то для отображения вы используете стандартные шрифты, существующие для данной платформы. Если у вас есть русские шрифты - проблем нет.

Что такое "лицензионные подписки на Xbase++" - Foundation Subscription и Professional Subscription?

Информацию о том, что такое "лицензионные подписки на Xbase++", какие продукты включены в их состав, а также ответы на часто задаваемые вопросы по подпискам вы можете найти здесь.

Что такое PDR (Problem Description Report)?

PDR - это отчет-описание проблемы или ошибки. Для каждой замеченной пользователем проблемы или ошибки, о которой пользователь сообщил в Alaska Software или их региональному дистрибьютору, "открывается" новый PDR с уникальным ID. Этот PDR ID сообщается пользователю, заметившему проблему или ошибку. Как только выходит новая версия продукта, в которой устранена проблема или исправлена ошибка, PDR "закрывается", а пользователю высылается соответствующее уведомление о закрытии этого PDR'а. Вы можете отслеживать статусы интересующих вас PDR'ов на web-сайте Alaska Software в разделе WebKB.

Для поиска PDR'a по номеру, выберите ссылку Click here to access the WebKB by article (PDR) ID, введите в поле Query for PDR ID  номер интересующего вас PDR'а и нажмите кнопку Query. Вы получите детальный отчет по интересующему вас PDR'у и его текущий статус (закрыт он или нет, имеются ли способы "обойти" эту ошибку). Кроме того, нажав на кнопку "Boost PDR Priority", вы можете проголосовать за приоритетность закрытия PDR'а, т.е. в новых версиях продуктов в первую очередь будут закрыты те PDR'ы, за которые проголосовало большее количество пользователей.

Поиск PDR'a по ключевому слову осуществляется по ссылке Click here to access the WebKB Full Text Search.

Какие вы можете дать рекомендации по инсталляции Xbase++?

Мы можем порекомендовать после установки Alaska Xbase++ привести структуру дерева директорий к привычной вам Clipper-структуре. Имейте в виду, что несущие одинаковую нагрузку #include файлы Alaska Xbase++ и Clipper называются одинаково. Во время установки создаются bat-файлы, которые позволят вам несколько упростить процесс попеременной работы Clipper <-> Alaska Xbase++.

Почему после перевода Clipper приложений под Xbase++ (в текстовый режим) в записях нет русских букв?

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

Для этого в файле '\ALASKA\XPPW32\SOURCE\SYS\APPSYS.PRG' строчку 'oCrt:FontName := "Alaska Crt"' замените на (например) 'oCrt:FontName := "Terminal"'. 

Вместо шрифта "Terminal" можно использовать любой другой шрифт, поддерживающий кириллицу в OEM кодировке. После внесения изменений, необходимо файл "APPSYS.PRG" прилинковать к приложению.

Почему после перевода Clipper приложений под Xbase++ (в графический режим) в записях нет русских букв?

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

Пример:
oXbp:= XbpDialog():new( ,,aPos, aSize,, .F. )
oXbp:drawingArea:setFontCompoundName( "12.Arial Cyr Bold" )

Мы тестируем Xbase++ v. 1.82 Trial в режиме VIO. Как добиться введения в Get русской буквы "р" (код 224), которая преобразовывается <INKEY> и <AppEvent> в <End>?

Эта проблема существует только под Windows 98. Вариант(ы) решения проблемы можно найти здесь.

Мы тестируем Xbase++ v. 1.82 Trial в VIO и гибридном режимах. Как обеспечить вывод русской буквы "Н" ( код 141) в операторах <?> ?

Вариант(ы) решения проблемы можно найти здесь.

Почему Xbase++ приложения под Windows 95 работают очень медленно (значительно медленнее Clipper)? Каким образом можно повысить скорость работы Xbase++ приложений?

Alaska Xbase++ создаёт 32-ух разрядные приложения, в связи с чем, для получения выигрыша в производительности, необходимо использовать приложение под управлением 32-ух разрядных операционных систем. К таким системам относятся Windows NT/2000. Windows 95/98 не относятся к 32-ух разрядным ОС, они только эмулируют 32-ух разрядность. 

Для повышения скорости работы Alaska Xbase++ приложений Alaska Software рекомендует использовать Alaska Profiler.

Я перекомпилировал Clipper-приложение для работы в защищенном режиме с помощью Xbase++ и XbTools, и в результате получил exe-файл размером 7 MB. При использовании Clipper и Clipper Tools, размер exe-файла - 1,5 MB. Можно ли как-то уменьшить размер exe-файла в первом случае?

Для уменьшения размера exe-файла, вы можете вынести часть функций в DLL-библиотеки. Как правило, одними и теми же функциями пользуются несколько приложений. т.е. таким образом можно значительно уменьшить размер всего  пакета приложений в целом. В любом случае, не переживайте, в Windows нет ограничений на размер исполнимого файла.

Могу ли я поместить иконку Xbase++ программы в панель задач?

Да, с помощью свободно распространяемой библиотеки TBAR (разработчик - Thomas Braun). Вы можете скачать ее здесь. Там же вы также найдете другие свободно распространяемые утилиты для Alaska Xbase++, например, RegClass - класс Alaska Xbase++ для доступа к системному реестру Windows.

DBU в графическом режиме работает некорректно: выбор действий из меню невозможен.

Achoice() с пользовательской функцией работает по-разному в текстовом и графическом режимах: во время инициализации, Achoice() в графическом режиме несколько раз передает управление в пользовательскую функцию, указывая mode = 3;  в текстовом режиме этого не происходит.  "Почему?" - вопрос передан разработчику.  "Как быть?" - очистить буфер клавиатуры (Clear TypeaHead) перед вызовом Achoice().

Почему Set Color для окна Wopen() не сохраняет своего значения при переключении между окнами Wselect()?

Работа с цветами в Wopen()/Wselect() Alaska Xbase++ и Alaska XbToolsIII отличается от Clipper и CA-Clipper Tools. Wopen(); Set Color to <color> надо заменить на Wopen(,,,,,<color>,<cursor>).

Конструкция do while c выражением типа s>ns.or.s1<ns1.or.k>nk.or.k1<nk1 при трансляции приводит к выдаче сообщения ххх.prg(..:0): error XBT0251: Reserved keyword.

По заявлению разработчика это - ошибка препроцессора. Рекомендуемые действия: вставьте пробелы между лексемами (достаточно разбить длинную строку выражения на несколько частей) или уберите do (оставьте while), чтобы строка не обрабатывалась препроцессором.

Почему при использовании оконных функций XbToolsIII программа аварийно завершается?

Скорее всего вы забыли активизировать оконную систему функцией WInit().

COPY TO xxx SDF приводит к загрузке DLL, содержащего SDFDBE. Выгрузка этого DLL не осуществляется, что приводит к ошибке во время исполнения DbeLoad (SDFDBE), необходимого для дальнейшей работы с xxx. Что делать?

Загрузить все потенциально необходимые DBE еще в dbesys.prg.

Мы раньше работали со своими фонтами, загружая их из текстового файла с помощью функции CT FontLoad(). Сейчас мы не можем этого сделать: функция FontLoad возвращает не 0.

Если вы внимательно посмотрите документацию, то увидите, что в среде Windows эта функция не реализована. Путь решения проблемы достаточно прост: загрузите фонт перед запуском программы с помощью любой DOS утилиты, например, частью вашей Clipper программы.

Список зарезервированных ключевых слов, приведенный в документации, неполон (DIR).

Да, это - так. Мы также столкнулись с тем, что STATIC, WHILE, ENDDO, ENDCASE, ENDIF должны быть помечены символом * (аббревиатура, идентифицируются по первым 4 символам). Вероятно, что этот список пополнится еще.

Как мне откомпилировать PRG модуль, если в этом модуле имеется ссылка на поле с именем hidden в базе данных? Компилятор не пропускает, говорит, что это зарезервированное слово, а оно у меня в базе проходит как имя поля и, соответственно, в программе к нему есть обращение.

Слово HIDDEN действительно является зарезервированным и используется в описании методов и переменных классов. Если у вас есть поле базы данных с таким именем, обращайтесь к нему по алиасу - ошибка возникать не будет. Если у вас есть переменная с таким именем, измените ее имя во всех местах, где встречается обращение к этой переменной. Если замена нежелательна, например, обращение к ней идет в большом количестве мест, сделайте подмену на уровне препроцессора.

Попытка оформить DBU в виде DLL с использованием Blinker приводит к аварии: BLINKER : 1161 : more than one NAME or LIBRARY module definition command

NAME - имя одной из функций DBU - совпадает с зарезервированным словом синтаксиса DEF файла Blinker. Здесь происходит нестыковка Alaska Xbase++ и Blinker. Ошибка - в Blinker.

Каковы различия в использовании функций из динамических и статических DLL?

Статические DLL: ---------------- - опция XPP для создания DLL - /dll - линковка должна включать полученную import libary (LIB) - вызов функции производится по ее имени - DLL должен быть доступен (рядом с .EXE или по PATH)
Динамические DLL: ---------------- - опция XPP для создания DLL - /dll:DYNAMIC - линковка НЕ должна включать полученную import libary (LIB) - вызов функции производится функцией DllCall(...) - DLL может располагаться в любом месте (при загрузке допустимо указание полного пути доступа).

Можно ли в Xbase++, как и в Clipper, прилинковать программу на C?

Да. Alaska Xbase++, как и Clipper, имеет систему расширения, которая отличается от Clipper в связи с работой в 32-ух разрядной среде. Перевод ваших C-программ не будет сложным.

При конвертации Clipper-приложения в xbpcrt приложение, символы типа "+" и "-" отображаются некорректно. Что посоветуете?

Если вы включите:
SET CHARSET TO ANSI
все нормализуется.

В Xbase++ версии 1.3 функция Upper() некорректно работала с русскими символами. Решена ли эта проблема в текущей версии Xbase++?

Да. С выпуском Alaska Xbase++ 1.7 функции Upper() и Lower() корректно работают с русскими символами. Достаточно вставить в программу 'SET COLLATION TO SYSTEM'.

Я хочу пользоваться функциями из Windows 32 DLL. Я знаю, какие у них параметры, но у меня не получается их передать, так как они используют C++ структуры. Как мне вызывать эти функции из Xbase++?

Для этого вам нужна библиотека BAP, которая позволит вам создать необходимые структуры. Библиотеку можно свободно скачать с сайта Alaska Software, раздел 'File Library [Downloads/Uploads]', подраздел 'ACSN'.

Я выполняю Xbase++ программу в текстовом режиме из файл-менеджера FAR. После завершения программы, FAR не восстанавливает панель экрана и теряет курсор. Что делать?

Для того, чтобы этого избежать, вам необходимо включить в исходный текст вашего приложения следующие строчки:

#include "dll.ch"
Static hBuffer:=0

init proc InitX()
     // save active screen buffer handle, -11 = STD_OUTPUT_HANDLE
     hBuffer:=DllCall("Kernel32",DLL_STDCALL,"GetStdHandle",-11)
return

exit proc ExitX()
     // restore initial active screen buffer
     DllCall("Kernel32",DLL_STDCALL,"SetConsoleActiveScreenBuffer", hBuffer)
return

 

 

 

 

 

-