On-line: tnsr2, гостей 0. Всего: 1 [подробнее..]
АвторСообщение
постоянный участник


Пост N: 1
Зарегистрирован: 21.04.09
ссылка на сообщение  Отправлено: 21.04.09 15:43. Заголовок: Помогите советом начинающему...


Тут вот надумал переползти на xHarbour. Возникла следующая проблема: имена всех функций и подпрограмм дополняются префиксом HB_FUN_. А можно ли этого избежать так, чтобы остались родные, начальные имена. У меня весь софт построен на скриптах, в которых уже стоят вызовы функций и процедур по привычным, родным именам. И перелопатить везде в 5000 текстовых файлах-скриптах вызовы функций и поменять на новые - задача крайне утомительная с непонятной перспективой на успех.

Спасибо: 0 
ПрофильЦитата Ответить
Ответов - 294 , стр: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 All [только новые]


Администратор




Пост N: 1097
Зарегистрирован: 23.05.05
ссылка на сообщение  Отправлено: 21.04.09 15:54. Заголовок: Этот префикс предназ..


Этот префикс предназначен только для функций на С.
Для харбор-функций используются "родные" имена без префикса
А что это за скрипты ? На каком языке ? Если они обрабатывались клиппером, то с таким же успехом обработаются и харбором.

Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник


Пост N: 2
Зарегистрирован: 21.04.09
ссылка на сообщение  Отправлено: 21.04.09 16:47. Заголовок: Очень обнадеживающий..


Очень обнадеживающий ответ. Буду надеяться, что так и есть. Продолжил эксперимент. И тут на вызов функции AX_LOADED из ADS пишет, что отсутствует _HB_FUN_AX_LOADED. Присоединял при линковке и rddads.lib и ace32.lib. Ничего не поменялось. К неразрешенным отнесла и другие вызовы стандартной ADS. И что теперь делать? Про скрипты: это аналог языка Клиппер с некоторыми расширениями, который интерпретируется клипперной же программой.

Спасибо: 0 
ПрофильЦитата Ответить
администратор




Пост N: 1184
Зарегистрирован: 17.05.05
ссылка на сообщение  Отправлено: 21.04.09 16:55. Заголовок: Urri пишет: AX_LOAD..


Urri пишет:

 цитата:
AX_LOADED


AdsIsServerLoaded()

Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник


Пост N: 3
Зарегистрирован: 21.04.09
ссылка на сообщение  Отправлено: 21.04.09 17:07. Заголовок: Ой Dima, администрат..


Ой Dima, администратор, ты так строго выглядишь и лапкой нервно перебираешь. Когда мои дилетантские вопросы по Харбору утомят - скажи. Проверю обязательно твою рекомендацию и еще обращусь не раз за советом, уж извини... Лирическое отступление: не ты ли главный администратор сайта dimma.da.ru? Если так, то прими справедливый наезд на тебя: тут случилась оказия в Москву съездить, так я карту метрополитена с твоего, мною любимого сайта, выдрал, верил тебе и никуда больше не обращался. В Москве меня с этой картой засмеяли из-за того, что она чуть ли не с советских времен... Не икалось ли тебе??? Исправь пожалуйста...

Спасибо: 0 
ПрофильЦитата Ответить
администратор




Пост N: 1185
Зарегистрирован: 17.05.05
ссылка на сообщение  Отправлено: 21.04.09 17:11. Заголовок: Urri Главный у нас ..


Urri
Главный у нас Dimma :) Он в Москве и живет.

Спасибо: 0 
ПрофильЦитата Ответить
Администратор




Пост N: 1098
Зарегистрирован: 23.05.05
ссылка на сообщение  Отправлено: 21.04.09 17:19. Заголовок: Urri пишет: И тут н..


Urri пишет:

 цитата:
И тут на вызов функции AX_LOADED из ADS пишет, что отсутствует _HB_FUN_AX_LOADED.



Это совсем другой вопрос. Дело в том, что имена функций Ads у 16-разрядного клиента для клиппер и у 32-разрядных клиентов отличаются.

Чтобы не переделывать код, можно задать команды препроцессора:

#xtranslate AX_LOADED(<cFile>) => AdsIsServerLoaded(<cFile>)



Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник


Пост N: 4
Зарегистрирован: 21.04.09
ссылка на сообщение  Отправлено: 22.04.09 11:26. Заголовок: Добрый день. Продолж..


Добрый день. Продолжаю задавать вопросы. Заменил вызов AX_LOADED() на AdsIsServerLoaded() - не помогло. Я так понял, что нужно на этапе линковки присоединить библиотеку для работы с ADS. В папке LIB имеются два претендента: ace32.lib и rddads.lib. Подключал последовательно обе библиотеки, но эффект одинаковый: AdsIsServerLoaded() - ссылка не найдена. Кстати, чем отличаются эти библиотеки, какую выбрать? Я хочу, чтобы по-старому обрабатывались .DBF & .CDX файлы (т.е., чтобы часть пользователей могла остаться под клиппером, часть новых - под харбором (возможно ли такое?)). И есть ли информации о соответствии старых функций ADS и новых? Я тут пересмотрел оглавление обеих ранее указанных библиотек и не нашел замены некоторым функциям старой, клипперной библиотеки ADS, например ax_rlock,ax_unlock,ax_transaction,ax_keyno и других

Спасибо: 0 
ПрофильЦитата Ответить



Пост N: 37
Зарегистрирован: 19.12.06
ссылка на сообщение  Отправлено: 22.04.09 11:51. Заголовок: я думаю, много пробл..


я думаю, много проблем решится, если внимательно почитать страничку Кресина
http://kresin.belgorod.su/rus/hrbfaq.html

Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник


Пост N: 5
Зарегистрирован: 21.04.09
ссылка на сообщение  Отправлено: 23.04.09 10:47. Заголовок: Добрый день. Прочита..


Добрый день. Прочитал по указанной ссылке страницу Кресина, добился отсутствия неразрешенных ссылок (еще то было развлечение). Радостный запускаю и получаю хитрое сообщение: "Порядковый номер 468 не найден в библиотеке DLL ACE32.DLL. Отключил вызов ADS временно (т.е. убрал REQUEST ADS) - не помогло. И что теперь делать? Победа так близка...

Спасибо: 0 
ПрофильЦитата Ответить
Администратор




Пост N: 1100
Зарегистрирован: 23.05.05
ссылка на сообщение  Отправлено: 23.04.09 10:52. Заголовок: Значит, rddads.lib с..


Значит, rddads.lib собран с другой версией ace32.lib
Надо собирать именно с той версией, которая будет использоваться

Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник


Пост N: 6
Зарегистрирован: 21.04.09
ссылка на сообщение  Отправлено: 23.04.09 11:32. Заголовок: Хм, интересно, а как..


Хм, интересно, а какой тогда смысл готовый пакет выкладывать, если в нем несовместимые библиотеки? Пишут везде, что наличие сырцов не очень здорово, т.к. выкладывают весьма сырые сырцы (каламбур) и нужно брать проверенный готовый дистрибутив (если его можно так назвать). И если я не использую ADS - сообщение такое же...

Спасибо: 0 
ПрофильЦитата Ответить
Администратор




Пост N: 1101
Зарегистрирован: 23.05.05
ссылка на сообщение  Отправлено: 23.04.09 11:38. Заголовок: Я неправильно ответи..


Я неправильно ответил. Имеется в виду ace32.lib. Надо ее создать командой

implib -f ace32.lib ace32.dll

и линковать именно с этой ace32.lib свою программу

Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник


Пост N: 7
Зарегистрирован: 21.04.09
ссылка на сообщение  Отправлено: 23.04.09 11:51. Заголовок: На странице у Кресин..


На странице у Кресина я видел указание, что нужно так сделать. Но в пакете, скачаном с родного сайта Харбора нет ace32.dll, а есть готовая ace32.lib. Я ей и воспользовался. Может где можно скачать другой вариант Харбора или дайте ace32.dll...

Спасибо: 0 
ПрофильЦитата Ответить



Пост N: 40
Зарегистрирован: 19.12.06
ссылка на сообщение  Отправлено: 23.04.09 12:12. Заголовок: скачай с http://devz..


скачай с http://devzone.advantagedatabase.com advantage client engine под свою версию сервера,
Правда я пользуюсь коммерческим пакетом с xharbour.com , там уже включены и собраны все библиотеки под ads9, но если не ленивый - то это можно сделать вручную

Спасибо: 0 
ПрофильЦитата Ответить
Администратор




Пост N: 1102
Зарегистрирован: 23.05.05
ссылка на сообщение  Отправлено: 23.04.09 13:22. Заголовок: Urri пишет: На стра..


Urri пишет:

 цитата:
На странице у Кресина я видел указание, что нужно так сделать. Но в пакете, скачаном с родного сайта Харбора нет ace32.dll, а есть готовая ace32.lib. Я ей и воспользовался. Может где можно скачать другой вариант Харбора или дайте ace32.dll...



В отличие от клиппера, 32-х разрядный клиент Ads надо установить, там не только ace32.dll, есть еще несколько dll
Поэтому его надо взять на сайте разработчика, т.е. Extend Systems

Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник


Пост N: 8
Зарегистрирован: 21.04.09
ссылка на сообщение  Отправлено: 23.04.09 15:35. Заголовок: Пока ADS отложил в с..


Пока ADS отложил в сторону, пытаюсь запустить чисто в клипперном варианте с CDX индексами. При старте вываливается гнусно-противная ошибка "main.exe - обнаружена ошибка. Приложение будет закрыто. Приносим извинения за неудобства.", дамп и до свидания... И что теперь делать?

Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник


Пост N: 9
Зарегистрирован: 21.04.09
ссылка на сообщение  Отправлено: 23.04.09 15:37. Заголовок: Отложил временно ADS..


Отложил временно ADS. Запустил, получил "main.exe - обнаружена ошибка. Приложение будет закрыто. Приносим извинения за неудобства.", дамп и до свидания... Что теперь делать?

Спасибо: 0 
ПрофильЦитата Ответить
Администратор




Пост N: 1103
Зарегистрирован: 23.05.05
ссылка на сообщение  Отправлено: 23.04.09 15:58. Заголовок: Либо неправильно соб..


Либо неправильно собрана программа, либо вызов какой-то функции при старте дает ошибку
Надо идти от простого к сложному. То есть, сначала собрать простую тестовую программу, и запустить ее. Затем подключать модули, и так далее

Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник


Пост N: 10
Зарегистрирован: 21.04.09
ссылка на сообщение  Отправлено: 27.04.09 17:00. Заголовок: Подскажите, пожалуйс..


Подскажите, пожалуйста. Переменная, объявленная как local, которой присваивается начальное значение в операторе объявления, при повторном входе в процедуру что, теряет свое предыдущее значение и по новой инициализируется?

Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник


Пост N: 11
Зарегистрирован: 21.04.09
ссылка на сообщение  Отправлено: 27.04.09 17:04. Заголовок: Что-то неудачно спро..


Что-то неудачно спросил. Так ведь и должно быть. Извиняйте...

Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник


Пост N: 12
Зарегистрирован: 21.04.09
ссылка на сообщение  Отправлено: 04.05.09 15:12. Заголовок: Добрый день, уважаем..


Добрый день, уважаемые.
Достиг определенных успехов. Все мои проекты заработали, правда пока без ADS, но уже какой прогресс. В процессе перевода столкнулся с неожиданными нестыковками клиппера и Харбора, но пока все обнаруженное преодолел.
Остались некоторые детали и прошу подсказать.
1. Имеется ли функция чтения-записи определенных ячеек памяти (аналог FT_PEEK, FT_POKE).
2. Имеется ли функция вызова прерывания и передачи-получения параметров (аналог FT_INT86)
3. Как определить состояние клавиатуры (нажатие левого-правого CTRL, SHIFT).

Имеются ли какие-нибудь описания функций Харбора и их параметров. А то только в .CH и .H файлах описание прототипов и то не очень информативное. Есть ли описания библиотек, а то их так много и все с интригующими названиями, а для чего какая - не всегда ясно. И вообще, где взять побольше описаний? А то я уже почти переехал на Харбор, но как-то еще не осознал полного кайфа кроме того, что это стало чисто 32-х разрядным приложением. И как он вообще насчет стабильности и корректности?

Спасибо: 0 
ПрофильЦитата Ответить
администратор




Пост N: 1196
Зарегистрирован: 17.05.05
ссылка на сообщение  Отправлено: 04.05.09 15:56. Заголовок: Urri 1. Смотри библ..


Urri
1. Смотри библиотеку LIBNF.LIB
2. Смотри пункт 1
3. Смотри библиотеку СT.LIBUrri пишет:

 цитата:
Имеются ли какие-нибудь описания функций Харбора и их параметров


Где то лежала в этой ветке документация.

Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник


Пост N: 649
Зарегистрирован: 09.10.06
ссылка на сообщение  Отправлено: 04.05.09 16:38. Заголовок: Помогите советом нач..


Помогите советом начинающему...

Urri пишет:

 цитата:
1. Имеется ли функция чтения-записи определенных ячеек памяти (аналог FT_PEEK, FT_POKE).
2. Имеется ли функция вызова прерывания и передачи-получения параметров (аналог FT_INT86)


Дружеский совет - забудьте это. Вот сегодня с Clipper на xHarbour, а завтра с Windows на Solaris и что опять изворачиваться? Максимально используйте встроенные функции языка (читай переносимые), поменьше нестрандартных решений и будет вам счастье.

Urri пишет:

 цитата:
но как-то еще не осознал полного кайфа кроме того, что это стало чисто 32-х разрядным приложением.


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


 цитата:
И как он вообще насчет стабильности и корректности?


Люди работают, а глюки - так вроде с немецкого "глюк" это счастье
На мой скромный взгляд плюсов намного больше чем минусов, но ко всему нужно привыкнуть.


Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник


Пост N: 13
Зарегистрирован: 21.04.09
ссылка на сообщение  Отправлено: 04.05.09 16:43. Заголовок: смотри что после п.3..


смотри что после п.3...
Хорошо, что исходники Харбора есть, буду теперь там рыться. Спасибо за указание на LIBNF.LIB, а то название это ничего конкретного не говорит. А сам то как узнал? Тоже по сырцам изучал? Это к вопросу о документации... А как насчет надежности и стабильности? А то перевести на Харбор учет начислений и оплат 400 000 абонентов миллионного города и получить проблемы - весьма не хотелось бы


Спасибо: 0 
ПрофильЦитата Ответить
администратор




Пост N: 1197
Зарегистрирован: 17.05.05
ссылка на сообщение  Отправлено: 04.05.09 17:02. Заголовок: Urri Документация т..


Urri
Документация тут , не знаю жив ли еще линк. Если что переналью.
http://clipper.borda.ru/?1-4-0-00000126-000-0-0-1202908477

Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник


Пост N: 14
Зарегистрирован: 21.04.09
ссылка на сообщение  Отправлено: 04.05.09 17:18. Заголовок: Петру... Я бы позаб..


Петру...

Я бы позабыл, но пока нужно запустить рабочие проекты, а потом уже открывать новые горизонты. Я и так максимально старался обходиться только стандартными функциями клиппера, даже библиотеку CT не использовал. А те несколько левых функций, которые я использовал, обязательно были с исходниками Да и функции FT_PEEK FT_POKE оказались не такими уж и экзотическими. Вот Dima дал наводку на библиотеку LIBNF.LIB, в которой они имеются. Только вот они работают не так, как в Клиппере (уже проверил).

Ну дайте кто-нибудь эту документацию или ссылку...

Спасибо: 0 
ПрофильЦитата Ответить
администратор




Пост N: 1199
Зарегистрирован: 17.05.05
ссылка на сообщение  Отправлено: 04.05.09 17:23. Заголовок: Urri Смотри личное ..


Urri
Смотри личное сообщение

Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник


Пост N: 650
Зарегистрирован: 09.10.06
ссылка на сообщение  Отправлено: 04.05.09 17:43. Заголовок: Urri пишет: Я бы по..


Urri пишет:

 цитата:
Я бы позабыл, но пока нужно запустить рабочие проекты


Это не аргумент, Clipper программы работают - вот и хорошо. Запускайте, но.. Вот к примеру я использую функцию а() для того чтобы получить результат в виде b, не буду я настолько самоуверенным чтобы утверждать, что такой же результат можно получить только в результате работы моей функции а(), а не какой-то 3-d c(). Вот вы используете FT_PEEK FT_POKE, но вы их используете для того чтобы получить какой-то результат, а не просто что-бы было. Так вот вам нужно спросить, а как мне получить такую-то информацию, сделать то-то, может кто-то и и подскажет. FT_PEEK FT_POKE FT_INT86 очень системнозависимые функции и возможно вам в сторону WinAPI смотреть нужно. Такой подход приведет вас к нужному результату гораздо быстрее.

Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник


Пост N: 15
Зарегистрирован: 21.04.09
ссылка на сообщение  Отправлено: 04.05.09 17:53. Заголовок: Dima... Не дает доку..


Dima... Не дает доку... Может на почту мне кинешь urrisoft@dneprogaz.dp.ua

Буду благодарен всем, кто по этому адресу пришлет документацию на Харбор.

Спасибо: 0 
ПрофильЦитата Ответить
администратор




Пост N: 1201
Зарегистрирован: 17.05.05
ссылка на сообщение  Отправлено: 04.05.09 17:55. Заголовок: Urri пишет: Не дает..


Urri пишет:

 цитата:
Не дает доку


Странно. Выслал на мыло.

Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник




Пост N: 845
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 04.05.09 19:13. Заголовок: Urri пишет: А как н..


Urri пишет:

 цитата:
А как насчет надежности и стабильности? А то перевести на Харбор учет начислений и оплат 400 000 абонентов миллионного города и получить проблемы - весьма не хотелось бы



Насчет надежности и стабильности мы тебе все уши уже прожжужалииии....
http://clipper.borda.ru/?1-0-0-00000442-000-15-0

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

Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник


Пост N: 16
Зарегистрирован: 21.04.09
ссылка на сообщение  Отправлено: 05.05.09 11:12. Заголовок: Добрый день, уважаем..


Добрый день, уважаемые.
Спасибо тем, кто порадовал меня вчера документацией.

Петру... Я спрашивал конкретно: как определить нажаты ли кнопки CTRL, ALT, SHIFT. Это мне сейчас нужно. Вспомнил свой способ определения состояния кнопок через FT_PEEK, Dima присоветовал воспользоваться функциями из LIBNF.LIB (там есть и FT_PEEK, FT_POKE, ALT(), CTRL(), Shift()) - ни одна функция не дала нужного результата. И что теперь делать присоветуете? Ради этого лезть в WinApi? Конечно я туда полезу, когда будет работать то что есть и без сбоев - ошибок. В этом сейчас приоритет. А то у нас такая организация, что нет места программистским ошибкам - сразу можно пострадать на улицу (начальство сейчас нервное и государство больное на голову)

Спасибо: 0 
ПрофильЦитата Ответить
администратор




Пост N: 1202
Зарегистрирован: 17.05.05
ссылка на сообщение  Отправлено: 05.05.09 11:42. Заголовок: Urri Посмотри эту т..

Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник


Пост N: 17
Зарегистрирован: 21.04.09
ссылка на сообщение  Отправлено: 05.05.09 11:58. Заголовок: У меня и на С исходн..


У меня и на С исходник есть, но там нужны библиотеки для зашищенного режима и 32-х разрядные. А у меня только 16-разрядные. И с ассемблером x86 я не сдружился (три предыдущих я знал очень хорошо, а этом меня разочаровал). Тут вот Петр рекомендует обходиться без экзотики, в чем то он прав и я так старался все время делать. А в CT таких возможностей проверить состояние клавиатуры разве нет?

Спасибо: 0 
ПрофильЦитата Ответить
Администратор




Пост N: 1106
Зарегистрирован: 23.05.05
ссылка на сообщение  Отправлено: 05.05.09 12:24. Заголовок: Вы используете Harbo..


Вы используете Harbour или xHarbour ?
Была проблема с опросом состояния alt-shifr-ctrl для терминала gtwin
В Harbour ее вроде пофиксили:

2009-01-05 13:33 UTC+0100 Przemyslaw Czerpak (druzus/at/priv.onet.pl)
* harbour/source/rtl/gtwin/gtwin.c
! Fixed HB_GTI_KBDSHIFTS not working in console mode.
Replaced GetKeyboardState() call with GetKeyState() calls.

Наверное, в xHarbour этот фикс не попал
Функция из ct KBDStat работает ?

По поводу peek/poke. Для чего используются эти функции ? Чтение/запись каких-то данных Bios ? Каких именно ? Расскажите, посоветуем, чем можно их заменить.

Пару слов насчет надежности и Ads. Если планируется использовать Ads с Harbour, то надежность работы с БД останется на том же уровне, поскольку она обеспечивается сервером
Чтобы не было сюрпризом, скажу: Ads с Harbour не поддерживает udf в индексах. Это проблема не Харбора, любой 32-х разрядный клиент Ads не поддерживает udf, так что udf надо чем-то заменять


Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник


Пост N: 18
Зарегистрирован: 21.04.09
ссылка на сообщение  Отправлено: 05.05.09 12:47. Заголовок: Я использую xHarbour..


Я использую xHarbour. А что, может просто Harbour использовать? В рекомендациях говорили, что xHarbour более продвинутый

FT_PEEK используется для того, чтобы по адресу (0,1047) получить байт состояния клавиатуры, в котором каждый бит отвечает за нажатие CTRL, Alt, Shift.. Пробовал я и kbdStat, но возвращает только 0 при любых комбинациях указанных клавиш. И что я не так делаю?
А про udf - спасибо за подсказку и экономию времени. У меня этого крайне мало и легко лечится

Спасибо: 0 
ПрофильЦитата Ответить
Администратор




Пост N: 1107
Зарегистрирован: 23.05.05
ссылка на сообщение  Отправлено: 05.05.09 13:12. Заголовок: Urri пишет: Я испол..


Urri пишет:

 цитата:
Я использую xHarbour. А что, может просто Harbour использовать? В рекомендациях говорили, что xHarbour более продвинутый



Года 2 назад так и было, но сейчас как раз наоборот
Можно использовать Habour, или в xHarbour сделать исправление:
в source\rtl\gtwin\gtwin.c в обработке
case HB_GTI_KBDSHIFTS:
строку
pInfo->pResult = hb_itemPutNI( pInfo->pResult, hb_gt_w32_getKbdState() );

заменить на строку:

pInfo->pResult = hb_itemPutNI( pInfo->pResult, hb_gt_win_getKbdState() );

и добавить в эетот же модуль функцию hb_gt_win_getKbdState,
вставив ее перед hb_gt_win_Info:

static int hb_gt_win_getKbdState( void )
{
int iKbdState = 0;

if( GetKeyState( VK_SHIFT ) & 0x80 ) iKbdState |= HB_GTI_KBD_SHIFT;
if( GetKeyState( VK_CONTROL ) & 0x80 ) iKbdState |= HB_GTI_KBD_CTRL;
if( GetKeyState( VK_MENU ) & 0x80 ) iKbdState |= HB_GTI_KBD_ALT;
if( GetKeyState( VK_LWIN ) & 0x80 ) iKbdState |= HB_GTI_KBD_LWIN;
if( GetKeyState( VK_RWIN ) & 0x80 ) iKbdState |= HB_GTI_KBD_RWIN;
if( GetKeyState( VK_APPS ) & 0x80 ) iKbdState |= HB_GTI_KBD_MENU;
if( GetKeyState( VK_SCROLL ) & 0x01 ) iKbdState |= HB_GTI_KBD_SCROLOCK;
if( GetKeyState( VK_NUMLOCK ) & 0x01 ) iKbdState |= HB_GTI_KBD_NUMLOCK;
if( GetKeyState( VK_CAPITAL ) & 0x01 ) iKbdState |= HB_GTI_KBD_CAPSLOCK;
if( GetKeyState( VK_INSERT ) & 0x01 ) iKbdState |= HB_GTI_KBD_INSERT;

return iKbdState;
}

и пересобрать xHarbour, или только библиотеку gtwin

Если Peek/Poke используется только для клавиатуры, то надо их заменить на вызов KbdStat

Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник


Пост N: 19
Зарегистрирован: 21.04.09
ссылка на сообщение  Отправлено: 05.05.09 13:24. Заголовок: А какая тогда версия..


А какая тогда версия Harbour самая надежная из последних и где ее взять? И почему теперь он круче, чем xHarbour?

Спасибо: 0 
ПрофильЦитата Ответить
Администратор




Пост N: 1108
Зарегистрирован: 23.05.05
ссылка на сообщение  Отправлено: 05.05.09 13:55. Заголовок: Urri пишет: А какая..


Urri пишет:

 цитата:
А какая тогда версия Harbour самая надежная из последних и где ее взять?



Лучше взять не релиз 1.0.1, который вышел еще в прошлом году, и в котором еще был баг с опросом клавиатуры, а, к примеру, сборку, которую выкладывае Григорий


 цитата:
И почему теперь он круче, чем xHarbour?



Субъективная причина - один из разработчиков, который был локомотивом xHarbour в последние годы - Przemyslaw Czerpak - перешел в команду Harbour, и другие девелоперы тоже переориентировались

Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник


Пост N: 20
Зарегистрирован: 21.04.09
ссылка на сообщение  Отправлено: 05.05.09 13:58. Заголовок: И где взять эту саму..


И где взять эту самую сборку, которую выкладывает многоуважаемый Григорий? (прошу прощения за дилетантские вопросы: я же среди вас новенький)...

Спасибо: 0 
ПрофильЦитата Ответить
Администратор




Пост N: 1109
Зарегистрирован: 23.05.05
ссылка на сообщение  Отправлено: 05.05.09 14:10. Заголовок: На страничке http://..


На страничке http://minigui.mylivepage.ru/
Harbour 1.1.0dev (Rev. 10960) for BCC 5.5.1

Спасибо: 0 
ПрофильЦитата Ответить
Администратор




Пост N: 1110
Зарегистрирован: 23.05.05
ссылка на сообщение  Отправлено: 05.05.09 16:11. Заголовок: Еще насчет Ads. У кл..


Еще насчет Ads. У клиентов харбора исчезнут всякие сложности с настройкой доступа по протоколу ipx, поскольку с работой по ip таких проблем нет

Спасибо: 0 
ПрофильЦитата Ответить
администратор




Пост N: 1203
Зарегистрирован: 17.05.05
ссылка на сообщение  Отправлено: 05.05.09 16:43. Заголовок: Pasha пишет: У клие..


Pasha пишет:

 цитата:
У клиентов харбора исчезнут всякие сложности с настройкой доступа по протоколу ipx


что то не припомню сложностей по ipx
ставим Novell Client в мануальном режиме , протокол только IPX

Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник


Пост N: 21
Зарегистрирован: 21.04.09
ссылка на сообщение  Отправлено: 05.05.09 16:49. Заголовок: Спасибо. Это для мен..


Спасибо. Это для меня важно, т.к. у нас такая проблема имелась.

С указанного сайта Григория не могу пока скачать, т.к. регистрация не проходит, написал им письмо и жду, пока ответят. Почему старики-нарбористы Dima, Andrey, Петр не подсказали начинающему? Или сами не знали о таком состоянии xHarbour?

Мне хитрым образом пока удалось временно выкрутиться с анализом CTRL,ALT,SHIFT. Теперь похоже все заработало. Завтра начну ковыряться с ADS. Не взыщите, буду еще приставать

Спасибо: 0 
ПрофильЦитата Ответить
администратор




Пост N: 1204
Зарегистрирован: 17.05.05
ссылка на сообщение  Отправлено: 05.05.09 16:56. Заголовок: Urri пишет: Почему ..


Urri пишет:

 цитата:
Почему старики-нарбористы Dima


я скорее всего клиперист чем харборист ;)
Urri пишет:

 цитата:
Не взыщите, буду еще приставать


Да ни вапрос.

Спасибо: 0 
ПрофильЦитата Ответить
Администратор




Пост N: 1111
Зарегистрирован: 23.05.05
ссылка на сообщение  Отправлено: 05.05.09 17:16. Заголовок: Urri пишет: Почему ..


Urri пишет:

 цитата:
Почему старики-нарбористы Dima, Andrey, Петр не подсказали начинающему? Или сами не знали о таком состоянии xHarbour?



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


Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник




Пост N: 848
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 05.05.09 19:02. Заголовок: Urri пишет: Почему ..


Urri пишет:

 цитата:
Почему старики-нарбористы Dima, Andrey, Петр не подсказали начинающему?


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

Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник


Пост N: 22
Зарегистрирован: 21.04.09
ссылка на сообщение  Отправлено: 06.05.09 15:15. Заголовок: Добрый день, уважаем..


Добрый день, уважаемые.
Началось основное: прикручивание ADS.
При запуске программы говорит: "Порядковый номер 510 не найден в библиотеке DLL ACE32.DLL"

И что это значит, как это лечится?

Спасибо: 0 
ПрофильЦитата Ответить
Администратор




Пост N: 1112
Зарегистрирован: 23.05.05
ссылка на сообщение  Отправлено: 06.05.09 16:06. Заголовок: Это значит, что прог..


Это значит, что программа собрана с библитекой ace32.lib, которая не соответствует ace32.dll
То есть, ace32.lib содержит ссылки на функции из ace32.dll по номерам функций, и при загрузке ace32.dll оказывается, что функции с номером 510, который был присвоен функции при линковке, в ace32.dll нет

Надо командой implib сгенерировать ace32.lib именно из той ace32.dll, которая будет использоваться, и пересобрать свою программу с этой ace32.lib

Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник


Пост N: 23
Зарегистрирован: 21.04.09
ссылка на сообщение  Отправлено: 06.05.09 16:28. Заголовок: Сделал как указано в..


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

&& REQUEST ADS
rddRegister("ADS",1 )
rddsetdefault("ADS")

взятые на странице Кресина.
Если первая строка закоментирована, то выдает "RDD invalid or failed to load". Так наверное и должно быть.
После удалении && при линковке выдает сообщение
Error: Unresolved external 'AdsSkipUnique' referenced from G:\PROC\XHARBOUR\LIB\RDDADS.LIB|ads1

Эта ф-ция есть в RDDADS.LIB, проверил - в списке библиотек при линковке она присутствует.
Но ошибку выдает, зараза. Что присоветуете?



Спасибо: 0 
ПрофильЦитата Ответить
Администратор




Пост N: 1113
Зарегистрирован: 23.05.05
ссылка на сообщение  Отправлено: 06.05.09 16:40. Заголовок: С тех пор, как Креси..


С тех пор, как Кресин делал это описание, процедура подключения Ads изменилась. Теперь достаточно указать:

Request Ads

ну и
rddSetdefault("ADSCDX")
AdsSetFileType( 2 )

а unresolved выдается, так как в скрипте для линкера по-видимому не указана ace32.lib, на которую есть ссылка из rddads.lib, модуль ads1


Спасибо: 0 
ПрофильЦитата Ответить
Администратор




Пост N: 1114
Зарегистрирован: 23.05.05
ссылка на сообщение  Отправлено: 06.05.09 16:42. Заголовок: Еще для правильной р..


Еще для правильной работы с OEM-кодировкой надо вызвать функцию:

AdsSetCharType( 2, .t. )


Спасибо: 0 
ПрофильЦитата Ответить
администратор




Пост N: 1205
Зарегистрирован: 17.05.05
ссылка на сообщение  Отправлено: 06.05.09 16:43. Заголовок: Что бы под Novell не..


Что бы под Novell не тормозило вызвать
AdsRightsCheck(.F.)

Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник


Пост N: 24
Зарегистрирован: 21.04.09
ссылка на сообщение  Отправлено: 06.05.09 16:46. Заголовок: ACE32.LIB в скрипте ..


ACE32.LIB в скрипте линковки есть (проверил). Операторы, указанные выше - поставил. Не помогает.

Спасибо: 0 
ПрофильЦитата Ответить
администратор




Пост N: 1206
Зарегистрирован: 17.05.05
ссылка на сообщение  Отправлено: 06.05.09 16:52. Заголовок: Сложи актуальные DLL..


Сложи актуальные DLL от ADS в папку с программой или Windows\system32

ACE32.DLL
ADSLOC32.DLL
adslocal.cfg
ANSI.CHR
AXCWS32.DLL
EXTEND.CHR


Спасибо: 0 
ПрофильЦитата Ответить
Администратор




Пост N: 1115
Зарегистрирован: 23.05.05
ссылка на сообщение  Отправлено: 06.05.09 16:55. Заголовок: Функция AdsSkipUniqu..


Функция AdsSkipUnique как раз из ace32.dll

Кажется, я догадался. rddads.lib собран для ace32.dll версии 9, в которой есть эта функция. А в более ранних версиях ace такой функции нет

Вывод: надо либо использивать ace версии 9, либо пересобрать
rddads.lib, указав

#define ADS_LIB_VERSION 700 (поставить нужную версию)


Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник


Пост N: 25
Зарегистрирован: 21.04.09
ссылка на сообщение  Отправлено: 07.05.09 08:48. Заголовок: Добрый день, уважаем..


Добрый день, уважаемые.

Pasha пишет:

 цитата:
Вывод: надо либо использивать ace версии 9, либо пересобрать
rddads.lib, указав

#define ADS_LIB_VERSION 700 (поставить нужную версию)



Чтобы "пересобрать" rddads.lib нужно изрядно подолбиться с Borland C, с которым я не сдружился, к сожалению.
На это уйдет уйма времени и сил. Я постараюсь со временем научиться пересобирать весь пакет Харбора или его часть из исходников, но тогда, когда я пойму что это всерьез и надолго. А чтобы я это понял, нужно чтобы заработало то что есть уже сегодня. Большой путь уже пройден и без ADS все заработало. И вот споткнуться на последнем шаге - обидно будет. Может кто поделится последней нормальной сборкой, в которой нет проблем, указанных выше Pasha и другими знатоками?
А также поделитесь локальным ADS: на родном сайте advantagedatabase.com после выбора Local Server для загрузки ссылку дает на триальную версию полного сервера.

Заранее говорю всем спасибо...

Спасибо: 0 
ПрофильЦитата Ответить
Администратор




Пост N: 1116
Зарегистрирован: 23.05.05
ссылка на сообщение  Отправлено: 07.05.09 10:03. Заголовок: Какая версия ace нуж..


Какая версия ace нужна ?
Какая версия xHarbour ?

Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник


Пост N: 26
Зарегистрирован: 21.04.09
ссылка на сообщение  Отправлено: 07.05.09 10:20. Заголовок: Какая нужна? Вы же л..


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

Спасибо: 0 
ПрофильЦитата Ответить
moderator


Пост N: 176
Зарегистрирован: 06.07.06
ссылка на сообщение  Отправлено: 07.05.09 10:38. Заголовок: Urri пишет: Чтобы &..


Urri пишет:

 цитата:
Чтобы "пересобрать" rddads.lib нужно изрядно подолбиться с Borland C, с которым я не сдружился, к сожалению.


Не нужно для этого "долбиться". Достаточно просто зайти в каталог contrib/rddads ( или rdd_ads - в разных версиях он по разному называется ) и запустить make_b32.bat. Возможно, надо будет открыть этот make_b32.bat и сделать, как там написано, т.е. установить переменную окружения HB_DIR_ADS=C:\ads\acesdk ( или другое место, где у вас стоит ADS ).
Это ничуть не труднее, чем собрать свою программу.

Спасибо: 0 
ПрофильЦитата Ответить
Администратор




Пост N: 1117
Зарегистрирован: 23.05.05
ссылка на сообщение  Отправлено: 07.05.09 10:48. Заголовок: Urri пишет: Какая н..


Urri пишет:

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



Версия ace должна соответствовать серверу ads
Какая версия сервера ?
А насчет сборки Александр прав, ничего там военного нет, попробуйте собрать сами
Если нет нужного ace - скажите только для какого сервера - я перешлю


Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник


Пост N: 27
Зарегистрирован: 21.04.09
ссылка на сообщение  Отправлено: 07.05.09 11:12. Заголовок: Сервер ADS - 8.1..


Сервер ADS - 8.1

Спасибо: 0 
ПрофильЦитата Ответить
Администратор




Пост N: 1118
Зарегистрирован: 23.05.05
ссылка на сообщение  Отправлено: 07.05.09 11:20. Заголовок: Urri пишет: Сервер ..


Urri пишет:

 цитата:
Сервер ADS - 8.1



Со странички
http://www.hotsoft.ru/ADS/files.htm

надо скачать

Advantage Client Engine API and DLLs for Windows v.8.10.0.18.


Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник


Пост N: 28
Зарегистрирован: 21.04.09
ссылка на сообщение  Отправлено: 08.05.09 08:31. Заголовок: Pasha пишет: Со стр..


Pasha пишет:

 цитата:
Со странички
http://www.hotsoft.ru/ADS/files.htm

надо скачать

Advantage Client Engine API and DLLs for Windows v.8.10.0.18.




А ссылка правильная? Меня туда не пускает...

Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник


Пост N: 652
Зарегистрирован: 09.10.06
ссылка на сообщение  Отправлено: 08.05.09 09:18. Заголовок: Urri пишет: А ссылк..


Urri пишет:

 цитата:
А ссылка правильная? Меня туда не пускает...


А выключить на время или правильно настроить файрвол не судьба...

Спасибо: 0 
ПрофильЦитата Ответить
Администратор




Пост N: 1119
Зарегистрирован: 23.05.05
ссылка на сообщение  Отправлено: 08.05.09 09:22. Заголовок: Urri пишет: А ссылк..


Urri пишет:

 цитата:
А ссылка правильная? Меня туда не пускает...



Правильная

Прямая ссылка для скачивания:

ace32

Спасибо: 0 
ПрофильЦитата Ответить
администратор




Пост N: 1207
Зарегистрирован: 17.05.05
ссылка на сообщение  Отправлено: 08.05.09 19:04. Заголовок: Юра все ссылки котор..


Юра все ссылки которые дал Павел с hotsoft.ru рабочие.
То же самое можно качнуть тут
http://devzone.advantagedatabase.com/dz/content.aspx?Key=20&Release=10
не понятно о каком TRIALe ты говоришь....

Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник


Пост N: 29
Зарегистрирован: 21.04.09
ссылка на сообщение  Отправлено: 09.05.09 14:45. Заголовок: Dima пишет: Юра все..


Dima пишет:

 цитата:
Юра все ссылки которые дал Павел с hotsoft.ru рабочие.



Я снова попытался залезть по этим ссылкам - снова безрезультатно. А по твоей ссылке все выдрать удалось.
На сайте Advantage нашел страницу с local server с ссылкой для скачивания. Пошел по ней - попал на полный сервер, но Trial. Т.е. вариант локального сервера так и не получил. А очень хочется: я тут по рекомендации Pasha и AlKresin пересобрал библиотеку rdd_ads (подолбился маленько) и поборол ошибку линковки, про которую я писал. А попробовать нет возможности... А руки чешутся: столько проделано, переход на Харбор почти завершен, осталось проверить и опробовать немного. Если у тебя есть local версия - поделись и научи как с ней работать.

Спасибо: 0 
ПрофильЦитата Ответить
администратор




Пост N: 1208
Зарегистрирован: 17.05.05
ссылка на сообщение  Отправлено: 09.05.09 15:17. Заголовок: Urri Ладно , перели..


Urri
Ладно , перелил вот сюда с hotsoft , забирай
http://files.mail.ru/9ZZG0Q

Спасибо: 0 
ПрофильЦитата Ответить
администратор




Пост N: 1209
Зарегистрирован: 17.05.05
ссылка на сообщение  Отправлено: 09.05.09 15:32. Заголовок: Urri Работа с local..


Urri
Работа с local server или remote , определяется установкой параметра в AdsSetServerType

Dima пишет:

 цитата:
Pasha пишет:

цитата:
А что такое AdsSetServerType(3) ?


Это Local + remote
С AIS я решил повременить...


****************
This will "activate" the "smart server searching", this means that you programa automatically detect what kind of server you are using, and will connect to it with no intervention at all. However, the parameter in the AdsSetServerType() defines what kind of server you will use

1 - Local Server
2 - Remote Server
4 - Internet Server

You can add the values to make different server combinations, for example:

3 - Local and Remote Server
5 - Local and Internet Server
6 - Remote and Internet Server
7 - Local, Remote and Internet Server





Remote ADS у тебя есть в наличии ?
Версия ?



Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник


Пост N: 30
Зарегистрирован: 21.04.09
ссылка на сообщение  Отправлено: 09.05.09 15:57. Заголовок: Спасибо Дима. Уже ск..


Спасибо Дима. Уже скачал. Установил. А дальше что? Подскажи...

Спасибо: 0 
ПрофильЦитата Ответить
администратор




Пост N: 1210
Зарегистрирован: 17.05.05
ссылка на сообщение  Отправлено: 09.05.09 16:01. Заголовок: Urri Так ведь писал..


Urri
Так ведь писали уже
Request Ads
rddSetdefault("ADSCDX")
AdsSetFileType( 2 ) 2 - remote server 1 -local

PS
Библиотеку Rddads нужно пересобрать !

Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник


Пост N: 653
Зарегистрирован: 09.10.06
ссылка на сообщение  Отправлено: 09.05.09 16:02. Заголовок: Urri пишет: Пошел п..


Urri пишет:

 цитата:
Пошел по ней - попал на полный сервер, но Trial. Т.е. вариант локального сервера так и не получил. А очень хочется


Локальный сервер ADS - это "всего-навсего" динамическая библиотека adsloc32.dll.
Входит в состав ace (Advantage Client Engine). Вот этот ace и надо скачивать (adv_ace или adv9ace - в зависимости от версии).

Для того, что бы указать ace, что работать будем локально (т.е. надо переадресовывать все к adsloc32.dll)
вызываем AdsSetServerType(1), что вам и пытались обьяснить.

P.S. Мне все более с трудом верится, что вы когда нибудь работали с ADS.
В комплекте с ace справка есть, довольно подробная, - почитайте ее перед тем как задавать вопросы.

Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник


Пост N: 31
Зарегистрирован: 21.04.09
ссылка на сообщение  Отправлено: 09.05.09 16:30. Заголовок: С ADS работаю 12 лет..


С ADS работаю 12 лет, без него у нас ни одна задача не работает. Но использовал его весьма ограничено: важна была надежность индексов и использование транзакций (ранее локальный сервер на отдельно стоящей машине (дома) установить не удавалось а отлаживать программы нужно, поэтому никаких более возможностей ADS не использовал). Почему-то всегда хватало INT_NT.EXE и CLIPPER.EXE. Ну еще последнее время и ODBC, OLEDB. Спасибо за указание на AdsSetServerType(1)

P.S. Постараюсь читать справки и задавать меньше вопросов


Спасибо: 0 
ПрофильЦитата Ответить
администратор




Пост N: 1211
Зарегистрирован: 17.05.05
ссылка на сообщение  Отправлено: 09.05.09 16:34. Заголовок: Urri Реально , твоя..


Urri
Реально , твоя задача будет работать с локальным ADS или есть на фирме Remote ADS ?
Из темы я понял что есть сервер Novell , так вот какой ADS там крутится (и какой протокол) ?

Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник


Пост N: 32
Зарегистрирован: 21.04.09
ссылка на сообщение  Отправлено: 09.05.09 17:01. Заголовок: Сейчас как раз и пыт..


Сейчас как раз и пытаюсь с локальным запустить по рекомендациям Петра.

На фирме у нас сервер с Windows 2003. На машинах с W95/W98 работаем с IPX/SPX, для XP/w2000 работаем с протоколом TCP/IP. Работает одновременно до 100 человек и планируется увеличение еще на 50 в ближайшее время

Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник


Пост N: 33
Зарегистрирован: 21.04.09
ссылка на сообщение  Отправлено: 12.05.09 19:09. Заголовок: Добрый вечер, уважае..


Добрый вечер, уважаемые.

У меня все получилось: все мои программы заработали в xHarbour в связке с ADS (remote и local). Спасибо всем, кто мне помогал, давал советы. В ближайшее время начну переводить всех своих пользователей (150 штук) на Нарбор. Они, правда, не заметят того нелегкого труда, который пришлось для этого проделать: так подумают, что сервер получше поставили и все быстрее заработало.

Теперь задумываюсь о переводе своих программ под GUI. Опять буду задавать вопросы, так что потерпите меня еще некоторое время...

Еще раз всем СПАСИБО !!!

Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник


Пост N: 34
Зарегистрирован: 21.04.09
ссылка на сообщение  Отправлено: 12.05.09 19:15. Заголовок: Pasha писал, что нуж..


Pasha писал, что нужно подправить и пересобрать библиотеку gtwin.lib, чтобы правильно работала функция kbdstate. Что-то я в исходниках, взятых с сайта xHarbour, не нашел такой исходников такой библиотеки и указанного модуля gtwin.c (в папке contrib рылся). Что подскажете по этому поводу?

Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник


Пост N: 35
Зарегистрирован: 21.04.09
ссылка на сообщение  Отправлено: 12.05.09 19:24. Заголовок: В процессе перехода ..


В процессе перехода попался на такое неожиданное отличие в работе клиппера и харбора (поиск ошибок с этим связанных заняло больше всего времени):

private arr[50]
s=space(100)
for i=1 to len(arr)
arr=s
next

Если функцией манипулирования строками с передачей параметров по ссылке (т.е. с символом @ перед именем переменной) исправить, например, 10 строку, то у всех остальных строк массива arr произойдут те же изменения. На клиппере такого не происходит.

Может все и знают про эту неожиданность, а может мое сообщение кому и время для отладки сэкономит.

Спасибо: 0 
ПрофильЦитата Ответить
администратор




Пост N: 1214
Зарегистрирован: 17.05.05
ссылка на сообщение  Отправлено: 12.05.09 19:36. Заголовок: Urri пишет: (поиск ..


Urri пишет:

 цитата:
(поиск ошибок с этим связанных заняло больше всего времени):


Думаю что у всех так...

Найди другой путь если это не пашет.

Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник


Пост N: 656
Зарегистрирован: 09.10.06
ссылка на сообщение  Отправлено: 12.05.09 19:36. Заголовок: Urri пишет: Что под..


Urri пишет:

 цитата:
Что подскажете по этому поводу?



Павел уже исправил эту ошибку

2009-05-05 21:40 UTC+0300 Pavel Tsarenko <tpe2/at/mail.ru>
* source/rtl/gtwin/gtwin.c
! fixed HB_GTI_KBDSHIFTS
(by Przemyslaw Czerpak, borrowed from Harbour)

Если собираетесь и дальше использовать xHarbour - осваивайте CVS

Забыл добавить, gtwin не из contrib, а source/rtl

Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник


Пост N: 36
Зарегистрирован: 21.04.09
ссылка на сообщение  Отправлено: 14.05.09 17:26. Заголовок: Добрый вечер, уважае..


Добрый вечер, уважаемые.

Подскажите пожалуйста: а совместимы ли способы блокировки записей в ADS, вызываемые из Клиппера и проверяемые в Нарборе? После использования в клиппере функции rlock() функцией ax_islocked() указывает, что запись заблокирована, но в Харборе функция ADSISRECORDLOCKED() дает .F. Есть ли где описание соответствия функций для ADS, вызываемых из клиппера и Харбора? А то по названиям можно догадываться, а вот при проверке - не работает.

Спасибо: 0 
ПрофильЦитата Ответить
Администратор




Пост N: 1124
Зарегистрирован: 23.05.05
ссылка на сообщение  Отправлено: 15.05.09 08:22. Заголовок: Проверил на ace 7.0,..


Проверил на ace 7.0, local server, AdsIsRecordLocked() работает
На ace 8 проверить не могу

Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник


Пост N: 37
Зарегистрирован: 21.04.09
ссылка на сообщение  Отправлено: 15.05.09 10:07. Заголовок: Да, но Local и Remot..


Да, но Local и Remote версии при работе с ADS только из Harbour работает нормально, а вот если для remote server блокировку поставила одна программа, написанная на Клиппере, то другая программа, написанная на Харборе эту блокировку не видит. Т.е. получается, что с одной таблицей не может правильно (в смысле анализа блокировок) работать две программы: одна на Клиппере, другая полный ее аналог, но на Харборе (с разницей только в вызываемых функциях анализа блокировок). Я спрашивал именно про совместную работу Клиппера и Харбора

Спасибо: 0 
ПрофильЦитата Ответить
Администратор




Пост N: 1125
Зарегистрирован: 23.05.05
ссылка на сообщение  Отправлено: 15.05.09 10:24. Заголовок: Я бы советовал задат..


Я бы советовал задать этот вопрос в Ads support
Совместимы ли блокировки старого клиента клиппер с ace 8.0.
У ads раньше была newsgroup, я даже задавал там вопрос, и мне отвечали, адреса правда под рукой нет. Возможно, он уже изменился


Спасибо: 0 
ПрофильЦитата Ответить
Администратор




Пост N: 1126
Зарегистрирован: 23.05.05
ссылка на сообщение  Отправлено: 15.05.09 10:34. Заголовок: Вот где собака порыл..


Вот где собака порылась

AdsIsRecordLocked tests if the given record is locked by the current user


Спасибо: 0 
ПрофильЦитата Ответить
Администратор




Пост N: 1127
Зарегистрирован: 23.05.05
ссылка на сообщение  Отправлено: 15.05.09 10:46. Заголовок: dbInfo(DBI_GETLOCKAR..


dbInfo(DBI_GETLOCKARRAY) возвращает массив блокировок, номера записей
Можно проверять:

ASCAN(dbInfo(DBI_GETLOCKARRAY), RecNo()) # 0


Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник


Пост N: 38
Зарегистрирован: 21.04.09
ссылка на сообщение  Отправлено: 15.05.09 11:15. Заголовок: Pasha пишет: Вот гд..


Pasha пишет:

 цитата:
Вот где собака порылась

AdsIsRecordLocked tests if the given record is locked by the current user




Так что, получается для конкретной записи даже для работающих только Харбор программ нельзя проверить факт блокировки другим пользователем конкретной строки (отложив на время вопрос о взаимодействии с Клиппер программами)?

Pasha пишет:

 цитата:
dbInfo(DBI_GETLOCKARRAY) возвращает массив блокировок, номера записей
Можно проверять:

ASCAN(dbInfo(DBI_GETLOCKARRAY), RecNo()) # 0




У меня бывают ситуации блокировок по 5000 строк. Пока функция dbinfo() соберет массив корректировок, функция ascan() проверит - нужную строку уже заблокируют

Спасибо: 0 
ПрофильЦитата Ответить
Администратор




Пост N: 1128
Зарегистрирован: 23.05.05
ссылка на сообщение  Отправлено: 15.05.09 11:45. Заголовок: Других функций опрос..


Других функций опроса блокировок в ace я не увидел, а rddads может работать только через ace

Почему бы не блокировать нужные записи сразу ? Примерно так

for i := 1 to len(aRecs)
if ! DBRLock(aRecs)
lLock := .f.
exit
endif
next


Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник


Пост N: 39
Зарегистрирован: 21.04.09
ссылка на сообщение  Отправлено: 15.05.09 12:00. Заголовок: Pasha пишет: Почему..


Pasha пишет:

 цитата:
Почему бы не блокировать нужные записи сразу ? Примерно так



Какие записи блокировать выясняется в процессе расчета. Бывает нужно заблокировать штук 300, а бывает - только 1. А блокировать на всякий случай - так это переводняк времени (в ADS блокировки выполняются неторопливо).

Проблема вот в чем. На 20 машинах запускается расчет для 250000 абонентов. Первая машина прихватила (заблокировала) первую строку списка - расчитывает, вторая машина - проверила эту строку: занята (заблокирована кем-то) - перешла на следующую строку, прихватила, расчитывает. Третья машина проверила первуя строку, вторую строку - заняты. Прихватила третью. И т.д. А потом первая строка ищет в списке следующую свободную для расчета и т.д. Получается такой себе конвейер. А теперь получается нужно придумывать другой по банальной причине...

Спасибо: 0 
ПрофильЦитата Ответить
Администратор




Пост N: 1129
Зарегистрирован: 23.05.05
ссылка на сообщение  Отправлено: 15.05.09 12:31. Заголовок: А зачем разделять пр..


А зачем разделять проверку и блокировку ?
rlock/dbRLock - это проверка и блокировка в одном флаконе

А то может оказаться, что запись будет захвачена другим пользователем между вызовами ax_islocked и rlock



Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник


Пост N: 40
Зарегистрирован: 21.04.09
ссылка на сообщение  Отправлено: 18.05.09 16:33. Заголовок: Добрый день. Подска..


Добрый день.

Подскажите пожалуйста, как заставить ф-цию FT_SETVPG прилинковаться. В LIBNF она есть, при вызове FT_INT86, которая ее вызывает, пишет про неразрешенную внешнюю ссылку. При попытке вставить в исходный текст эту ф-цию из исходников - пишет, что дублируется... И что делать? Очень хочется воспользоваться ф-цией FT_INT86 чтобы закончить с печатью...

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

Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник


Пост N: 41
Зарегистрирован: 21.04.09
ссылка на сообщение  Отправлено: 18.05.09 17:00. Заголовок: Еще такой вопрос. Вы..


Еще такой вопрос. Вызываются ли под ADS SQL команды, например выбрать нечто по условию и результат записать в DBF файл. Попытка использования ф-ции ADSEXECUTESQLDIRECT('select ...') ни к чему не привела. Дайте пример.

Спасибо: 0 
ПрофильЦитата Ответить
Администратор




Пост N: 1137
Зарегистрирован: 23.05.05
ссылка на сообщение  Отправлено: 18.05.09 19:23. Заголовок: Select(nSel) if AdsG..


Select(nSel)
if AdsGetConnectionHandle() == 0
AdsConnect(cPath) // Set(_SET_DEFAULT)
endif
if AdsCreateSQLStatement(cAlias, 2)
AdsPrepareSQL(cSQL)
AdsExecuteSQL()
endif


Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник


Пост N: 42
Зарегистрирован: 21.04.09
ссылка на сообщение  Отправлено: 18.05.09 20:06. Заголовок: Спасибо. Щас будем р..


Спасибо. Щас будем разбираться. Может у кого есть описание указанных ф-ций? А ф-ция ADSEXECUTESQLDIRECT что, не работает?

И что подскажите насчет печати (предыдущего вопроса)?

Спасибо: 0 
ПрофильЦитата Ответить
Администратор




Пост N: 1138
Зарегистрирован: 23.05.05
ссылка на сообщение  Отправлено: 19.05.09 08:16. Заголовок: Urri пишет: Подскаж..


Urri пишет:

 цитата:
Подскажите пожалуйста, как заставить ф-цию FT_SETVPG прилинковаться. В LIBNF она есть, при вызове FT_INT86, которая ее вызывает, пишет про неразрешенную внешнюю ссылку. При попытке вставить в исходный текст эту ф-цию из исходников - пишет, что дублируется... И что делать? Очень хочется воспользоваться ф-цией FT_INT86 чтобы закончить с печатью...



Эти функции - переключение видеостраниц - реализованы только для dos
К тому же в page.prg опечатка:

вместо

_ft_setvpg(nPage)

надо

_v_setvpg(nPage)

для win32 эти средства работать не будут, поскольку это специфика os

Какие именно функции печати имеются в виду ?

Спасибо: 0 
ПрофильЦитата Ответить
Администратор




Пост N: 1139
Зарегистрирован: 23.05.05
ссылка на сообщение  Отправлено: 19.05.09 08:35. Заголовок: Urri пишет: А ф-ция..


Urri пишет:

 цитата:
А ф-ция ADSEXECUTESQLDIRECT что, не работает?



По-видимому, перед ее вызовом надо выдать:

AdsCreateSQLStatement(cAlias, 2)

Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник


Пост N: 43
Зарегистрирован: 21.04.09
ссылка на сообщение  Отправлено: 19.05.09 10:41. Заголовок: Pasha пишет: Какие ..


Pasha пишет:

 цитата:
Какие именно функции печати имеются в виду ?



Имеются ввиду функции PrintReady() и PrintSend(). Написано в инструкции, что созданы для целей совместимости и возвращают всегда 0 и .f. соответственно. И других ф-ций для анализа готовности принтера и пересылки строк в принтер больше не вижу. Из истории проблемы: лет 15 назад еще при работе с Clipper 5.01 и матричными принтерами не было никакой возможности проанализировать сбой оборудования (бумага застряла, например) и программа вываливалась с дикими ошибками. В те далекие времена меня это очень утомляло и я переписал для себя блок печати с использованием DOS прерывания, вызываемого ф-цией FT_INT86() и забыл о проблемах печати на 15 лет (даже под w95,w98,w2000,XP). И теперь, перейдя на Харбор пока в варианте консольного приложения, очень хочу не иметь проблем с печатью. А для этого очень хочу снова воспользоваться ф-цией FT_INT86. Она ведь есть в библиотеках Харбора, только не работает так, как раньше под Клиппером. Или подскажите другой вариант проверки готовности принтера (матричные принтеры у нас еще имеются)


Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник


Пост N: 44
Зарегистрирован: 21.04.09
ссылка на сообщение  Отправлено: 19.05.09 11:01. Заголовок: Pasha пишет: По-вид..


Pasha пишет:

 цитата:
По-видимому, перед ее вызовом надо выдать:

AdsCreateSQLStatement(cAlias, 2)



Что есть cAlias? Что такое параметр 2? Смотрю примеры из Харбор, понятного весьма мало т.к. нет ну никакого описания. А прокладывать дорогу в дебрях исходников на С очень утомительно и долго. Может у кого есть какое-то описание? И вообще из участников этого форума кто-то использует SQL запросы при работе ADS с .DBF файлами, а не .ADT? Хочу пока немного: сделать выборку SQL запросом и вывалить результат в .DBF файл...

Спасибо: 0 
ПрофильЦитата Ответить
Администратор




Пост N: 1140
Зарегистрирован: 23.05.05
ссылка на сообщение  Отправлено: 19.05.09 11:29. Заголовок: Алиас - это алиас ра..


Алиас - это алиас рабочей области, в которой будет выполняться select
2 - имеется в виду ADS_CDX

После выполнения select в рабочей области можно использовать обычные средства rdd: go top, skip, обращение к полям

Поскольку эти функции в харборе не описаны, то надо смотреть сырцы rddads, и, конечно, помощь к ace

Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник


Пост N: 45
Зарегистрирован: 21.04.09
ссылка на сообщение  Отправлено: 19.05.09 11:36. Заголовок: Pasha пишет: Алиас ..


Pasha пишет:

 цитата:
Алиас - это алиас рабочей области, в которой будет выполняться select
2 - имеется в виду ADS_CDX



Этот алиас будет создан автоматически? Какие еще значения параметров, кроме 2, можно задавать?

А предыдущее мое сообщение (ответ на ваш вопрос) про принтер читали и какой ответ?

Спасибо: 0 
ПрофильЦитата Ответить
Администратор




Пост N: 1141
Зарегистрирован: 23.05.05
ссылка на сообщение  Отправлено: 19.05.09 11:51. Заголовок: надо сначала выбрать..


надо сначала выбрать РО вызовом

Select(nSel)

В этой РО и будет открыт запрос с алиасом cAlias


Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник


Пост N: 46
Зарегистрирован: 21.04.09
ссылка на сообщение  Отправлено: 19.05.09 13:52. Заголовок: Я делаю так: nsel=1..


Я делаю так:

nsel=100
cPath='g:\abonent\dbf\'
cSQL='select client,name from g:\abonent\dbf\client.dbf where street=20'
cAlias='abc'

Select(nSel)
&& if AdsGetConnectionHandle()=0
AdsConnect(cPath)
&& endif
if AdsCreateSQLStatement(cAlias, 1)
AdsPrepareSQL(cSQL)
AdsExecuteSQL()
endif

? alias(),reccount()


Вызов Ф-ции AdsGetConnectionHandle() закомментирован, т.к. выдает неразрешенную ссылку.
Диск G обслуживается локальным ADS (поэтому второй параметр в AdsCreateSQLStatement поставил 1 (2 тоже ставил - ничего не менялось)).

В результате получал alias() = abc, reccount() = 0. Проверил, в базе client строки со street=20 имеются в количестве 1300 штук. Что я делаю не так?


Спасибо: 0 
ПрофильЦитата Ответить
Администратор




Пост N: 1142
Зарегистрирован: 23.05.05
ссылка на сообщение  Отправлено: 19.05.09 14:16. Заголовок: А поля видны ? ? FC..


А поля видны ?

? FCount(), Client, Name

Условие where сработало ? Тип поля street числовой ?

2-й параметр AdsCreateSQLStatement:

#define ADS_NTX 1
#define ADS_CDX 2
#define ADS_ADT 3


Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник


Пост N: 47
Зарегистрирован: 21.04.09
ссылка на сообщение  Отправлено: 19.05.09 15:28. Заголовок: fcount() = 196, но р..


fcount() = 196, но реально в базе client их всего 125.
Поле street - числовое.
Поля не видны, fieldname(1) - пусто

Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник


Пост N: 48
Зарегистрирован: 21.04.09
ссылка на сообщение  Отправлено: 25.05.09 12:54. Заголовок: Добрый день. Ну кто..


Добрый день.

Ну кто подскажет как правильно SQL запрос вызвать? Это пока последнее, что мне нужно на ближайшее время. Со всеми остальными вопросами какт-то справился, даже с принтером временное решение нашел, т.к. FT_INT86 до сих пор не работает нормально

Спасибо: 0 
ПрофильЦитата Ответить
moderator


Пост N: 180
Зарегистрирован: 06.07.06
ссылка на сообщение  Отправлено: 25.05.09 14:59. Заголовок: Вот такой пример у м..


Вот такой пример у меня работает ( test.dbf взято из harbour/tests )

#include "c:\harbour\contrib\rddads\ads.ch"
FUNCTION main

rddSetdefault("ADS")
SET FILETYPE TO CDX
SET SERVER LOCAL

AdsConnect( ".\" )
IF !AdsCreateSqlStatement( ,2 )
? "AdsCreateSqlStatement - error"
RETURN
ENDIF
IF !AdsExecuteSqlDirect( "SELECT * FROM test WHERE AGE < 50" )
? "AdsExecuteSqlDirect - error"
RETURN
ENDIF
? Reccount()

?

RETURN


Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник


Пост N: 49
Зарегистрирован: 21.04.09
ссылка на сообщение  Отправлено: 25.05.09 15:56. Заголовок: Ура. Спасибо, уважае..


Ура. Спасибо, уважаемый. И у меня теперь заработало. Еще раз спасибо. Сейчас буду развивать достижение.

Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник


Пост N: 50
Зарегистрирован: 21.04.09
ссылка на сообщение  Отправлено: 25.05.09 16:50. Заголовок: Поторопился радовать..


Поторопился радоваться. Для локального ADS - работает, для Remote - не работает, выдает сообщение "AdsCreateSqlStatement - error", а все остальное с Remote сервером работает. Какие будут рекомендации?

Спасибо: 0 
ПрофильЦитата Ответить
moderator


Пост N: 181
Зарегистрирован: 06.07.06
ссылка на сообщение  Отправлено: 25.05.09 19:00. Заголовок: Проверьте, что возвр..


Проверьте, что возвращает AdsConnect():

IF ! AdsConnect( <path> )
? "No connection"
RETURN
ENDIF

Кстати, в AdsConnect() что у вас указано ?

Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник


Пост N: 51
Зарегистрирован: 21.04.09
ссылка на сообщение  Отправлено: 26.05.09 09:48. Заголовок: alkresin пишет: Про..


alkresin пишет:

 цитата:
Проверьте, что возвращает AdsConnect():

alkresin пишет:

 цитата:
Проверьте, что возвращает AdsConnect():



Добрый день

Вот такой у меня проверочный тест.


? AdsConnect("m:\" )
if !AdsCreateSqlStatement( ,2 )
? "AdsCreateSqlStatement - error"
return
endif
select(100)
if !AdsExecuteSqlDirect( "SELECT * FROM m:\abonent\dbf\client WHERE street=20" )
? "AdsExecuteSqlDirect - error"
return
endif


AdsConnect("m:\") = .t.
Но при этом выдает "AdsExecuteSqlDirect - error". После этого программа успешно работает дальше, т.е. на m:\ нормально фукнционирует ADS REMOTE.

Если "m:\" заменить на "g:\" (и в SQL запросе тоже), а на g:\ работает ADS Local - то все работает нормально выполняется

Спасибо: 0 
ПрофильЦитата Ответить
moderator


Пост N: 182
Зарегистрирован: 06.07.06
ссылка на сообщение  Отправлено: 26.05.09 12:44. Заголовок: Drive letters in pat..


Drive letters in paths of table names can only be used with Advantage Local Server. When using Advantage Database Server for NT or NetWare, fully qualified paths must use UNC (e.g., "\\server\volume\path\table"), because the SQL statement is parsed at the server where client-side drive letters are not meaningful.
If relative paths are used in SQL statements, the path is considered to be relative to the connection path. For example, a table referenced as "..\alternate\info" would refer to a directory named "alternate" that would be expected to be parallel to the original connection path directory.

Иными словами :), диск ( m:) указывается только для локального сервера. SQL запрос исполняется на сервере, а сервер не знает, на какую букву его распределили на вашей клиентской станции. Путь надо указывать относительно того, что прописан в AdsConnect(). Т.е., в вашем случае надо, по видимому, написать:

AdsExecuteSqlDirect( "SELECT * FROM \abonent\dbf\client WHERE street=20" )


Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник


Пост N: 52
Зарегистрирован: 21.04.09
ссылка на сообщение  Отправлено: 26.05.09 13:09. Заголовок: Получилось. Спасибо ..


Получилось. Спасибо большое. Еще бы ссылку прислали где это можно почитать...

Сейчас начну всех своих 95 пользователей на Харборе заставлять работать. Пусть еще какие-то ошибки и несответствия вылезут. А то я вчера с одной столкнулся - уже был в полном расстройстве и готов был от Харбора отказаться, т.к. непонятно что творилось. Таки нашел несовпадение в работе клиппера и Харбора. А еще сколько таких будет...

Спасибо: 0 
ПрофильЦитата Ответить
moderator


Пост N: 183
Зарегистрирован: 06.07.06
ссылка на сообщение  Отправлено: 26.05.09 13:56. Заголовок: Получилось. Спасибо ..



 цитата:
Получилось. Спасибо большое. Еще бы ссылку прислали где это можно почитать...


Почитать - в help'е к ADS.

Спасибо: 0 
ПрофильЦитата Ответить
Администратор




Пост N: 1147
Зарегистрирован: 23.05.05
ссылка на сообщение  Отправлено: 26.05.09 19:38. Заголовок: Urri пишет: Имеются..


Urri пишет:

 цитата:
Имеются ввиду функции PrintReady() и PrintSend().



Я добавил PrintSend для windows

Спасибо: 0 
ПрофильЦитата Ответить



Не зарегистрирован
Зарегистрирован: 01.01.70
ссылка на сообщение  Отправлено: 27.05.09 12:39. Заголовок: Здравствуйте, Urri! ..


Здравствуйте, Urri!
Если не секрет, какое решение нашел для определения готовности принтера? А то я некоторое время назад пытался здесь получить какое-нибудь решение, но ничего не вышло.

Спасибо: 0 
Цитата Ответить
постоянный участник


Пост N: 53
Зарегистрирован: 21.04.09
ссылка на сообщение  Отправлено: 27.05.09 13:06. Заголовок: Добрый день. wad1 п..


Добрый день.

wad1 пишет:

 цитата:
Если не секрет, какое решение нашел для определения готовности принтера? А то я некоторое время назад пытался здесь получить какое-нибудь решение, но ничего не вышло.



Ничего нового, вернулся к старому аля'Клиппер решению:
if isprinter(1)
set console off
set print on
set printer to lpt1.
set device to print
?? cText
set print off
set device to screen
set console on
endif

В далекие времена я от этого варианта отказался в пользу работы через прерывание ft_int86 (я здесь уже писал об этом и о причинах), но сейчас пришлось вспомнить былое, т.к. заставить в харборе эту ф-цию работать пока не удалось


Спасибо: 0 
ПрофильЦитата Ответить



Не зарегистрирован
Зарегистрирован: 01.01.70
ссылка на сообщение  Отправлено: 27.05.09 14:40. Заголовок: Почему-то мне не уда..


Почему-то мне не удалось от isprinter() получить реальной информации о готовности принтера: даже если он выключен, возвращается .t.

Спасибо: 0 
Цитата Ответить
постоянный участник


Пост N: 54
Зарегистрирован: 21.04.09
ссылка на сообщение  Отправлено: 27.05.09 15:59. Заголовок: wad1 пишет: Почему-..


wad1 пишет:

 цитата:
Почему-то мне не удалось от isprinter() получить реальной информации о готовности принтера: даже если он выключен, возвращается .t.



Может потому что очереди в Винде настроены для принтера? У меня пока работает - вот я глубоко не копаю, других проблем в Харборе нашлось. Надеюсь все-таки заставить FT_INT86 работать. А пока борюсь с клавиатурой. Пользователи привыкли к определенным комбинациям клавиш для выполнения нужной работы, а в Харборе работает на так как раньше. Например, в Клиппере AltR возвращало один код вне зависимости англ. раскладка или русс. включена в момент нажатия. А теперь в русской раскладке что AltR что К нету... Может кто знает как с этим бороться?


Спасибо: 0 
ПрофильЦитата Ответить
администратор




Пост N: 1225
Зарегистрирован: 17.05.05
ссылка на сообщение  Отправлено: 27.05.09 16:10. Заголовок: Urri пишет: Наприме..


Urri пишет:

 цитата:
Например, в Клиппере AltR возвращало


Можешь подправить и юзать эту функцию
http://clipper.borda.ru/?1-4-0-00000339-000-0-0-1223272101


Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник


Пост N: 55
Зарегистрирован: 21.04.09
ссылка на сообщение  Отправлено: 27.05.09 19:45. Заголовок: Dima пишет: Можешь ..


Dima пишет:

 цитата:
Можешь подправить и юзать эту функцию
http://clipper.borda.ru/?1-4-0-00000339-000-0-0-1223272101



Спасибо Дима. Щас начал разбираться. Непростое дело с непривычки...

Тут очередная проблема нарисовалась. Такое впечатление, что запуск программы на Харборе под win95-98 блокирует переключение раскладки клавиатуры рус/лат. Кто-то с этим встречался? Есть ли способы определения того, какая включена раскладка и можно ли ее принудительно менять программно?

Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник


Пост N: 56
Зарегистрирован: 21.04.09
ссылка на сообщение  Отправлено: 28.05.09 08:41. Заголовок: В продолжение к пред..


В продолжение к предыдущему....

Катастрофа. Сейчас сам проверил. После запуска программы на Харборе раскладка клавиатуры не переключается на w98. Приехали. У меня с w95-w98 60% машин из 300. Вчера счастливые юзеры на XP новый вариант программы на Харборе одобрили, хотел уже всех пересаживать на Харбор - и такой облом...

Что делать, подскажите... Неужели даром столько усилий потрачено... А я еще хотел на GUI под Харбором переходить. И тут такое...

Спасибо: 0 
ПрофильЦитата Ответить
moderator


Пост N: 184
Зарегистрирован: 06.07.06
ссылка на сообщение  Отправлено: 28.05.09 12:21. Заголовок: Переключается она, у..


Переключается она, у меня тоже несколько клиентских станций под Win98 - и никаких проблем. Вы какой gt используете, gtwin или gtwvt ?

Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник


Пост N: 57
Зарегистрирован: 21.04.09
ссылка на сообщение  Отправлено: 28.05.09 12:32. Заголовок: Я использую gtwin. Н..


Я использую gtwin. На XP и 2000 работает... А какую нужно использовать?

Спасибо: 0 
ПрофильЦитата Ответить
moderator


Пост N: 185
Зарегистрирован: 06.07.06
ссылка на сообщение  Отправлено: 28.05.09 13:53. Заголовок: gtwin на 98 заметно ..


gtwin на 98 заметно тормозит, поэтому я использую gtwvt, вот такие строчки включаю:

#ifdef GTWVT
ANNOUNCE HB_GTSYS
request HB_GT_WVT
REQUEST HB_GT_WVT_DEFAULT
#include "hbgtinfo.ch"

hb_gtinfo( GTI_FONTWIDTH, INT( hb_gtinfo( GTI_DESKTOPWIDTH ) / 80 ) )
hb_gtinfo( GTI_FONTSIZE, INT( ( hb_gtinfo( GTI_DESKTOPHEIGHT ) - 64 ) / 25 ) )
#endif

компилирую с ключом -dGTWVT и, соответственно, прилинковываю gtwvt.lib вместо gtwin.lib.
При этом раскладка клавиатуры переключается как в Windows.


Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник


Пост N: 58
Зарегистрирован: 21.04.09
ссылка на сообщение  Отправлено: 28.05.09 14:04. Заголовок: При добавлении указа..


При добавлении указанного текста и замене gtwin.lib на gtwvt.lib при линковке выдает сообщение

Error: Unresolved external '_HB_FUN_HB_GT_WIN' referenced from G:\PROC\XHARBOUR\LIB\VM.LIB|mainstd

alkresin пишет:

 цитата:
При этом раскладка клавиатуры переключается как в Windows.


Кстати, а можно ли, чтобы раскладка переключалась как в DOS, а то пользователи привыкли уже к определенным комбинациям клавиш переключения раскладки


Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник


Пост N: 666
Зарегистрирован: 09.10.06
ссылка на сообщение  Отправлено: 28.05.09 14:47. Заголовок: Urri пишет: После з..


Urri пишет:

 цитата:
После запуска программы на Харборе


Urri пишет:

 цитата:
Error: Unresolved external '_HB_FUN_HB_GT_WIN' referenced from G:\PROC\XHARBOUR\LIB\VM.LIB|mainstd


То, чем вы пользуетесь называется xHarbour

Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник


Пост N: 59
Зарегистрирован: 21.04.09
ссылка на сообщение  Отправлено: 28.05.09 15:26. Заголовок: Петр пишет: То, чем..


Петр пишет:

 цитата:
То, чем вы пользуетесь называется xHarbour



Спасибо за важное уточнение... Я и так помню, что работаю именно в xHarbour, а не в Harbour, А пишу так для сокращения. Тут все похоже именно только с xHarbour работают и пока с этим не было проблем.
Вот проблема с непереключением рус/лат более трудная...

Спасибо: 0 
ПрофильЦитата Ответить
moderator


Пост N: 186
Зарегистрирован: 06.07.06
ссылка на сообщение  Отправлено: 28.05.09 16:06. Заголовок: Error: Unresolved ex..



 цитата:
Error: Unresolved external '_HB_FUN_HB_GT_WIN' referenced from G:\PROC\XHARBOUR\LIB\VM.LIB|mainstd


Раз xHarbour, надо еще добавить куда-нибудь ( в конец файла, например ):

PROCEDURE HB_GT_WIN (); return


 цитата:
Кстати, а можно ли, чтобы раскладка переключалась как в DOS, а то пользователи привыкли уже к определенным комбинациям клавиш переключения раскладки



С gtwvt - нет.

Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник


Пост N: 667
Зарегистрирован: 09.10.06
ссылка на сообщение  Отправлено: 28.05.09 16:34. Заголовок: Urri пишет: Я и так..


Urri пишет:

 цитата:
Я и так помню, что работаю именно в xHarbour, а не в Harbour, А пишу так для сокращения. Тут все похоже именно только с xHarbour работают и пока с этим не было проблем.


Я и не сомневался, что вы знаете с чем работаете, а другие это знать не обязаны.

 цитата:
Error: Unresolved external '_HB_FUN_HB_GT_WIN' referenced from G:\PROC\XHARBOUR\LIB\VM.LIB|mainstd


Проблем говорите пока не было?


Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник


Пост N: 60
Зарегистрирован: 21.04.09
ссылка на сообщение  Отправлено: 28.05.09 16:49. Заголовок: В результате .exe мо..


В результате .exe модуль запускается из под FARa (как и раньше), но в диспетчере задач Windows объем модуля показывает 836кб (до этого в 10 раз больше) и висит, ни на что не реагирует, но ЦП отжирает на 50%. Снимается только крестиком на окне FAR

Спасибо: 0 
ПрофильЦитата Ответить
moderator


Пост N: 187
Зарегистрирован: 06.07.06
ссылка на сообщение  Отправлено: 28.05.09 18:17. Заголовок: А вы не забыли поста..


А вы не забыли поставить -dGTWVT в строку вызова Harbour ?
И еще я забыл одну вещь: bcc32 в этом случае надо запускать с ключом -tW ( там, где уже строится exe )

Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник


Пост N: 61
Зарегистрирован: 21.04.09
ссылка на сообщение  Отправлено: 28.05.09 18:43. Заголовок: alkresin пишет: А в..


alkresin пишет:

 цитата:
А вы не забыли поставить -dGTWVT в строку вызова Harbour ?



Я прямо в модуле перед текстом #define GTWVT поставил. А вот ключ -tW действительно помог. Раскладка теперь переключается. Спасибо.
Однако теперь новая проблема: программу невозможно переключить в полноэкранный режим. А у меня еще много мониторов 14". И остается значительно меньше площади для работы (а экран насыщен информацией, необходимой для работы), соответственно меньше шрифт и его качество. Пользователи такой крик поднимут. Невозможность полноэкранного режима - это приговор при использовании gtwvt.lib, или можно что-то с этим сделать?

Спасибо: 0 
ПрофильЦитата Ответить
администратор




Пост N: 1226
Зарегистрирован: 17.05.05
ссылка на сообщение  Отправлено: 28.05.09 18:51. Заголовок: Urri Попробуй окошк..


Urri
Попробуй окошко утащить за пределы экрана (или часть) , потом верни на место.
Или свернуть(развернуть) окно
Будешь удивлен.......

Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник


Пост N: 62
Зарегистрирован: 21.04.09
ссылка на сообщение  Отправлено: 28.05.09 18:58. Заголовок: Подергал я окна, све..


Подергал я окна, свернул/развернул. Ничего особого не произошло... А что должно было случиться и даже меня удивить?

Спасибо: 0 
ПрофильЦитата Ответить
moderator


Пост N: 188
Зарегистрирован: 06.07.06
ссылка на сообщение  Отправлено: 28.05.09 20:20. Заголовок: Однако теперь новая ..



 цитата:
Однако теперь новая проблема: программу невозможно переключить в полноэкранный режим


Полноэкранный режим с gtwvt исключен. Но можно сделать окошко побольше, поиграв с цифрами при установке размера шрифта - поставить вместо
hb_gtinfo( GTI_FONTSIZE, INT( ( hb_gtinfo( GTI_DESKTOPHEIGHT ) - 64 ) / 25 ) )

например,

hb_gtinfo( GTI_FONTSIZE, INT( ( hb_gtinfo( GTI_DESKTOPHEIGHT ) - 24 ) / 25 ) )

Пользователи поначалу, действительно, поднимут крик, но потом привыкнут. А тормоза с gtwin разве не вызывают проблем ?

Спасибо: 0 
ПрофильЦитата Ответить





Пост N: 308
Зарегистрирован: 08.04.06
ссылка на сообщение  Отправлено: 28.05.09 21:24. Заголовок: alkresin пишет: А т..


alkresin пишет:

 цитата:
А тормоза с gtwin разве не вызывают проблем ?


А они явно видны только в линейке Win'9Х. А на XP GTWIN в некоторых моментах работает вроде бы даже и побыстрее, чем GTWVT. Например, когда я обычно делаю два ярлыка: для запуска в GTWIN и для запуска в GTWVT, народ, попробовав оба варианта, обычно пользуется GTWIN. Всё-таки крупные чёткие буквы полноэкранного терминального режима выигрывают .

Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник


Пост N: 63
Зарегистрирован: 21.04.09
ссылка на сообщение  Отправлено: 28.05.09 22:48. Заголовок: Лукашевский пишет: ..


Лукашевский пишет:

 цитата:
Всё-таки крупные чёткие буквы полноэкранного терминального режима выигрывают



Полностью согласен. Особенно для 14" и 15" старых выгоревших мониторов.

Так что, мне не надеяться на полноэкранный режим и русскую раскладку под w9x?
Может еще кто сталкивался с такой проблемой и находил решение?



Спасибо: 0 
ПрофильЦитата Ответить





Пост N: 310
Зарегистрирован: 08.04.06
ссылка на сообщение  Отправлено: 28.05.09 23:31. Заголовок: Re: Urri


Urri пишет:

 цитата:
Кстати, а можно ли, чтобы раскладка переключалась как в DOS, а то пользователи привыкли уже к определенным комбинациям клавиш переключения раскладки


Ну если в DOS переключали по Ctrl Shift, то достаточно заменить в Windows'е переключение тоже на Ctrl Shift, и всё.

alkresin пишет:

 цитата:
С gtwvt - нет.


И раскладка будет переключаться по Ctrl Shift и в gtwvt, и в gtwin, и в виндосе.
Правда, в gtwvt и виндосе - с любой стороны, а в gtwin, как ранее в DOS - справа на русскую, слева на латинскую.

Urri пишет:

 цитата:
Есть ли способы определения того, какая включена раскладка


Для gtwvt - абсолютно не проблема - виндосный индикатор раскладки в панели задач справа.

Для gtwin - тема обсуждалась (поищи), решение вроде есть, но хитрое, насколько я понял через создание параллельного процесса, который время от времени оценивает раскладку и выводит соотв. буковки где-нибудь в окне твоей программы. Короче, я так пока и не сподобился, хотя задача такая юзверями поставлена.

Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник


Пост N: 64
Зарегистрирован: 21.04.09
ссылка на сообщение  Отправлено: 29.05.09 14:00. Заголовок: Странно однако. Неуж..


Странно однако. Неужели у всех под GTWIN работает переключение раскладки клавиатуры под w9x и только я один попался на проблему? Очень хочется полноэкранный режим. А еще юзеры привыкли, что вокруг экрана бордюр показывает раскладку (зеленый, желтый, синий). Или я очень многого хочу и пора юзверей отучать от удобств?

Спасибо: 0 
ПрофильЦитата Ответить
администратор




Пост N: 1227
Зарегистрирован: 17.05.05
ссылка на сообщение  Отправлено: 29.05.09 14:16. Заголовок: Urri пишет: Неужели..


Urri пишет:

 цитата:
Неужели у всех под GTWIN работает переключение раскладки клавиатуры под w9x и только я один попался на проблему?


Не знаю как под Win9x , так как уже давно нет таких пользователей а вот в XP работает нормально как и в Windows ,
по крайней мере у меня.
Urri пишет:

 цитата:
А еще юзеры привыкли, что вокруг экрана бордюр показывает раскладку (зеленый, желтый, синий)


Да не плохо было бы такую штуку реализовать.

Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник


Пост N: 65
Зарегистрирован: 21.04.09
ссылка на сообщение  Отправлено: 29.05.09 15:09. Заголовок: Под XP у меня тоже р..


Под XP у меня тоже работает. Хорошо тем, у которых нет пользователей под win9x. А у меня таких большинство и измеряется сотней

Спасибо: 0 
ПрофильЦитата Ответить
moderator


Пост N: 189
Зарегистрирован: 06.07.06
ссылка на сообщение  Отправлено: 29.05.09 16:16. Заголовок: Urri пишет: А еще ю..


Urri пишет:

 цитата:
А еще юзеры привыкли, что вокруг экрана бордюр показывает раскладку (зеленый, желтый, синий).


А, может, дело именно в этом ? Судя по тому, что у вас бордюр показывает раскладку, вы пользуетесь не стандартными клавиатурными драйверами Windows, а какими-то специальными, еще из мира MS DOS - а они, возможно, несовместимы с 32-разрядными Windows - приложениями. Попробуйте поменять драйвер клавиатуры.

Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник


Пост N: 66
Зарегистрирован: 21.04.09
ссылка на сообщение  Отправлено: 29.05.09 16:46. Заголовок: Драйверы экрана и кл..


Драйверы экрана и клавиатуры из "мира MS DOS" (UNIKBD & UNISCR) совсем отключил, но это не помогло переключаться раскладке при запущенной программе на xHarbour. После выхода их программы - все переключается.

Спасибо: 0 
ПрофильЦитата Ответить
moderator


Пост N: 190
Зарегистрирован: 06.07.06
ссылка на сообщение  Отправлено: 29.05.09 17:32. Заголовок: Чем переключаются ? ..


Чем переключаются ? Т.е. у вас UNIKBD & UNISCR запускаются поверх виндовских ( как таь они называются - уже не помню ) ?

Для интереса - качните http://kresin.belgorod.su/down/dbch3_5.zip - это моя утилита DBC, скомпилированная Harbour с gtwin. Сегодня проверял ее на работе на компах с Win98 - раскладка переключалась.

Спасибо: 0 
ПрофильЦитата Ответить





Пост N: 311
Зарегистрирован: 08.04.06
ссылка на сообщение  Отправлено: 29.05.09 21:04. Заголовок: Re: Urri


Urri пишет:

 цитата:
Драйверы экрана и клавиатуры из "мира MS DOS" (UNIKBD & UNISCR) совсем отключил, но это не помогло переключаться раскладке при запущенной программе на xHarbour


А системный русификатор настроить пробовал? Ну это в WIN'9x когда в CONFIG.SYS пишешь:

DEVICE=C:\WINDOWS\COMMAND\DISPLAY.SYS CON=(EGA,,1)
COUNTRY=007,866,C:\WINDOWS\COMMAND\COUNTRY.SYS

а в AUTOEXEC.BAT пишешь:

MODE CON CODEPAGE PREPARE=((866) C:\WINDOWS\COMMAND\EGA3.CPI)
MODE CON CODEPAGE SELECT=866
KEYB RU,866,C:\WINDOWS\COMMAND\KEYBRD3.SYS

И после перезагрузки компа переключение идёт по Ctrl Shift (справа - на русский, слева - на латинский), приятно попискивая при этом. :sm12

Я это к тому, что в GTWINе переключение раскладки работает DOSовское, а в GTWVT - уже виндосовское.

Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник


Пост N: 67
Зарегистрирован: 21.04.09
ссылка на сообщение  Отправлено: 30.05.09 08:53. Заголовок: Лукашевский пишет: ..


Лукашевский пишет:

 цитата:
А системный русификатор настроить пробовал? Ну это в WIN'9x когда в CONFIG.SYS пишешь:



Ясное дело, пробовал. Из autoexec.bat убирал все, что относится к UNI... Перегружался...
До запуска программы - раскладка переключается CtrlShift и индикатор в правом нижнем углу об этом говорит, запускаю программу - не переключается, снимаю программу - опять переключается. Это все с GTWIN, а с GTWVT все нормально

Лукашевский пишет:

 цитата:
Я это к тому, что в GTWINе переключение раскладки работает DOSовское, а в GTWVT - уже виндосовское.



Хм. Странно. У меня на XP с GTWIN переключение раскладки виндовское... Хорошо вам тут всем, кто работает только на ХР, а у меня тут такая бодяга с w9x...

Спасибо: 0 
ПрофильЦитата Ответить





Пост N: 313
Зарегистрирован: 08.04.06
ссылка на сообщение  Отправлено: 30.05.09 12:09. Заголовок: Urri пишет: Хорошо ..


Urri пишет:

 цитата:
Хорошо вам тут всем, кто работает только на ХР


У меня ноутбук работает под Win'ME (это продолжение линейки 9x), а на домашнем компе обе системы - и 98-й, и XP - и везде всё на GTWIN прекрасно работает с системным русификатором.
Вопрос: ты GTWIN пользуешь переработанный местными умельцами, в виде GTWIN.OBJ ? Если нет, то очень зря - может быть, дело как раз в этом.

Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник


Пост N: 68
Зарегистрирован: 21.04.09
ссылка на сообщение  Отправлено: 30.05.09 13:40. Заголовок: Лукашевский пишет: ..


Лукашевский пишет:

 цитата:
Вопрос: ты GTWIN пользуешь переработанный местными умельцами, в виде GTWIN.OBJ ? Если нет, то очень зря - может быть, дело как раз в этом.



Я бы пользовался, если бы некоторые господа-товарищи поделились этим самым GTWIN.OBJ (а можно и с исходником)... Дай, пожалуйста...

А где вообще пробегают новинки, переработанный местными умельцами, и есть ли цельный комплект сборки xHarbour со внесенными изменениями? Или на CVS по крохам собирать?

Спасибо: 0 
ПрофильЦитата Ответить





Пост N: 314
Зарегистрирован: 08.04.06
ссылка на сообщение  Отправлено: 30.05.09 15:42. Заголовок: Urri пишет: Дай, по..


Urri пишет:

 цитата:
Дай, пожалуйста...


Куда выслать?

Urri пишет:

 цитата:
А где вообще пробегают новинки, переработанный местными умельцами


А где-то примерно здесь и пробегают надо только знать, что искать - а тема соотв. была - сыр-бор разгорелся вроде из-за того, что в стандартной GTWIN вместо русской "р" что-то другое печаталось...

Спасибо: 0 
ПрофильЦитата Ответить
администратор




Пост N: 1229
Зарегистрирован: 17.05.05
ссылка на сообщение  Отправлено: 30.05.09 16:00. Заголовок: Лукашевский пишет: ..


Лукашевский пишет:

 цитата:
Куда выслать?


urrisoft@dneprogaz.dp.ua

Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник


Пост N: 69
Зарегистрирован: 21.04.09
ссылка на сообщение  Отправлено: 30.05.09 16:21. Заголовок: Dima пишет: urrisof..


Dima пишет:

 цитата:
urrisoft@dneprogaz.dp.ua



Да, на этот адрес шлите пожалуйста.

А есть кто-нибудь собиратель итогов бурного обсуждения и достижений народных умельцев?

Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник


Пост N: 70
Зарегистрирован: 21.04.09
ссылка на сообщение  Отправлено: 30.05.09 17:53. Заголовок: Спасибо Андрею Лукаш..


Спасибо Андрею Лукашевскому: прислал мне исправленный GTWIN.С...

И было бы все хорошо, если бы до этого в наших дискуссиях Pasha любезно не прислал мне кусок исправлений, которые мне решили проблему с ф-цией KBDSTATE. А в присланном Андреем GTWIN.C эти исправления не учтены. Я могу конечно повторить корректировку, но через 2-3 такие ситуации можно будет запутаться. Поэтому и спрашиваю: есть ли тот, который выполняет благородную и нужную задачу собирания всех исправлений и получения одного-единого комплекта для всего сообщества (с этого сайта, например) , пользующегося xHarbour. А то у каждого свой вариант и это наверное неправильно...

Спасибо: 0 
ПрофильЦитата Ответить





Пост N: 315
Зарегистрирован: 08.04.06
ссылка на сообщение  Отправлено: 31.05.09 14:24. Заголовок: Urri пишет: есть ли..


Urri пишет:

 цитата:
есть ли тот


Скорее всего, нет.

Поэтому я, например, держу у себя в отдельном PRG-модуле программы ВСЕ необходимые сишные изменения и дополнения. И ничего пока не путается.

Urri пишет:

 цитата:
проблему с ф-цией KBDSTATE


А что ты ею делаешь? Если определяешь нажатие Alt, например, то посмотри мою переделку функции FT_ALT() в теме ASM - она частично решает проблему (к сожалению, кроме отлавливания комбинаций Alt с русскими буквами посредством SET KEY).

Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник


Пост N: 71
Зарегистрирован: 21.04.09
ссылка на сообщение  Отправлено: 31.05.09 15:57. Заголовок: Лукашевский пишет: ..


Лукашевский пишет:

 цитата:
Поэтому я, например, держу у себя в отдельном PRG-модуле программы ВСЕ необходимые сишные изменения и дополнения.



Может поделишься?

Спасибо: 0 
ПрофильЦитата Ответить





Пост N: 316
Зарегистрирован: 08.04.06
ссылка на сообщение  Отправлено: 31.05.09 21:26. Заголовок: Urri пишет: Может п..


Urri пишет:

 цитата:
Может поделишься?



Извини, я немного погорячился в предыдущем сообщении: в этом модуле у меня не все сишные функции, а только те, что могут повторяться. GTWIN.OBJ в связи с этим тоже прилепляется отдельно, на этапе линковки.

* (x)Harbour'ные функции (включая Cишные)

#include "gtinfo.ch"
#include "mypublic.ch"
#include "wrdconst.ch"
#include "xlsconst.ch"

Function SETLASTKEY(par)
return HB_SETLASTKEY(par)

Function DosIDLE()
return NIL

#pragma BEGINDUMP

#include "windows.h"
#include "hbapi.h"
#include "hbapiitm.h"

#define HB_OS_WIN_32_USED
#define _WIN32_WINNT 0x0400

HB_FUNC ( SETWCLIPBOARD )
{
HGLOBAL hglbCopy;
char * lptstrCopy;
char * cStr = hb_parc( 1 );
int nLen = strlen( cStr );


if ( !OpenClipboard( GetActiveWindow() ) )
return;

EmptyClipboard();

hglbCopy = GlobalAlloc( GMEM_DDESHARE, (nLen+1) * sizeof(TCHAR) );
if (hglbCopy == NULL)
{
CloseClipboard();
return;
}

// Lock the handle and copy the text to the buffer.

lptstrCopy = (char*) GlobalLock( hglbCopy );
memcpy( lptstrCopy, cStr, nLen * sizeof(TCHAR));
lptstrCopy[nLen] = (TCHAR) 0; // null character
GlobalUnlock(hglbCopy);

// Place the handle on the clipboard.
SetClipboardData( CF_TEXT, hglbCopy );

CloseClipboard();
}


HB_FUNC ( WCLIPBOARD )
{
if ( !OpenClipboard( GetActiveWindow() ) )
return;
hb_retc(GetClipboardData( CF_TEXT ));
CloseClipboard();
}

HB_FUNC ( SETFILEAPIS ) // Имена файлов в кодировке OEM
{
SetFileApisToOEM();
}


HB_FUNC ( FT_ALT )
{
hb_retl( GetKeyState( VK_LMENU ) + GetKeyState( VK_RMENU ) < 0 );
}

HB_FUNC ( FT_CTRL )
{
hb_retl( GetKeyState( VK_LCONTROL ) + GetKeyState( VK_RCONTROL ) < 0 );
}

HB_FUNC ( FT_SHIFT )
{
hb_retl( GetKeyState( VK_LSHIFT ) + GetKeyState( VK_RSHIFT ) < 0 );
}


HB_FUNC ( ISEXERUNNING ) // ( cExeNameCaseSensitive ) --> lResult
{
HANDLE hMutex = CreateMutex( NULL, TRUE, (LPTSTR) hb_parc(1) );

hb_retl( GetLastError() == ERROR_ALREADY_EXISTS );

ReleaseMutex( hMutex );
}

#pragma ENDDUMP

Спасибо: 0 
ПрофильЦитата Ответить
Администратор




Пост N: 1150
Зарегистрирован: 23.05.05
ссылка на сообщение  Отправлено: 03.06.09 14:02. Заголовок: Urri пишет: Спасибо..


Urri пишет:

 цитата:
Спасибо Андрею Лукашевскому: прислал мне исправленный GTWIN.С...

И было бы все хорошо, если бы до этого в наших дискуссиях Pasha любезно не прислал мне кусок исправлений, которые мне решили проблему с ф-цией KBDSTATE. А в присланном Андреем GTWIN.C эти исправления не учтены. Я могу конечно повторить корректировку, но через 2-3 такие ситуации можно будет запутаться. Поэтому и спрашиваю: есть ли тот, который выполняет благородную и нужную задачу собирания всех исправлений и получения одного-единого комплекта для всего сообщества (с этого сайта, например) , пользующегося xHarbour. А то у каждого свой вариант и это наверное неправильно...



Юрий, я добавил патч с русской "р", и отправил по почте

Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник


Пост N: 72
Зарегистрирован: 21.04.09
ссылка на сообщение  Отправлено: 03.06.09 15:39. Заголовок: Лукашевский пишет: В..


Лукашевский пишет:

 цитата:
Вопрос: ты GTWIN пользуешь переработанный местными умельцами, в виде GTWIN.OBJ ? Если нет, то очень зря - может быть, дело как раз в этом.



При трансляции полученного .С модуля ругается о том, что

Undefined symbol hb_cdp_page.

Ни в одном .H или .СH, входящих в пакет bcc55 или xHarbour определения этого символа нет.

В чем дело и где решение проблемы искать?

Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник


Пост N: 73
Зарегистрирован: 21.04.09
ссылка на сообщение  Отправлено: 05.06.09 14:48. Заголовок: alkresin пишет: Пол..


alkresin пишет:

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



А как заставить окно программы открываться в нужном месте экрана? А то при запуске программы показывается только правая половина и я уже задолбался двигать каждый раз при запуске программы это самое окно на середину... Среди параметров hb_gtinfo не удалось найти нужных

Спасибо: 0 
ПрофильЦитата Ответить
moderator


Пост N: 192
Зарегистрирован: 06.07.06
ссылка на сообщение  Отправлено: 05.06.09 20:48. Заголовок: Urri пишет: А то пр..


Urri пишет:

 цитата:
А то при запуске программы показывается только правая половина


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

Спасибо: 0 
ПрофильЦитата Ответить





Пост N: 325
Зарегистрирован: 08.04.06
ссылка на сообщение  Отправлено: 05.06.09 22:14. Заголовок: Urri пишет: Среди п..


Urri пишет:

 цитата:
Среди параметров hb_gtinfo не удалось найти нужных


Посмотри, как это у меня сделано, вдруг поможет. Хотя не факт, что это самый лучший вариант, - тоже пара тем тут на форуме обсуждалась по этому вопросу.

if HB_GTVERSION() == "WVT"
wint = HB_GtInfo(GTI_DESKTOPWIDTH)
v_all = HB_GtInfo(GTI_DESKTOPHEIGHT)
HB_GtInfo(GTI_FONTNAME, "Lucida Console")
HB_GtInfo(GTI_FONTSIZE, IIF(v_all > 800, 34, IIF(v_all > 640, 18, 16)))
HB_GtInfo(GTI_FONTWIDTH, IIF(wint > 1024, 16, IIF(wint > 800, 12, 9)))
else
SetConsoleDisplayMode(1) && в полноэкранный режим
SetMode(25, 80)
endif

Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник


Пост N: 74
Зарегистрирован: 21.04.09
ссылка на сообщение  Отправлено: 06.06.09 19:01. Заголовок: alkresin пишет: Воз..


alkresin пишет:

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



Шрифт нормальный, после дергания окна по экрану в новом положении все выглядит аккуратно, я бы даже сказал красиво... Даже и неясно чего это такое поведение при запуске...

Еще всплыла проблема... Благодаря советам alkresin заработали было в ADS SQL-запросы к dbf таблицам. Я очень от этого порадовался, т.к. весьма расчитывал на эту возможность в связке xHarbour & ADS. Однако выяснилось, что все хорошо работало в тестовом примере (до открытия баз данных задачи), а после открытия выдает AdsCreateSqlStatement( ,2 )=.f.
После закрытия баз - все опять работает нормально. Что это за козни такие и как с этим бороться?


Спасибо: 0 
ПрофильЦитата Ответить
moderator


Пост N: 193
Зарегистрирован: 06.07.06
ссылка на сообщение  Отправлено: 08.06.09 09:57. Заголовок: Urri пишет: После з..


Urri пишет:

 цитата:
После закрытия баз - все опять работает нормально. Что это за козни такие и как с этим бороться?


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

Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник


Пост N: 75
Зарегистрирован: 21.04.09
ссылка на сообщение  Отправлено: 09.06.09 14:26. Заголовок: *-------------------..


*--------------------------------------

procedure main
request DBFCDX,DBFNTX
Request Ads
? curdir_()
? AdsSetServerType(1)
? AdsIsServerLoaded('g:\')
? AdsConnect("g:\")
rddSetDefault('ADSCDX')

select(100)
if !AdsExecuteSqlDirect( "SELECT * FROM rab\street WHERE kod<=20" )
? "AdsExecuteSqlDirect - error"
endif

? Reccount()


Вот такой текст тестовой программы. Вообще не работает.
curdir_() возвращает
g:\rab\
? AdsSetServerType(1)
0
? AdsIsServerLoaded('g:\')
1
? AdsConnect("g:\")
.t.

После этого
"AdsExecuteSqlDirect - error"

В g:\rab\ имеется примитивная база street.dbf с тремя полями kod n(4),naim c(20),kolic n(6)

Не работает также и для remote сервера если поменять g: на m: и в AdsSetServerType(1) поставить параметром 2.

Самое интересно то, что этот тестовый пример, запущенный через мой интерпретатор - работает. Удивительно до невозможности. Но потом и интерпретаторе, если открыть обычным клипперовским способом любую базу - перестает работать. Закроешь все - снова работает. Даже отдельное закрытие алиаса ADSSQL не помогает


Спасибо: 0 
ПрофильЦитата Ответить
moderator


Пост N: 194
Зарегистрирован: 06.07.06
ссылка на сообщение  Отправлено: 11.06.09 08:37. Заголовок: А куда потерялся Ads..


А куда потерялся AdsCreateSqlStatement() ???
Запустил ваш пример в таком виде:

PROCEDURE main
LOCAL arr := { { "KOD","N",4,0 }, { "NAIM","C",20,0 } }
REQUEST DBFCDX, DBFNTX
REQUEST Ads

? CurDir()
? AdsSetServerType( 1 )
? AdsIsServerLoaded( 'c:\' )
? AdsConnect( "c:\" )
rddSetDefault( 'ADSCDX' )

dbCreate( "c:\street.dbf", arr )
use ("c:\street.dbf")
append blank
replace kod with 12,naim with "12"
append blank
replace kod with 30,naim with "30"
dbCloseArea()
SELECT( 100 )
IF !AdsCreateSqlStatement( , 2 )
? "Cannot create SQL statement"
ENDIF
IF !AdsExecuteSqlDirect( "SELECT * FROM street WHERE kod<=20" )
? "AdsExecuteSqlDirect - error"
ENDIF

? RecCount()

RETURN Nil

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

Спасибо: 0 
ПрофильЦитата Ответить



Пост N: 41
Зарегистрирован: 19.12.06
ссылка на сообщение  Отправлено: 12.06.09 08:41. Заголовок: to alkresin: Есть л..


to alkresin: Есть ли возможность подключить в RDDADS функцию AdsSetString , чтобы использовать подстановку параметров в запросе ?
http://devzone.advantagedatabase.com/dz/webhelp/Advantage9.0/mergedProjects/ace/api3/adspreparesql.htm

Спасибо: 0 
ПрофильЦитата Ответить
Администратор




Пост N: 1159
Зарегистрирован: 23.05.05
ссылка на сообщение  Отправлено: 12.06.09 09:28. Заголовок: Вызов AdsSet* можно ..


Вызов AdsSet* можно добавить и самому

#pragma BEGINDUMP
#include "hbapi.h"
#include "rddads.h"

HB_FUNC( ADSSETSTRING )
{
AdsSetString( hb_parnl(1), hb_parc(2), hb_parc(3), hb_parclen(3) );
}

#pragma ENDDUMP

Хотя этот wrapper можно добавить и в rddads


Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник


Пост N: 76
Зарегистрирован: 21.04.09
ссылка на сообщение  Отправлено: 12.06.09 10:56. Заголовок: Добрый день, уважаем..


Добрый день, уважаемые...


alkresin пишет:

 цитата:
А куда потерялся AdsCreateSqlStatement() ???



Есть в реальном примере, честное слово. Не знаю как вывалился в моем вопросе... Извиняюсь...

В том виде, в котором вы прислали подкорректированный мой пример, и у меня запустилось.
Только вот после того, как я между строками dbclosearea() и select(100) добавил строки

select 0
use c:\street

начало вываливаться сообщение

AdsExecuteSqlDirect - error

Т.е. получается: если я работаю с .DBF файлом в обычном клипперовском смысле и мне в какой-то момент нужно по нему сделать какую-то выборку соответствующий алиас нужно закрывать а потом снова открывать???

А если с этой таблицей параллельно работают другие пользователи на сети - то работает... Неожиданно однако...

alkresin пишет:

 цитата:
Кстати, прошу вас в дальнейшем приводить примеры именно в таком виде, готовом к исполнению, не предлагая создать таблицу где-то в rab/ - чтобы можно было, не теряя времени, скопировать его в prg и запустить.



Признаю свою ошибку и извиняюсь. Категорически обещаю исправиться...
Благодарю за вашу помощь и внимание к моим проблемам.



Спасибо: 0 
ПрофильЦитата Ответить



Пост N: 42
Зарегистрирован: 19.12.06
ссылка на сообщение  Отправлено: 12.06.09 11:07. Заголовок: Cпасибо, добавил в п..


Cпасибо, добавил в проект. Cтранно, что никому больше не нужен был вызов этой функции, хотя она включена только для 9 версии ADS.

Спасибо: 0 
ПрофильЦитата Ответить
moderator


Пост N: 198
Зарегистрирован: 06.07.06
ссылка на сообщение  Отправлено: 12.06.09 19:46. Заголовок: Urri пишет: Только ..


Urri пишет:

 цитата:
Только вот после того, как я между строками dbclosearea() и select(100) добавил строки

select 0
use c:\street

начало вываливаться сообщение

AdsExecuteSqlDirect - error

Т.е. получается: если я работаю с .DBF файлом в обычном клипперовском смысле и мне в какой-то момент нужно по нему сделать какую-то выборку соответствующий алиас нужно закрывать а потом снова открывать???



Вы же открыли таблицу в exclusive режиме...
Попробуйте use c:\street shared


Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник


Пост N: 77
Зарегистрирован: 21.04.09
ссылка на сообщение  Отправлено: 14.06.09 10:46. Заголовок: alkresin пишет: Вы ..


alkresin пишет:

 цитата:
Вы же открыли таблицу в exclusive режиме...
Попробуйте use c:\street shared



Да, спасибо, так получилось.

В пердыдущих своих попытках работать с SQL в больших проектах у меня тоже не получалось, хотя там все базы открываются в режиме shared. А теперь и там получается, наверное, следуя вашим советам, сделал что-то правильно и успех достигнут. Нужно теперь будет подробнее изучить ADS'овский SQL: читал, что имеются существенные ограничения. Но все-равно - прогресс, а то вызывать FOXPRO для получения выборок и итогов, для чего вся база тащется по сети, уже достало.

Еще раз спасибо за терпение и внимание.


Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник


Пост N: 78
Зарегистрирован: 21.04.09
ссылка на сообщение  Отправлено: 17.06.09 08:33. Заголовок: Добрый день. Пытаюс..


Добрый день.

Пытаюсь активно работать с SQL запросами. То радуюсь, то расстраиваюсь.

Сейчас такая проблема:
если записать where prz_pdc='Дт', то не отбирает, русские буквы не понимает.

В программе есть операторы

REQUEST HB_LANG_RU866
REQUEST HB_CODEPAGE_RU866
hb_SetCodepage( "RU866" )

В настройках ADSLOCAL.CFG

; ANSI Character Set
ANSI_CHAR_SET=RUSSIAN
; OEM/Localized Character Set
OEM_CHAR_SET=RUSSIAN

Сервере для remote такие параметры установлены и тоже не работает отбор.
Замена 'Дт' DOS кодировки на Windows к положительному результату не приводит.

Что делать, подскажите

Спасибо: 0 
ПрофильЦитата Ответить
Администратор




Пост N: 1166
Зарегистрирован: 23.05.05
ссылка на сообщение  Отправлено: 17.06.09 08:52. Заголовок: Urri пишет: Что дел..


Urri пишет:

 цитата:
Что делать, подскажите



При старте программы надо указать:
AdsSetCharType( 2, .t. )


Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник


Пост N: 79
Зарегистрирован: 21.04.09
ссылка на сообщение  Отправлено: 17.06.09 10:07. Заголовок: Pasha пишет: При ст..


Pasha пишет:

 цитата:
При старте программы надо указать:
AdsSetCharType( 2, .t. )



Такой оператор уже имеется в программе, но не помогает.

Спасибо: 0 
ПрофильЦитата Ответить
Администратор




Пост N: 1167
Зарегистрирован: 23.05.05
ссылка на сообщение  Отправлено: 17.06.09 11:08. Заголовок: Urri пишет: Такой о..


Urri пишет:

 цитата:
Такой оператор уже имеется в программе, но не помогает.



А функции upper/lower для полей БД правильно работают ?

В качестве теста русских строк в sql-операторах можно выполнить такую команду

update table1
set field1 = 'А'
where RecID = :nRecID

и затем проверить, правильно ли записываются русские символы


Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник


Пост N: 80
Зарегистрирован: 21.04.09
ссылка на сообщение  Отправлено: 17.06.09 11:42. Заголовок: В качестве теста вып..


В качестве теста выполнял команды

sql="update abonent\dbf\street set unaim='АБВГДЕ'"
Что в DOS кодировке, что в Windows кодировке записывало в базу полную фигню

sql="update abonent\dbf\street set unaim=upper(naim)"
Также в базу записывает фигню. Но если в цикле программно пробежаться и сделать такое присвоение с использованием встроенной ф-ции upper - все нормально получается.

И что это означает?

Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник


Пост N: 81
Зарегистрирован: 21.04.09
ссылка на сообщение  Отправлено: 18.06.09 11:10. Заголовок: Urri пишет: Pasha п..


Urri пишет:

 цитата:
Pasha пишет:

цитата:
При старте программы надо указать:
AdsSetCharType( 2, .t. )




С этой ф-цией программа работает нормально, но не работает SQL запрос в том виде как я писал. Убрал вызов этой ф-ции - заработал SQL запрос, но многое другое поломалось. Вот же незадача... И как с этим бороться?

Спасибо: 0 
ПрофильЦитата Ответить
Администратор




Пост N: 1170
Зарегистрирован: 23.05.05
ссылка на сообщение  Отправлено: 18.06.09 12:23. Заголовок: Urri пишет: И как с..


Urri пишет:

 цитата:
И как с этим бороться?



Тогда причина понятна. Не буду вдаваться в подробности, надо в модуле rddads\adsfunc.c
в функции

HB_FUNC( ADSEXECUTESQLDIRECT )

строку

char * pucStmt = hb_adsOemToAnsi( hb_parc( 1 ), hb_parclen( 1 ) );

заменить на

char * pucStmt = hb_parc( 1 );

и пересобрать rddads.lib


Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник


Пост N: 82
Зарегистрирован: 21.04.09
ссылка на сообщение  Отправлено: 18.06.09 16:00. Заголовок: Ура. Заработало. Па..


Ура. Заработало.

Павел, большое спасибо. Выручил, как всегда...

Спасибо: 0 
ПрофильЦитата Ответить
Администратор




Пост N: 1172
Зарегистрирован: 23.05.05
ссылка на сообщение  Отправлено: 18.06.09 16:15. Заголовок: Не можете проверить,..


Не можете проверить, правильно ли работают функции

AdsPrepareSQL
AdsVerifySql

содержащие строковые константы с русскими симолами ?

Если нет, в этих функциях надо сделать подобную замену

Вызов hb_adsOemToAnsi добавлялся, так как ace делает неявную перекодировку
строк ansi -> oem, полагая, что получает строки в кодировке ansi, что не так
Получается в этих функциях по крайней мере ace 8 такую перекодировку не выполняет,
значит, вызов hb_adsOemToAnsi не нужен


Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник


Пост N: 695
Зарегистрирован: 09.10.06
ссылка на сообщение  Отправлено: 18.06.09 16:59. Заголовок: Pasha пишет: вызов ..


Pasha пишет:

 цитата:
вызов hb_adsOemToAnsi



Нужен вызов или нет - это еще вопрос, а если все жестко зашито в исходники и исходники в кодировке OEM?
И простой заменой
char * pucStmt = hb_adsOemToAnsi( hb_parc( 1 ), hb_parclen( 1 ) );
на
char * pucStmt = hb_parc( 1 );
тоже не надо ограничиваться.

Если менять, то уже как надо
#ifdef ADS_USE_OEM_TRANSLATION
char * pucStmt = ( hb_ads_bOEM ) ? hb_adsOemToAnsi( hb_parc( 1 ), hb_parclen( 1 ) : hb_parc(1) );
else
char * pucStmt = hb_parc(1);
#endif
..
..
#ifdef ADS_USE_OEM_TRANSLATION
if(pucStmt) hb_adsOemAnsiFree(pucStmt);
#endif

и так по всему adsfunc.c

Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник


Пост N: 83
Зарегистрирован: 21.04.09
ссылка на сообщение  Отправлено: 18.06.09 17:37. Заголовок: Проверил. Если сдела..


Проверил.
Если сделать ADSConnect и ADSCreateSQLStatement, то AdsPrepareSQL и AdsVerifySql с подставленным SQL запросом с русскими символами в строковых константах выдают .t. Так наверное и должно быть на этом этапе работы с SQL запросом. Ведь и в том примере, который у меня не работал, ошибка не возникала, просто ничего не отбирала. А в исходниках этих ф-ций такая же перекодировка стоит, как и для ADSEXECUTESQLDIRECT. Наверное для единообразия нужно и в этих ф-циях убрать эту самую перекодировку, т.к. сомнительно, чтобы разработчики rdd_sql считали, что ADS по-разному обрабатывает кодировки в каждой из этих ф-ций.

Еще такой вопрос. Вызываю указанные ранее 4 ф-ции первый раз - последние две дают .t. Второй и последующие разы - дают .f. Неясно, почему так. Вызываю ADSDisconnect() - не помогает. А что нужно вызывать, чтобы каждый раз был положительный результат у ADSVerify и ADSPrepareSQL.

И еще вопрос. Стало как-то нестабильно работать программа. После моего заработавшего запроса я вызываю DBEDIT() без параметров, без наворотов, просто чтобы посмотреть что получилось. После нажатия ESC в DBEDIT программа вываливается с дикими виндовыми ошибками и просит извинить за неудобства. Причем на какой-то непредсказуемый раз позволяет несколько раз выполнить запрос, войти-выйти из DBEDIT() и опять таки поломаться. Что бы это значило? А то меня такая нестабильность удивляет и пугает, а пользователи просто орать благим матом будут.

Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник


Пост N: 84
Зарегистрирован: 21.04.09
ссылка на сообщение  Отправлено: 23.06.09 15:56. Заголовок: Добрый день, уважаем..


Добрый день, уважаемые.

Замучал я всех xHarbour'ом. Работает нестабильно с SQL запросами (см.предыдущее письмо) и медленно, по сравнению с Клиппером, на w98 (даже и непонятно почему... Или так и должно быть?), на сетевой принтер команда set printer to lpt2 не работает.

Переполз на Harbour. Удивительно, что некоторые куски программ перестали работать (хотя в xHarbour запустились, имелись свои удивительные неожиданности, связанные с промежуточным С). Но тут вот новая-старая проблема: невозможно прочитать состояние клавиатуры...
kbdstat() и hb_gtInfo(GTI_KBDSHIFTS) выдают значение 128 и на нажатие CTRL/ALT/SHIFT не реагируют. Причем как-то удивительно: если после вызова i=kbdstat() вызвать j=getkeyboardstate(), то в i что-то изменяется (и даже в соответствии с описанием), если вызов j=getkeyboardstate() убрать - снова kbdstat() возвращает 128. Что бы это значило? Я такого поведения программы совсем не понимаю. И как с этим бороться? Не оставьте без внимания мои трудности, сколько уже преодолено с помощью знатоков...


Спасибо: 0 
ПрофильЦитата Ответить



Не зарегистрирован
Зарегистрирован: 01.01.70
ссылка на сообщение  Отправлено: 23.06.09 17:58. Заголовок: Urri пишет: Перепол..


Urri пишет:

 цитата:
Переполз на Harbour.



Urri, открой новую тему начинающего с Harbour.
Невозможно читать все 13 стр.

Спасибо: 0 
Цитата Ответить
постоянный участник




Пост N: 876
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 23.06.09 19:51. Заголовок: Urri пишет: на сете..


Urri пишет:

 цитата:
на сетевой принтер команда set printer to lpt2 не работает.


Переделай вывод на печать....
Здесь на форуме уже обсуждались эти проблемы, ищи и читай....

Urri пишет:

 цитата:
Замучал я всех xHarbour'ом


Пиши какая версия !

Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник


Пост N: 85
Зарегистрирован: 21.04.09
ссылка на сообщение  Отправлено: 23.06.09 21:28. Заголовок: Andrey пишет: Пиши ..


Andrey пишет:

 цитата:
Пиши какая версия !



xHarbour Compiler build 1.2.1 (SimpLex) (Rev. 6406)

Сам же ссылку мне и давал при каком-то обсуждении (по поводу совместной работы клиппера и фокспро с .CDX индексами)

Andrey пишет:

 цитата:
Переделай вывод на печать....
Здесь на форуме уже обсуждались эти проблемы, ищи и читай....



Затрахался я уже переделывать. Ни одной приличной ф-ции нету, все какие-то калечные, написанные "для совместимости"... А для нормальной работы - ничего нет. Последних 15 лет у меня вывод на печать прекрасно работал через прерывание FT_INT86, но эта ф-ция в xHarbour (и похоже в Harbour) не работает, а также FT_PEEK для работы с клавиатурой. Извини, крик души...

Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник




Пост N: 877
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 24.06.09 11:27. Заголовок: Urri пишет: Затраха..


Urri пишет:

 цитата:
Затрахался я уже переделывать.


И не только ты один .... но такая работа программиста....

Спасибо: 0 
ПрофильЦитата Ответить
moderator


Пост N: 202
Зарегистрирован: 06.07.06
ссылка на сообщение  Отправлено: 24.06.09 14:55. Заголовок: Urri пишет: Еще так..


Urri пишет:

 цитата:
Еще такой вопрос. Вызываю указанные ранее 4 ф-ции первый раз - последние две дают .t. Второй и последующие разы - дают .f. Неясно, почему так. Вызываю ADSDisconnect() - не помогает. А что нужно вызывать, чтобы каждый раз был положительный результат у ADSVerify и ADSPrepareSQL.

И еще вопрос. Стало как-то нестабильно работать программа. После моего заработавшего запроса я вызываю DBEDIT() без параметров, без наворотов, просто чтобы посмотреть что получилось. После нажатия ESC в DBEDIT программа вываливается с дикими виндовыми ошибками и просит извинить за неудобства. Причем на какой-то непредсказуемый раз позволяет несколько раз выполнить запрос, войти-выйти из DBEDIT() и опять таки поломаться. Что бы это значило? А то меня такая нестабильность удивляет и пугает, а пользователи просто орать благим матом будут.



Подготовьте 2 самодостаточных ( чтобы не надо было ничего дописывать и dbf создавать ) примера, которые демонстрируют указанные проблемы, тогда можно будет что-то обсуждать.

Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник


Пост N: 86
Зарегистрирован: 21.04.09
ссылка на сообщение  Отправлено: 24.06.09 16:15. Заголовок: Вот программа самодо..


Вот программа самодостаточная:

*--------------------------------------

procedure main

LOCAL arr := { { "KOD","N",4,0 }, { "NAIM","C",60,0 } }

public numsql:=0

REQUEST DBFCDX, DBFNTX, Ads
Request HB_LANG_RU866,HB_CODEPAGE_RU866

hb_SetCodepage( "RU866" )
AdsSetCharType( 2, .t. )

? 'curdir=',CurDir()
? AdsSetServerType( 1 )
? 'AdsIsServerLoaded=',AdsIsServerLoaded( 'c:\' )
? 'ADSConnect=',AdsConnect( "c:\" )
rddSetDefault( 'ADSCDX' )

dbCreate( "c:\street.dbf", arr )
use c:\street.dbf
for i=1 to 100
append blank
replace kod with i,naim with "Привет "+str(i,3)
next
dbCloseArea()

select 0
use c:\street shared

for i=1 to 1000
&& 1 sql=[update street set naim='1'+upper(naim)]
&& 2 sql=[update street set naim=upper(naim)]
&& 3 sql=[update street set naim=']+str(i,3)+['+upper(naim)]

? i,sql
inkey(100)
runsql(sql,,.t.,'c:\')
select street
dbedit()
next

quit

*--------------------------------------

function RunSql(cSQL,cAli,CloseSel,path)
local selsql,sel:=select()

select 0
selsql=select()
if valtype(cAli)<>'C'
numsql++
cAli='SQL'+alltrim(str(numsql))
endif
if valtype(path)<>'C'
path=substr(path_net,1,3)
ADSConnect=ADSConnect(path)
endif
IF !AdsCreateSqlStatement(cAli,2)
? "Cannot create SQL statement"
select(selsql)
use
select(sel)
return -1
ENDIF
IF !AdsExecuteSqlDirect(cSQL)
? "AdsExecuteSqlDirect - error"
select(selsql)
use
select(sel)
return -2
ENDIF
select(selsql)
if ValType(CloseSel)='L'.and.CloseSel
use
select(sel)
endif
return SelSql


Вот .bat для запуска:

@echo off

setlocal
cls

md objx
@del main.exe
@del main.tds
@del objx\main.exe
@del objx\main.tds
@del objx\*.obj > nul
@del objx\*.c > nul
@del objx\*.ppo > nul

@set path=%path%;g:\rab\

@set path=%path%;G:\PROC\BCC55\Bin\
@set HB_INSTALL=g:\proc\xharbour

@set HB_BIN_INSTALL=%HB_INSTALL%\bin
@set HB_LIB_INSTALL=%HB_INSTALL%\lib
@set HB_INC_INSTALL=%HB_INSTALL%\include

@set HB_BCC_INSTALL=g:\proc\bcc55
@set HB_BCC_BIN_INSTALL=%HB_BCC_INSTALL%\bin
@set HB_BCC_LIB_INSTALL=%HB_BCC_INSTALL%\lib
@set HB_BCC_INC_INSTALL=%HB_BCC_INSTALL%\include


%HB_BIN_INSTALL%\harbour main -n -q0 -gc -i%HB_INC_INSTALL% %HARBOURFLAGS% -oobjx\ -m /dxHarbour

@set HB_LIBLIST=common.lib debug.lib vm.lib rtl.lib zlib.lib pcrepos.lib gtwin.lib lang.lib rdd.lib macro.lib pp.lib dbffpt.lib dbfntx.lib dbfcdx.lib hsx.lib hbsix.lib ct.lib tip.lib rddads.lib ace32.lib ct.lib libnf.lib codepage.lib %HB_USER_LIBS%

%HB_BCC_BIN_INSTALL%\bcc32 -O2 -d -c -oobjx\main.obj %CFLAGS% -I%HB_BCC_INC_INSTALL% -I%HB_INC_INSTALL% -L%HB_BCC_LIB_INSTALL% -L%HB_LIB_INSTALL% objx\main.c %HB_LIBLIST%

%HB_BCC_BIN_INSTALL%\bcc32 -O2 -d -emain %CFLAGS% -nobjx\ -I%HB_BCC_INC_INSTALL% -I%HB_INC_INSTALL% -L%HB_BCC_LIB_INSTALL% -L%HB_LIB_INSTALL% objx\main.c %HB_LIBLIST%
copy objx\main.exe .

main.exe %1 %2 %3 %4 %5 %6 %7 %8 %9 //F:120 //swappath:'c:\' //temppath:'c:\'
endlocal



Там есть мой путь на g:\proc\ ... - там у меня xHarbour и BCC находятся

Проблема такая:
в цикле 1000 раз вызывается один из SQL запросов. (для проверки удалите && и номер)
&& 1 - работает нормально
&& 2 - работает нормально

&& 3 - первый раз вызывается нормально, второй раз и последующие может работать, а может и выдать "AdsExecuteSqlDirect - error" много раз, а может в какой-то непредсказуемый раз вылететь с виндовым сообщением об обнаруженной ошибке.

Хотелось получить рекомендации для устранения проблемы. А то мы очень надеялись на SQL запросы.

Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник


Пост N: 87
Зарегистрирован: 21.04.09
ссылка на сообщение  Отправлено: 24.06.09 17:01. Заголовок: Кстати, проверил это..


Кстати, проверил этот пример по Harbour - все прекрасно работает. Но при переходе на Harbour возникли другие проблемы, которые возможно прийдется героически преодолевать, а на xHarbour они уже как-то решены

Спасибо: 0 
ПрофильЦитата Ответить
moderator


Пост N: 203
Зарегистрирован: 06.07.06
ссылка на сообщение  Отправлено: 25.06.09 15:22. Заголовок: Странный у вас SQL з..


Странный у вас SQL запрос:

update street set naim='1'+upper(naim)

в поле naim каждый раз записывается значение, на 1 больше чем длина поля, тут все что угодно может произойти - в зависимости как ads такое переполнение обрабатывает. У меня вот на каждой итерации выдается предупреждение ( виндовое окошко выскакивает ) об ошибке и что 'data truncated' ...

Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник


Пост N: 88
Зарегистрирован: 21.04.09
ссылка на сообщение  Отправлено: 25.06.09 15:51. Заголовок: Запрос конечно надум..


Запрос конечно надуманный. Но каким бы он ни был - он синтаксически правильный. И не повод программе так себя вести. Запрос должен работать - или не работать, но постоянно. А то несколько раз сработает (причем количество раз - число случайное), но потом ломается. Или просто говорит, что видите ли "AdsExecuteSqlDirect - error", но не раньше второго вызова. А первый ему что, не такой уж и плохой?

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

Спасибо: 0 
ПрофильЦитата Ответить
moderator


Пост N: 205
Зарегистрирован: 06.07.06
ссылка на сообщение  Отправлено: 25.06.09 18:06. Заголовок: Проблема не в том, ч..


Проблема не в том, что он надуманный, а в том, что он неправильный. Он, действительно, генерирует AdsExecuteSqlDirect - error в каждой итерации по той причине, что пытается записать в поле NAIM значение, превышающее длину этого поля.
Попробуйте вместо вашего sql=[update street set naim=']+str(i,3)+['+upper(naim)] вот это:

sql=[update street set naim=']+str(i,3)+['+left(upper(naim),50)]




Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник


Пост N: 89
Зарегистрирован: 21.04.09
ссылка на сообщение  Отправлено: 25.06.09 21:04. Заголовок: Вопрос ведь не в это..


Вопрос ведь не в этом конкретном запросе. И почему он первый раз не генерирует сообщение об ошибке, хотя и в первый раз он пытается записать в поле значение, превышающее его длину (хотя в Клиппере, Фоксе или MS SQL, Oracle записывается только то, что помещается и сообщений об ошибке не дает). Плохо то, что вылетает с виндовой ошибкой. Точно такой же вылет наблюдается при более "правильных" запросах типа записать 0 в числовую переменную или TRUE логическую (я попробую воспроизвести такую ситуацию). Кстати я писал, что этот же пример, запущенный под Harbour, работает с тем же LOCAL ADS совершенно без проблем.

А что подскажите по поводу ф-ции FT_PEEK в Harbour? Она так же не работает, как и в xHarbour ?

Спасибо: 0 
ПрофильЦитата Ответить
moderator


Пост N: 206
Зарегистрирован: 06.07.06
ссылка на сообщение  Отправлено: 26.06.09 08:26. Заголовок: Я компилировал ваш п..


Я компилировал ваш пример как раз Harbour'ом ( xHarbour я не использую ), и у меня ошибка вылетала в каждой итерации, в т.ч. и первой - если убрать вызов dbedit(), который занимает весь экран, это будет лучше видно. Та "виндовая ошибка" - это сообщение ADS ( у меня по крайней мере ) - ADS всегда выдает такое окошко при ошибке в запросе.

 цитата:
Вопрос ведь не в этом конкретном запросе


Вы то мне дали именно этот конкретный запрос, я о нем и веду речь и утверждаю, что ADS ( а не xHarbour или Harbour ) воспринимает его как ошибочный. Других ваших запросов я не видел - возможно, и в них не все чисто. Кстати, если вы внимательно прочитаете ту "виндовую ошибку" ( сообщение ADS ), то найдете там, что именно не нравится ADS в вашем запросе.

 цитата:
А что подскажите по поводу ф-ции FT_PEEK в Harbour? Она так же не работает, как и в xHarbour ?


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

Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник


Пост N: 90
Зарегистрирован: 21.04.09
ссылка на сообщение  Отправлено: 26.06.09 10:01. Заголовок: Убрал DBEDIT(). В xH..


Убрал DBEDIT().
В xHarbour: в моем варианте SQL запроса выдает сообщение "AdsExecuteSqlDirect - error", но при этом запрос выполняется (изменения в базе street происходят), но только почему-то всего 28 раз работает и вылетает с виндовс ошибкой (а перед этим еще какие-то досовские непонятки случаются). Для вашего варианта запроса сообщение "AdsExecuteSqlDirect - error" не выдает, но работает только 22 раза и снова вылет в виндовс. Что за полная неразбериха и с какого потолка возникают цифры 28 и 22 ???
В Harbour в моем варианте продолжает выдавать сообщение "AdsExecuteSqlDirect - error", но при этом запрос выполняется, в вашем работает без сообщений все 1000 раз.

Похоже нужно на Harbour ориентироваться. Опять всякие засады преодолевать.

По-поводу FT_PEEK не совсем согласен. Если бы была верна аргументация последней части предыдущего сообщения по поводу "современных ОС", то в исходниках библиотек Harbour для этой ф-ции и других подобных первым и единственным оператором нужно поставить что-то типа "return Nil", объявить всем, что оставлены эти ф-ции только для совместимости и борьбы с неразрешенными внешними ссылками, что все могут быть свободны "и находить другие способы реализации ваших задач" . Тогда зачем в текстах этих ф-ций написаны (кило)метры крутого С-шного осмысленного текста, который впрочем не работает по причине "обеспечения защиты ядра"...

Может быть как многоопытный пользователь Harbour тогда подскажите, чем заменить такую ф-цию печати

function prn_old(cText,nPort)
set console off
set print on
do case
case nPort=0
set printer to lpt1
case nPort=1
set printer to lpt1
case nPort=2
set printer to lpt2
case nPort=3
set printer to lpt3
case nPort=4
set printer to lpt4
endcase
set device to print
?? cText
set print off
set device to screen
set console on
return Nil

Проблема в том, что состояние готовности принтера кроме как ф-цией isprinter() проверить нечем, а она для матричных принтеров не очень хороша.

Более существенная проблема: PRN_OLD не работает с сетевыми принтерами, назначенными к lpt2. Говорят, что на этом форуме уже обсуждалась эта проблема - все облазил, не нашел. Подскажите решение, пожалуйста.

Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник


Пост N: 699
Зарегистрирован: 09.10.06
ссылка на сообщение  Отправлено: 26.06.09 12:13. Заголовок: Urri пишет: По-пово..


Urri пишет:

 цитата:
По-поводу FT_PEEK не совсем согласен. Если бы была верна аргументация последней части предыдущего сообщения по поводу "современных ОС", то в исходниках библиотек Harbour для этой ф-ции и других подобных первым и единственным оператором нужно поставить что-то типа "return Nil", объявить всем, что оставлены эти ф-ции только для совместимости и борьбы с неразрешенными внешними ссылками, что все могут быть свободны "и находить другие способы реализации ваших задач" .


В отличие от вас Александр имеет отношение к исходникам библиотек Harbour и не вам советовать писать там типа "return Nil" или что-то другое - без вас разберутся.
Вам же еще раз повторяю - из user mode, т.е. пользовательских приложений прямого доступа к hardware вы не получите, все действия только через соотв. драйвера.
Хочу вам также напомнить, что Harbour Project - это a Free Open Source Software effort to build a multiplatform Clipper language compiler.
Одна из поддерживаемых платформ DOS, о FreeDOS вы наверное слышали.
Еще хочу вам напомнить, что Harbour уже около 10 лет и всем повторять что-то уже порядочно надоело.
Програмист, если это действительно программист, должен иметь определенное представление об архитектуре OS.

 цитата:
Тогда зачем в текстах этих ф-ций написаны (кило)метры крутого С-шного осмысленного текста, который впрочем не работает по причине "обеспечения защиты ядра"...


Какие метры и километры, там по 30 строчек от силы. Также см.выше о поддержке DOS.

 цитата:
Может быть как многоопытный пользователь Harbour тогда подскажите, чем заменить такую ф-цию печати


После ваших пассажей я бы подумал, отвечать или нет, но вопрос все равно к Александру.

 цитата:
Проблема в том, что состояние готовности принтера кроме как ф-цией isprinter() проверить нечем, а она для матричных принтеров не очень хороша.


См. выше и Google в помощь.


Спасибо: 0 
ПрофильЦитата Ответить
moderator


Пост N: 207
Зарегистрирован: 06.07.06
ссылка на сообщение  Отправлено: 26.06.09 12:45. Заголовок: Проблемы с xHarbour ..


Проблемы с xHarbour комментировать не могу - я с ним не работал и не работаю.

 цитата:
В Harbour в моем варианте продолжает выдавать сообщение "AdsExecuteSqlDirect - error", но при этом запрос выполняется, в вашем работает без сообщений все 1000 раз.


У меня - точно так же, и такое поведение вполне нормально.

 цитата:
Тогда зачем в текстах этих ф-ций написаны (кило)метры крутого С-шного осмысленного текста, который впрочем не работает по причине "обеспечения защиты ядра"...


:) Там ( contrib/libnf/peek.c ) всего двадцать строк кода, написанного в начале 90-х и, скорее всего, не компилирующегося bcc32 ( поэтому этот файл и не включен в библиотеку ). Возможно, он компилируется и работает в версии Harbour для DOS - и такая есть, C компилятор - djgpp.

 цитата:
Может быть как многоопытный пользователь Harbour тогда подскажите, чем заменить такую ф-цию печати


Проверки готовности я в этой функции не нашел, тогда что же в ней не работает ? Функция на вид безобидная ... Вывод на сетевой принтер, назначенный на lpt2 ? По этому поводу ничего сказать не могу, я не назначаю сетевой принтер ни на lpt1, ни на lpt2.

Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник


Пост N: 91
Зарегистрирован: 21.04.09
ссылка на сообщение  Отправлено: 26.06.09 13:23. Заголовок: ­Петр пишет: В отлич..


*PRIVAT*

Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник




Пост N: 879
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 26.06.09 19:36. Заголовок: Urri пишет: PRN_OLD..


Urri пишет:

 цитата:
PRN_OLD не работает с сетевыми принтерами, назначенными к lpt2. Говорят, что на этом форуме уже обсуждалась эта проблема - все облазил, не нашел.



Смотри:
http://clipper.borda.ru/?1-4-0-00000427-000-0-0-1240313321

Рабочий пример с исходником:
http://clan-clear-sky.ucoz.ru/Printer_Demo.rar



Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник


Пост N: 700
Зарегистрирован: 09.10.06
ссылка на сообщение  Отправлено: 27.06.09 20:27. Заголовок: Urri пишет: Перепол..


Urri пишет:

 цитата:
Переполз на Harbour. ...
Но тут вот новая-старая проблема: невозможно прочитать состояние клавиатуры...
kbdstat() и hb_gtInfo(GTI_KBDSHIFTS) выдают значение 128 и на нажатие CTRL/ALT/SHIFT не реагируют.


hb_gtInfo(GTI_KBDSHIFTS) - это вроде бы не из Harbour.
Следующий код вполне сносно работает и я не вижу здесь больших проблем (тестировал XP SP3)

 цитата:

#include "hbgtinfo.ch" 

PROCEDURE main( ... )
local kbdShifts
//
DO WHILE inkey( 0 ) <> 27
kbdShifts := hb_gtInfo(HB_GTI_KBDSHIFTS)
? kbdShifts
? iif( hb_bitAnd( kbdShifts, HB_GTI_KBD_SHIFT) == 0, "", "Shift pressed" )
? iif( hb_bitAnd( kbdShifts, HB_GTI_KBD_ALT) == 0, "", "Alt pressed" )
? iif( hb_bitAnd( kbdShifts, HB_GTI_KBD_CTRL) == 0, "", "Control pressed" )
ENDDO

DO WHILE inkey( 0 ) <> 27
kbdShifts := kbdstat()
? kbdShifts
? iif( hb_bitAnd( kbdShifts, 1 ) == 0, "", "Shift pressed" )
? iif( hb_bitAnd( kbdShifts, 8 ) == 0, "", "Alt pressed" )
? iif( hb_bitAnd( kbdShifts, 4 ) == 0, "", "Control pressed" )
ENDDO
//
RETURN




Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник


Пост N: 92
Зарегистрирован: 21.04.09
ссылка на сообщение  Отправлено: 28.06.09 09:42. Заголовок: Петр пишет: Следующ..


Петр пишет:

 цитата:
Следующий код вполне сносно работает и я не вижу здесь больших проблем (тестировал XP SP3)



Взял предложенный текст без единого исправления, протестировал на Harbour в XP SP2 - не работает. Этот же пример на xHarbour - работает.

При создании исполняемого модуля для Harbour пользовался таким .bat файлом. Может там что-то не так, иначе совершенно непонятно, почему у Петра работает а у меня не работает.

@echo off
setlocal
md objx

@set path=%path%;g:\rab\
@set path=%path%;G:\PROC\BCC55\Bin\

@set HB_INSTALL=g:\proc\harbour

@set HB_BIN_INSTALL=%HB_INSTALL%\bin
@set HB_LIB_INSTALL=%HB_INSTALL%\lib
@set HB_INC_INSTALL=%HB_INSTALL%\include

@set HB_BCC_INSTALL=g:\proc\bcc55
@set HB_BCC_BIN_INSTALL=%HB_BCC_INSTALL%\bin
@set HB_BCC_LIB_INSTALL=%HB_BCC_INSTALL%\lib
@set HB_BCC_INC_INSTALL=%HB_BCC_INSTALL%\include

%HB_BIN_INSTALL%\harbour main -n -q0 -gc -i%HB_INC_INSTALL% %HARBOURFLAGS% -oobjx\ -m /dHarbour

@set HB_LIBLIST=gtwin.lib hbcpage.lib hbdebug.lib hbct.lib hbvm.lib hbrtl.lib hbwhat.lib hblang.lib hbrdd.lib hbmacro.lib hbpp.lib rddfpt.lib rddntx.lib rddcdx.lib hbhsx.lib hbsix.lib hbcommon.lib hbpcre.lib hbzlib.lib rddads.lib ace32.lib %HB_USER_LIBS%

%HB_BCC_BIN_INSTALL%\bcc32 -O2 -d -c -oobjx\main.obj %CFLAGS% -I%HB_BCC_INC_INSTALL% -I%HB_INC_INSTALL% -L%HB_BCC_LIB_INSTALL% -L%HB_LIB_INSTALL% objx\main.c %HB_LIBLIST%

%HB_BCC_BIN_INSTALL%\bcc32 -O2 -d -emain %CFLAGS% -nobjx\ -I%HB_BCC_INC_INSTALL% -I%HB_INC_INSTALL% -L%HB_BCC_LIB_INSTALL% -L%HB_LIB_INSTALL% objx\main.c %HB_LIBLIST%
copy objx\main.exe .

main.exe %1 %2 %3 %4 %5 %6 %7 %8 %9 //F:120 //swappath:'c:\' //temppath:'c:\'
endlocal



Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник


Пост N: 701
Зарегистрирован: 09.10.06
ссылка на сообщение  Отправлено: 28.06.09 13:18. Заголовок: Urri пишет: При соз..


Urri пишет:

 цитата:
При создании исполняемого модуля для Harbour пользовался таким .bat файлом. Может там что-то не так, иначе совершенно непонятно, почему у Петра работает а у меня не работает



Угу, а какой вы версией Harbour пользуетесь. К примеру у меня
harbour.exe -build 2>info.txt

info.txt

 цитата:
Harbour 2.0.0beta2 (Rev. 11555)
Copyright (c) 1999-2009, http://www.harbour-project.org/

Harbour Build Info
---------------------------
Version: Harbour 2.0.0beta2 (Rev. 11555)
Compiler: Borland C++ 5.5.1 (32-bit)
Platform: Windows XP 5.1.2600 Service Pack 3
PCode version: 0.2
ChangeLog last entry: 2009-06-27 20:47 UTC-0800 Pritpal Bedi (pritpal@vouchcac.com)
ChangeLog ID: ChangeLog 11555 2009-06-28 03:59:59Z vouchcac

Built on: Jun 28 2009 11:57:43
Extra Harbour compiler options: -l
Extra C compiler options: -DHB_LEGACY_OFF -DHB_GC_AUTO -DHB_HVM_ALL -DSQLITE3_LIB -DSQLITE_ENABLE_COLUMN_METADATA
Build options:
Language options: (Clipper 5.3) (Clipper 5.x undoc) (Xbase++) (Flagship)
---------------------------




Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник


Пост N: 93
Зарегистрирован: 21.04.09
ссылка на сообщение  Отправлено: 28.06.09 15:34. Заголовок: Вот что у меня про в..


Вот что у меня про версию пишет

G:\PROC\Harbour\bin>harbour.exe -build > aaa.txt
Harbour 1.0.1 Intl. (Rev. 9429)
Copyright (c) 1999-2008, http://www.harbour-project.org/

Harbour Build Info
---------------------------
Version: Harbour 1.0.1 Intl. (Rev. 9429)
PCode version: 0.2
Compiler: Borland C++ 5.5.1 (32 bit)
Platform: Windows XP 5.1.2600 Service Pack 2

Built on: Sep 17 2008 20:08:58
Last ChangeLog entry: 2008-09-17 18:04 UTC+0200 Viktor Szakats (harbour.01 syenar hu)

ChangeLog SVN version: ChangeLog 9429 2008-09-17 16:07:27Z vszakats
Extra Harbour compiler switches: -l
Extra C compiler switches: -OS -Ov -Oi -Oc -tWM
Other build settings: (C mode)

Clipper 5.3b compatible extensions: yes
Clipper 5.2e/5.3b compatible undocumented: yes
Clipper 5.2e/5.3b strict compatibility: no
Xbase++ compatible extensions: yes
FlagShip compatible extensions: yes
Visual Objects compatible extensions: no
FoxPro compatible extensions: no
dBase compatible extensions: no
CLIP compatible extensions: no
Non-portable Harbour extensions: no
Profiler: off
Memory tracing and statistics: off
Maximum symbol name length: 63
---------------------------




Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник


Пост N: 702
Зарегистрирован: 09.10.06
ссылка на сообщение  Отправлено: 28.06.09 19:36. Заголовок: Urri пишет: Built o..


Urri пишет:

 цитата:
Built on: Sep 17 2008 20:08:58
Last ChangeLog entry: 2008-09-17 18:04 UTC+0200 Viktor Szakats (harbour.01 syenar hu)



Ищите что-нибудь после

 цитата:
2008-12-19 12:56 UTC+0100 Viktor Szakats (harbour.01 syenar.hu)
* harbour/source/rtl/gtwin/gtwin.c
! Fixed HB_GTI_KBDSHIFTS not working in console mode.




Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник


Пост N: 94
Зарегистрирован: 21.04.09
ссылка на сообщение  Отправлено: 28.06.09 22:33. Заголовок: И где же его искать ..


И где же его искать такой, чтобы работал и без глюков. Вот предлагали у Григория взять последнюю сборку, так она выдает неразрешенные ссылки, которые неясно где искать, и много библиотек он не включил в свою сборку, например для работы с ADS.

Прийдется похоже срочно осваивать CVS и там продираться сквозь дебри. А это такая потеря времени... Разберусь со временем конечно. А сейчас может кто поделится нормальной рабочей версией Harbour?


Спасибо: 0 
ПрофильЦитата Ответить
moderator


Пост N: 211
Зарегистрирован: 06.07.06
ссылка на сообщение  Отправлено: 29.06.09 15:42. Заголовок: Думаю, что официальн..


Думаю, что официальный релиз 2.0 выйдет очень скоро. Пока можете скачивать http://harbour-project.org/harbour-nightly.zip - формируемый каждую ночь пакет со свежайшими, только из печки, исходниками. Но тут могут быть и глюки - живой процесс все-таки. В частности, сегодня качать не советую - были сообщения об ошибке в RDD.

Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник


Пост N: 143
Зарегистрирован: 27.01.07
ссылка на сообщение  Отправлено: 29.06.09 16:25. Заголовок: alkresin пишет: Пок..


alkresin пишет:

 цитата:
Пока можете скачивать http://harbour-project.org/harbour-nightly.zip - формируемый каждую ночь пакет со свежайшими, только из печки, исходниками.


Добавлю: в корне архива есть файл INSTALL, в котором описано, как собрать Harbour. Удачи.

Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник


Пост N: 95
Зарегистрирован: 21.04.09
ссылка на сообщение  Отправлено: 02.07.09 10:24. Заголовок: Добрый день уважаемы..


Добрый день уважаемые.

Или я такой невезучий или как почтенное сообщество работает с Harbour'ами и радуется? Что-то кол-во неожиданностей в работе этих продуктов начинает раздражать. Очередная мрачная история приключилась.

При работе с xHarbour возникли осложнения при вызове SQL запросов. AlKresin участвовал в изучении проблемы и давал рекомендации (я выкладывал здесь самодостаточный пример, который почему-то работал то 28, то 22 раза в зависимости от вызываемого запроса). Результатом нашей дискуссии стало то, что я переполз на Harbour. Рассмотренный с AlKresin пример заработал без проблем. Я переделал много программ, т.к. вдруг выяснилось расхождение в работе обоих Harbour'ов для элементов массивов в макроподстановках и строковых переменных. Плюс куча всего еще... Наконец заработало весьма прилично. Давай же пробовать SQL - работает. Только вот мой сотрудник увидел, что не работает SQL запрос с русскими литералами в тексте запроса. Фигня, подумал я. При помощи Pasha эту проблему решили, сейчас за пару минут вылечим ситуацию. Аккуратненько заменил одну строку, в которой отменяется перекодировка из OEM в ANSI (так как мне Pasha текст этой строки дал). Обрадовался... Но что-то дернуло проверить результат на том заработавшем примере, с которым мы работали с AlKresin, в котором даже не было русских букв в запросе. И оказалось, что запрос в цикле работает всего 44 раза, а затем программа с криком об ошибке вылетает на обыкновенном операторе присваивания строковой переменной текста запроса (т.е. примерно как и xHarbour). Убираю корректировку из исходника библиотеки RDDADS - все работает, обратно добавляю - 44 раза радости и полный аут. Ну и что теперь с этим делать??? Подскажите, гуру?

При таком неожиданном возникновении проблем на ровном месте стрёмно всех своих юзеров пересаживать на Harbour. Тут пока трое работают в отладочно-боевом режиме - так постоянные непонятки выползают. А 150 человек - это меня живьём съедят. Не допустите, пожалуйста, может и я на что сгожусь сообществу Клиппер-Харбористов.


Спасибо: 0 
ПрофильЦитата Ответить
moderator


Пост N: 217
Зарегистрирован: 06.07.06
ссылка на сообщение  Отправлено: 02.07.09 11:52. Заголовок: Я переделал много пр..



 цитата:
Я переделал много программ, т.к. вдруг выяснилось расхождение в работе обоих Harbour'ов для элементов массивов в макроподстановках и строковых переменных.


Что именно неправильно работает в Harbour ? Приведите пример - если поведение действительно отличается от Клипперовского, я обращусь с этим в Harbour developers mail list.

 цитата:
Убираю корректировку из исходника библиотеки RDDADS - все работает, обратно добавляю - 44 раза радости и полный аут. Ну и что теперь с этим делать???


Пример - на стол.

Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник


Пост N: 96
Зарегистрирован: 21.04.09
ссылка на сообщение  Отправлено: 02.07.09 13:16. Заголовок: alkresin пишет: Что..


alkresin пишет:

 цитата:
Что именно неправильно работает в Harbour ? Приведите пример - если поведение действительно отличается от Клипперовского, я обращусь с этим в Harbour developers mail list.



Вот пожалуйста пример.

*--------------------------------------

procedure main

s='9876543210'
private arr[10]
for i=1 to 10
arr[ i]=s && Работает в Клиппере, но в xHarbour и в Наrbour не работает
&& arr[ i]=substr(s,1,len(s)) && Работает в xHarbour, но в Наrbour не работает
&& arr[ i]=substr(s+' ',1,len(s)) && Работает в Наrbour
next
? 1,arr[1]
? 2,arr[2]
? 3,arr[3]
?
arr[1]=mid(@arr[1],1,10,'0123456789')
? 1,arr[1]
? 2,arr[2]
? 3,arr[3]
?


r='s' && Работает в Клиппере, xHarbour, Harbour
&r+='*'
? s,r

r='arr[1]' && Работает в Клиппере, xHarbour. В Harbour не работает
&r+='*'
? arr[1],r

inkey(100)
quit

#pragma BEGINDUMP

#include "G:\PROC\C\Harbour\my.h"
#include "G:\PROC\C\Harbour\extend.h"
#include "G:\PROC\C\Harbour\extend.api"

CLIPPER HB_FUN_MID()
{
/* par1 - исх.строка
par2 - начальная позиция
par3 - сколько символов
par4 - чем заменить
*/

char *str1=_parc(1),*str2=_parc(4);
register int k=_parni(2)-1,l=_parni(3),j=0;
register int m=_parclen(1),n=_parclen(4);

switch (l) {
case 0:
break;
case -1:
/* if (n==1)
while (k<m) str1[k++]=str2[0];
else */
while ((k<m)&&(j<n)) str1[k++]=str2[j++];
break;
default:
l+=k;
/* if (n==1)
while (k<l) str1[k++]=str2[0];
else */
while ((k<l)&&(j<n)) str1[k++]=str2[j++];
break;
};
_retclen(str1,m);
};

#pragma ENDDUMP


Ф-ция MID используется в Клиппере лет 18, еще в те светлые времена, когда начинался PC бум, но компы были неторопливые и приходилось экономить мгновения процессорного времени. Поэтому к этой ф-ции обращение идет в первом параметре с использованием @ (т.е. by ref) для корректировки строки без создания ее копии. Этот прием нашел и другие очень значительные в моей работе применения. А в Харборах, наверное из-за промежуточного С, всем элементам массива присваивается одна и та же ссылка (на область памяти) на строку S (из примера), тогда как в Клиппере это не так). При переходе на xHarbour пока об этом сообразил - утомился. Пытался надурить С и записал такое хитрое выражение substr(s,1,len(s)). Сработало!!! При переходе на Harbour надеялся, что такой мой трюк сработает и здесь. Дудки... Harbour оказался дюже умный и такие вещи не позволил мне делать. Пришлось еще более исхитриться и писать substr(s+' ',1,len(s)). Но пока до этого после xHarbour'а додумался - трижды утомился.

А макроподстановка для элемента массива и использования += (а также для -= и ++, -- (для числовых)) выдает синтаксическую ошибку в Harbour, тогда как в Клиппере работает много лет и в Xharbour работает.



Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник


Пост N: 97
Зарегистрирован: 21.04.09
ссылка на сообщение  Отправлено: 02.07.09 13:31. Заголовок: alkresin пишет: При..


alkresin пишет:

 цитата:
Пример - на стол.



Это тот же пример, что я здесь показывал вам в моем ответе 24.06.09 в 17.15.
А исправления делал так, как указывал Pasha в своем ответе 18.06.09 в 13.23. (с той лишь разницей, что тогда я пересобирал библиотеку для xHarbour, а теперь для Harbour).



Мне тут рекомендовали брать последнее состояние Harbour по адресу
http://harbour-project.org/harbour-nightly.zip, но что то боязно из-за сыроватости. Я то взял для попробовать, только почему-то 25% работы сделало, но на TBROWSE из библиотеки rt загибается и все. Причем брал три последних версии и в каждой такая проблема. Они там что, раздают версии не проверяя как они хоть собираться будут?

Спасибо: 0 
ПрофильЦитата Ответить
администратор




Пост N: 1272
Зарегистрирован: 17.05.05
ссылка на сообщение  Отправлено: 02.07.09 14:05. Заголовок: Urri пишет: arr=s &..


Urri пишет:

 цитата:
arr=s && Работает в Клиппере, но в xHarbour и в Наrbour не работает


Проверил в xharbour 1.2.1 (6468) работает

Спасибо: 0 
ПрофильЦитата Ответить
администратор




Пост N: 1273
Зарегистрирован: 17.05.05
ссылка на сообщение  Отправлено: 02.07.09 14:08. Заголовок: Urri пишет: &&#..


Urri пишет:

 цитата:
&& arr=substr(s,1,len(s))


3 параметр можно и не задавать в данном примере

Спасибо: 0 
ПрофильЦитата Ответить
moderator


Пост N: 218
Зарегистрирован: 06.07.06
ссылка на сообщение  Отправлено: 02.07.09 14:09. Заголовок: Я то взял для попроб..



 цитата:
Я то взял для попробовать, только почему-то 25% работы сделало, но на TBROWSE из библиотеки rt загибается и все.


Какой работы ? Сборки Harbour или сборки вашей программы ? Как оно загибается ( какие сообщения ) ?

 цитата:
Они там что, раздают версии не проверяя как они хоть собираться будут?


Эти пакеты строятся автоматически скриптом на сервере, их, конечно, никто не проверяет - кроме тех, кто постит изменения, они , по идее, должны проверять, не сломали ли чего.
Я скачивал исходники вчера и сегодня напрямую с SVN - и сам Harbour у меня нормально собирался, и программы.

Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник


Пост N: 98
Зарегистрирован: 21.04.09
ссылка на сообщение  Отправлено: 02.07.09 14:34. Заголовок: Dima пишет: Какой р..


Dima пишет:

 цитата:
Какой работы ? Сборки Harbour или сборки вашей программы ? Как оно загибается ( какие сообщения ) ?



Сборки Harbour...

Error: public '' in module 'TBROWSE' clashes with prior module 'TBROWSE'

Спасибо: 0 
ПрофильЦитата Ответить
moderator


Пост N: 219
Зарегистрирован: 06.07.06
ссылка на сообщение  Отправлено: 02.07.09 14:36. Заголовок: arr=s && Раб..



 цитата:
arr=s && Работает в Клиппере, но в xHarbour и в Наrbour не работает
&& arr=substr(s,1,len(s)) && Работает в xHarbour, но в Наrbour не работает


Работает это в Harbour и я не вижу ни одной причины, почему бы оно не работало. Другое дело, что потом программа вылетает на ? 1, arr[1] и в Клиипере, и в Harbour - т.к. после присвоений arr - строка, а не массив.

 цитата:
r='arr[1]' && Работает в Клиппере, xHarbour. В Harbour не работает
&r+='*'


Это в Harbour действительно не работает, напишу в mail list.
Ф-я Mid в таком виде,действительно, работать не будет - но это же С код, здесь полную совместимость гарантировать нельзя, многое зависит от реализации конкретного компилятора.


Спасибо: 0 
ПрофильЦитата Ответить
moderator


Пост N: 220
Зарегистрирован: 06.07.06
ссылка на сообщение  Отправлено: 02.07.09 14:38. Заголовок: Сборки Harbour... Er..



 цитата:
Сборки Harbour...
Error: public '' in module 'TBROWSE' clashes with prior module 'TBROWSE'



Это что-то у вас, попробуйте сделать clean build - удалить все следы предыдущей сборки.

Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник


Пост N: 99
Зарегистрирован: 21.04.09
ссылка на сообщение  Отправлено: 02.07.09 14:39. Заголовок: Dima пишет: цитата..


Dima пишет:

 цитата:
цитата:
arr=s && Работает в Клиппере, но в xHarbour и в Наrbour не работает


Проверил в xharbour 1.2.1 (648) работает



У меня xharbour 1.2.1 (6406). Не работает не в том смысле, что ошибку выдает, а в том смысле, что все 10 элементов массива имеют одинаковое значение, хотя я исправлял только первый элемент массива (в приведенном примере только первых три вывел на экран)


Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник


Пост N: 100
Зарегистрирован: 21.04.09
ссылка на сообщение  Отправлено: 02.07.09 14:51. Заголовок: alkresin пишет: ци..


alkresin пишет:

 цитата:
цитата:
arr=s && Работает в Клиппере, но в xHarbour и в Наrbour не работает
&& arr=substr(s,1,len(s)) && Работает в xHarbour, но в Наrbour не работает


Работает это в Harbour и я не вижу ни одной причины, почему бы оно не работало. Другое дело, что потом программа вылетает на ? 1, arr[1] и в Клиипере, и в Harbour - т.к. после присвоений arr - строка, а не массив.




Ни фига себе, я не понял???!!! Копировал из проверяемого примера сюда в ответ... Извиняюсь, что ввел в заблуждение примером. При копировании пропали квадратные скобки с индексом, не понимаю почему.

правильный текст в цикле такой
for i=1 to 10
arr=s && Работает в Клиппере, но в xHarbour и в Наrbour не работает
&& arr=substr(s,1,len(s)) && Работает в xHarbour, но в Наrbour не работает
&& arr=substr(s+' ',1,len(s)) && Работает в Наrbour
next

т.е. всем элементам массива присваивается S. После этого меняем содержимое первого элемента, но при этом и содержимое остальных строк меняется так же, а этого не должно быть. Работает здесь имеется ввиду не то что вылетает, а то что потом при исправлении первого элемента остальные не портятся.

Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник


Пост N: 101
Зарегистрирован: 21.04.09
ссылка на сообщение  Отправлено: 02.07.09 14:58. Заголовок: Опять не понял... Ко..


Опять не понял... Когда подготавливал предыдущее сообщения посыпал голову пеплом, что пропали скобки и индексы к arr в цикле. При составлении письма убедился, что все нормально, т.к. неудобно уважаемых коллег два раза вводить в заблуждение. Однако в вижу, что опять пропали индексы в том, что отобразилось. Весьма странно, ведь в первоначальном варианте примера квадратные скобки и индексы пропали только в цикле, а ниже остались...
Не знаю почему так. В цикле три раза присваивается значение i-му элементы массива
arr(i) (это я квадратные скобки заменил на круглые для примера, а то опять куда-то денутся)


Спасибо: 0 
ПрофильЦитата Ответить
moderator


Пост N: 221
Зарегистрирован: 06.07.06
ссылка на сообщение  Отправлено: 02.07.09 15:03. Заголовок: Работает здесь имеет..



 цитата:
Работает здесь имеется ввиду не то что вылетает, а то что потом при исправлении первого элемента остальные не портятся.


Дело в том, что вы исправляете первый элемент не Клипперовским кодом, а низкоуровневой С функцией ( Mid ), вся проблема в ней. Т.е., вы залезаете во внутреннюю структуру Клипперовских переменных. Естественно, нельзя ожидать, что это будет одинаково работать во всех Клиппер-совместимых системах.

Спасибо: 0 
ПрофильЦитата Ответить
moderator


Пост N: 222
Зарегистрирован: 06.07.06
ссылка на сообщение  Отправлено: 02.07.09 15:28. Заголовок: Ф-я Mid() должна име..


Ф-я Mid() должна иметь вот такой вид:

 цитата:

HB_FUNC( MID )
{
/* par1 - исх.строка
par2 - начальная позиция
par3 - сколько символов
par4 - чем заменить
*/
char *str1 = hb_parc(1), *str2 = hb_parc(4), *str3;
int k = hb_parni(2)-1, l = hb_parni(3), j=0;
int m = hb_parclen(1), n = hb_parclen(4);

str3 = hb_xgrab( m + 1 );
memcpy( str3, str1, m );
*( str3+m ) ='\0';
switch (l)
{
case 0:
break;
case -1:
while( (k<m) && (j<n) )
str3[k++] = str2[j++];
break;
default:
l += k;
while( (k<l) && (j<n) )
str3[k++] = str2[j++];
break;
};
if( ISBYREF(1) )
hb_storclen( str3, m, 1 ) ;
hb_retclen_buffer( str3, m );
}



Спасибо: 0 
ПрофильЦитата Ответить
администратор




Пост N: 1278
Зарегистрирован: 17.05.05
ссылка на сообщение  Отправлено: 02.07.09 15:31. Заголовок: Urri Поправил твой ..


Urri
Поправил твой пример , теперь скобки на месте. Пришлось добавить пробел.
Cкобки съедало потому что есть тэг Italic [ i ][ / i ]

Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник


Пост N: 102
Зарегистрирован: 21.04.09
ссылка на сообщение  Отправлено: 02.07.09 15:44. Заголовок: alkresin пишет: Дел..


alkresin пишет:

 цитата:
Дело в том, что вы исправляете первый элемент не Клипперовским кодом, а низкоуровневой С функцией ( Mid ), вся проблема в ней. Т.е., вы залезаете во внутреннюю структуру Клипперовских переменных. Естественно, нельзя ожидать, что это будет одинаково работать во всех Клиппер-совместимых системах.



Но ведь я пользуюсь исключительно разрешенными приемами при обращении к внутренней структуре Клипперовских переменных, определенными правилами совместимости Клиппера (Harbour) и С через extend.h и extend.api. Поэтому и ожидал одинаковой работы. Думаю, что здесь все-таки некоторая недоработка в Харборах...
Ну ладно, это я как-то поборол. А что же делать с SQL запросом, который работает только 44 раза?

По вашей рекомендации запускал make_gnu.bat clean install, отдельно clean а потом install - не помогает, вылетает опять на TBROWSE.


Спасибо: 0 
ПрофильЦитата Ответить
moderator


Пост N: 223
Зарегистрирован: 06.07.06
ссылка на сообщение  Отправлено: 02.07.09 15:48. Заголовок: &r+='*' ..



 цитата:
&r+='*'


Вот такие варианты будут работать и в Клиппере, и в Harbour:
&(r) += '*'
или
&r = &r + '*'

Но в лист я все равно сообщение отправил.

Спасибо: 0 
ПрофильЦитата Ответить
moderator


Пост N: 224
Зарегистрирован: 06.07.06
ссылка на сообщение  Отправлено: 02.07.09 15:58. Заголовок: Но ведь я пользуюсь ..



 цитата:
Но ведь я пользуюсь исключительно разрешенными приемами при обращении к внутренней структуре Клипперовских переменных, определенными правилами совместимости Клиппера (Harbour) и С через extend.h и extend.api. Поэтому и ожидал одинаковой работы.


Использование _parc() чтобы получить значение параметра и _retc(), чтобы вернуть значение - безусловно, разрешенные приемы. А вот изменение полученной с помощью _parc() строки - это неразрешенное вмешательство во внутреннюю структуру Клипперовских переменных :). Правильно будет, как показано в моем варианте Mid(), скопировать полученную с помощью _parc() строку в новое место - и там уж делать с ней все, что надо. Под Linux ( это особенности реализации C компилятора ) изменение полученной _parc() строки может вызвать даже аварийное завершение программы ( GPF ).

Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник


Пост N: 103
Зарегистрирован: 21.04.09
ссылка на сообщение  Отправлено: 02.07.09 16:17. Заголовок: Да, спасибо большое...


Да, спасибо большое. Так работает в тестовом примере. Сейчас попробую воспользоваться в основных программах.

alkresin пишет:


 цитата:
Вот такие варианты будут работать и в Клиппере, и в Harbour:
&(r) += '*'



Сейчас проверю, а то я по всем своим программам переделал уже на второй предложенный вариант &r = &r + '*' ... Забодался. Неожиданное решение... Я кстати до сих пор не могу понять почему для определения типа переменной, например ааа, в клиппере нужно использовать ф-цию type(('aaa')) именно с двумя скобками.

А что же делать с SQL запросом и русскими буквами в нем?

Спасибо: 0 
ПрофильЦитата Ответить
moderator


Пост N: 225
Зарегистрирован: 06.07.06
ссылка на сообщение  Отправлено: 02.07.09 18:45. Заголовок: Я кстати до сих пор ..



 цитата:
Я кстати до сих пор не могу понять почему для определения типа переменной, например ааа, в клиппере нужно использовать ф-цию type(('aaa')) именно с двумя скобками.


?? В первый раз слышу. Всегда использовал эту функцию обычным образом: type( "AAA" ).

 цитата:
А что же делать с SQL запросом и русскими буквами в нем?


Какое именно изменение вы сделали в ADSEXECUTESQLDIRECT ? Приведите полный текст нового варианта.

Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник


Пост N: 104
Зарегистрирован: 21.04.09
ссылка на сообщение  Отправлено: 02.07.09 18:59. Заголовок: HB_FUNC( ADSEXECUTES..


HB_FUNC( ADSEXECUTESQLDIRECT )
{
ADSAREAP pArea = hb_adsGetWorkAreaPointer();

/* NOTE: Removed test for hb_ads_hConnect as it is not actually used;
the func was just trying to confirm a real connection existed
but we're trying to remove dependence on statics;
if we saved the nConnection to a WA, that would take care of it.
As is, it requires pArea->hStatement which we only allow created if
there's Connection so we should be OK. [bh 10/9/2005 2:51PM] */

if( /* hb_ads_hConnect && */ pArea && pArea->hStatement && ISCHAR( 1 ) )
{

/* char * pucStmt = hb_adsOemToAnsi( hb_parc( 1 ), hb_parclen( 1 ) ); Так было */

char * pucStmt = hb_parc( 1 ); /* Так сделал по рекомендации Pasha */

Дальше по тексту ничего не менял....


Спасибо: 0 
ПрофильЦитата Ответить
moderator


Пост N: 226
Зарегистрирован: 06.07.06
ссылка на сообщение  Отправлено: 02.07.09 19:46. Заголовок: Значит, у вас остала..


Значит, у вас осталась строка ( Petr рекомендовал вам ее убрать! ) :

hb_adsOemAnsiFree( pucStmt );

В этом, по-видимому, и есть корень зла.

Есть и другой способ отказаться от OemToAnsi преобразования. 2-й параметр в вызове AdsSetCharType( 2, .T. ) это преобразование разрешает. Так что попробуйте восстановить оригинальный adsfunc.c, а в своей программе поставьте:

AdsSetCharType( 2, .F. )
IF !AdsExecuteSqlDirect( cSQL )
? "AdsExecuteSqlDirect - error"
SELECT( selsql )
USE
SELECT( sel )
AdsSetCharType( 2, .T. )
return - 2
ENDIF
AdsSetCharType( 2, .T. )


Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник


Пост N: 105
Зарегистрирован: 21.04.09
ссылка на сообщение  Отправлено: 03.07.09 10:12. Заголовок: alkresin пишет: hb_..


alkresin пишет:

 цитата:
hb_adsOemAnsiFree( pucStmt );

В этом, по-видимому, и есть корень зла.



Да, большое спасибо. Так заработало, не вылетает.

Только вот опять же по тому примеру, что мы обсуждаем. После выполнения команды

update street set naim=left(upper(naim),50)]

в поле NAIM часть букв русских, часть букв неизвестно каких.


Спасибо: 0 
ПрофильЦитата Ответить
moderator


Пост N: 228
Зарегистрирован: 06.07.06
ссылка на сообщение  Отправлено: 03.07.09 11:41. Заголовок: в поле NAIM часть бу..



 цитата:
в поле NAIM часть букв русских, часть букв неизвестно каких.


А раньше все нормально было ? После чего буквы стали искажаться ?

Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник


Пост N: 106
Зарегистрирован: 21.04.09
ссылка на сообщение  Отправлено: 03.07.09 13:57. Заголовок: alkresin пишет: А р..


alkresin пишет:

 цитата:
А раньше все нормально было ? После чего буквы стали искажаться ?



Не могу сказать. В примере, который мы отрабатывали, я больше упор сделал на то, что неожиданно программа ломалась после какого-то неопределенного количества шагов (то 28, то 22, то 44). А на качество работы ф-ции upper внимательно не смотрел. Попробовал временно откатить все изменения, которые я внес в RDDADS по советам местных гуру - результат такой же (ну и вернулись прежние вылеты).

Спасибо: 0 
ПрофильЦитата Ответить
moderator


Пост N: 230
Зарегистрирован: 06.07.06
ссылка на сообщение  Отправлено: 03.07.09 14:16. Заголовок: Проверьте настройки ..


Проверьте настройки ADS сервера ( соответствующий ini файл ) локального и удаленного. Ф-я Upper() выполняется сервером, т.к. она входит в запрос, поэтому если кодовая страница сервера установлена не как русский OEM, то это преобразование он будет делать неправильно.

Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник


Пост N: 107
Зарегистрирован: 21.04.09
ссылка на сообщение  Отправлено: 03.07.09 15:07. Заголовок: Это первое, что мне ..


Это первое, что мне пришло в голову. Я это давно уже настроил, но еще сейчас перепроверил на всякий случай.

В ADSLOCAL.CFG есть такие строки

ANSI_CHAR_SET=RUSSIAN

OEM_CHAR_SET=RUSSIAN

Вот так работает ф-ция UPPER:
исходное значение "Привет", результат "П└ибе┬"

Меня удивляет то, что только четные буквы испортила. При этом нечетные не сделала UPPER, а оставила без изменения


Спасибо: 0 
ПрофильЦитата Ответить
администратор




Пост N: 1282
Зарегистрирован: 17.05.05
ссылка на сообщение  Отправлено: 03.07.09 15:16. Заголовок: Urri Файлы EXTEND.C..


Urri
Файлы EXTEND.CHR , ANSI.CHR присутствуют ?

Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник


Пост N: 108
Зарегистрирован: 21.04.09
ссылка на сообщение  Отправлено: 03.07.09 15:34. Заголовок: Конечно. Я скопирова..


Конечно.
Я скопировал все файлы из
Advantage81\acesdk\Redistribute\

ace32.dll
adsloc32.dll
adslocal.cfg
ansi.chr
axcws32.dll
extend.chr
files.txt (даже этот, не очень и нужный)

в Windows\System32 и там поправил ADSLOCAL.CFG

implib сделал (как здесь учили), пересобрал RDDADS с указанием на актуальный, правильный acesdk.


Спасибо: 0 
ПрофильЦитата Ответить
администратор




Пост N: 1283
Зарегистрирован: 17.05.05
ссылка на сообщение  Отправлено: 03.07.09 15:46. Заголовок: Urri пишет: исходно..


Urri пишет:

 цитата:
исходное значение "Привет", результат "П└ибе┬"


На удаленном ADS такая же ситуация ?

Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник


Пост N: 109
Зарегистрирован: 21.04.09
ссылка на сообщение  Отправлено: 03.07.09 15:54. Заголовок: Проверил. На удаленн..


Проверил. На удаленном ADS работает также странно

Спасибо: 0 
ПрофильЦитата Ответить
администратор




Пост N: 1288
Зарегистрирован: 17.05.05
ссылка на сообщение  Отправлено: 10.07.09 17:27. Заголовок: Urri Проблему решил..


Urri
Проблему решил ?

Спасибо: 0 
ПрофильЦитата Ответить
Администратор




Пост N: 1175
Зарегистрирован: 23.05.05
ссылка на сообщение  Отправлено: 12.07.09 10:13. Заголовок: Urri пишет: Только ..


Urri пишет:

 цитата:
Только вот опять же по тому примеру, что мы обсуждаем. После выполнения команды

update street set naim=left(upper(naim),50)]

в поле NAIM часть букв русских, часть букв неизвестно каких.



Я убрал ненужную конвертацию привыполнении команд sql xHarbour

Дима, кстати, у тебя в xHarbour Ads 5.х нормально работает ?

Я смотрю, в Harbour были исправления, а какие - не пойму:

2009-04-27 19:17 UTC+0200 Przemyslaw Czerpak (druzus/at/priv.onet.pl)
* harbour/contrib/rddads/ads1.c
! fixed very bad bug in code compiled for ADS_LIB_VERSION < 600
in ANSI<->OEM translations - the HVM item value was overloaded
with translation results


Спасибо: 0 
ПрофильЦитата Ответить
администратор




Пост N: 1289
Зарегистрирован: 17.05.05
ссылка на сообщение  Отправлено: 12.07.09 11:42. Заголовок: Pasha пишет: Дима, ..


Pasha пишет:

 цитата:
Дима, кстати, у тебя в xHarbour Ads 5.х нормально работает ?


Да все в норме !

Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник


Пост N: 110
Зарегистрирован: 21.04.09
ссылка на сообщение  Отправлено: 13.07.09 09:03. Заголовок: Dima пишет: Проблем..


Dima пишет:

 цитата:
Проблему решил ?



Нет Дима, пока не решил. Никто не подсказал как, а своих знаний пока не хватает. Тут читал здесь твою переписку с Pasha, что у тебя в ADS 5.x работает, но у меня ADS 8.1 и имеются проблемы. Нам редко приходится такой update использовать в реальной жизни, так что уже работаем на Harbour и ждем появления новых проблем.

Кто тут с Украины переползал на Harbour, как проблему с украинской i решали? Переделывали кодировку в базах на 1125, или что-то другое придумали? Иначе под 866 приходится для w98 держать две украинские раскладки с такой i укр. как и английской для 866 и 1125 для нормальной i укр. для windows программ?

Спасибо: 0 
ПрофильЦитата Ответить
Администратор




Пост N: 1176
Зарегистрирован: 23.05.05
ссылка на сообщение  Отправлено: 13.07.09 09:28. Заголовок: По поводу sql-запрос..


По поводу sql-запросов: я вчера проверил, достаточно убрать конвертацию при выполнении AdsExecuteSqlDirect, и при установке

AdsSetCharType( 2, .t. )

команды select/update с литералами в 866-й кодировке отрабатывают нормально.

Для xHarbour я изменения сбросил на CVS, для Harbour, я думаю, их тоже перенесут.

Спасибо: 0 
ПрофильЦитата Ответить
Администратор




Пост N: 1177
Зарегистрирован: 23.05.05
ссылка на сообщение  Отправлено: 13.07.09 09:43. Заголовок: Виктор уже перенес э..


Виктор уже перенес этот фикс в Harbour

По поводу кодировки. Если данные хранятся в кодировке OEM, и необходимо, чтобы украинская i кодировалась отдельным кодом, то прийдется использовать кодировку 1125 вместо 866, хотя она очень уж и нестандартная. В этом случае и перекодировка oem->ansi и наоборот будет выполняться правильно
Сейчас в Харборе нет отдельной кодировки для 1125. Я могу ее добавить.
Кстати, откуда эта кодировка взялась ? История ее возникновения, насколько она распространена, кто знает ?

Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник


Пост N: 111
Зарегистрирован: 21.04.09
ссылка на сообщение  Отправлено: 13.07.09 10:11. Заголовок: Pasha пишет: Для xH..


Pasha пишет:

 цитата:
Для xHarbour я изменения сбросил на CVS, для Harbour, я думаю, их тоже перенесут.



Только xHarbour перелез на Harbour. И что теперь, назад? Попробую, хорошо что у меня все библиотеки и программы работают под Clipper, Harbour и xHarbour из одних исходников: на чем потранслировал и собрал - на том и работают. Подскажи пожалуйста, если брать исправления с CVS, то можно надеяться, что работают русские буквы ("р" в частности, ты мне отдельно присылал свои исправления), исправления в AdsExecuteSqlDirect, которые мне тут уважаемые гуру советовали сделать и прочее, или это нужно будет снова проверять и самостоятельно корректировать?

И еще. Такое впечатление, что при открытии баз в ADS из w9x наблюдаются серьезные тормоза (в XP все нормально или малозаметно). Как с этим бороться, а то юзеры ругаются.

Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник


Пост N: 715
Зарегистрирован: 09.10.06
ссылка на сообщение  Отправлено: 13.07.09 10:20. Заголовок: Urri пишет: Только..


Urri пишет:

 цитата:

Только xHarbour перелез на Harbour. И что теперь, назад?



Pasha пишет:

 цитата:
Виктор уже перенес этот фикс в Harbour



Спасибо: 0 
ПрофильЦитата Ответить
Администратор




Пост N: 1178
Зарегистрирован: 23.05.05
ссылка на сообщение  Отправлено: 13.07.09 10:25. Заголовок: Urri пишет: Подскаж..


Urri пишет:

 цитата:
Подскажи пожалуйста, если брать исправления с CVS, то можно надеяться, что работают русские буквы ("р" в частности, ты мне отдельно присылал свои исправления),



Нет, этих исправлений нет на CVS. Модуль gtwin.c можно просто брать из прежней сборки


 цитата:
исправления в AdsExecuteSqlDirect, которые мне тут уважаемые гуру советовали сделать и прочее, или это нужно будет снова проверять и самостоятельно корректировать?



Исправления в ads уже на CVS


Спасибо: 0 
ПрофильЦитата Ответить
Администратор




Пост N: 1179
Зарегистрирован: 23.05.05
ссылка на сообщение  Отправлено: 13.07.09 10:27. Заголовок: Urri пишет: Такое в..


Urri пишет:

 цитата:
Такое впечатление, что при открытии баз в ADS из w9x наблюдаются серьезные тормоза (в XP все нормально или малозаметно). Как с этим бороться, а то юзеры ругаются.



Я такого при работе с ads не замечал, клиентские места с w98 есть.
А как настроен доступ к ads ? Какой протокол ? Лучше использовать IP

Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник


Пост N: 112
Зарегистрирован: 21.04.09
ссылка на сообщение  Отправлено: 13.07.09 10:38. Заголовок: Pasha пишет: Какой ..


Pasha пишет:

 цитата:
Какой протокол ? Лучше использовать IP



Хм... Тут мне писали, что под Harbour' ми стал хорошо работать протокол IPX и от IP можно будет отказаться. Мы на IP работаем с nt машинами, а на w9x под ipx/spx. Еще мы так работаем потому, что прослойка ADSDOSIP занимает в памяти 3.2мб, а на машинах с w9x, на которых по 16мб ОЗУ, это серьезный пожиратель памяти, которая для клиппер программ очень важна. Так что, рекомендуешь попробовать с протоколом IP работать на w9x?

Спасибо: 0 
ПрофильЦитата Ответить
Администратор




Пост N: 1180
Зарегистрирован: 23.05.05
ссылка на сообщение  Отправлено: 13.07.09 10:44. Заголовок: Urri пишет: Так что..


Urri пишет:

 цитата:
Так что, рекомендуешь попробовать с протоколом IP работать на w9x?



Да, и при этом ADSDOSIP не нужен

Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник


Пост N: 113
Зарегистрирован: 21.04.09
ссылка на сообщение  Отправлено: 13.07.09 16:16. Заголовок: А что для этого нужн..


А что для этого нужно сделать? В ADSServerType() поставить в качестве параметра 3 ? Так где-то здесь ругали ADS с таким параметром за очень медленную работу...

Спасибо: 0 
ПрофильЦитата Ответить
администратор




Пост N: 1290
Зарегистрирован: 17.05.05
ссылка на сообщение  Отправлено: 13.07.09 16:37. Заголовок: Urri пишет: Такое в..


Urri пишет:

 цитата:
Такое впечатление, что при открытии баз в ADS из w9x наблюдаются серьезные тормоза


Попробуй AdsRightsCheck(.F.)

Спасибо: 0 
ПрофильЦитата Ответить
Администратор




Пост N: 1182
Зарегистрирован: 23.05.05
ссылка на сообщение  Отправлено: 13.07.09 16:52. Заголовок: Urri пишет: А что д..


Urri пишет:

 цитата:
А что для этого нужно сделать? В ADSServerType() поставить в качестве параметра 3 ?



Нет, надо убрать на клиенте убрать протокол ipx, и настроить доступ по ip.
Программа при этом не изменяется.

Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник


Пост N: 114
Зарегистрирован: 21.04.09
ссылка на сообщение  Отправлено: 14.07.09 12:44. Заголовок: Dima пишет: Попробу..


Dima пишет:

 цитата:
Попробуй AdsRightsCheck(.F.)



Это не помогло для w9x . А вот переход на IP протокол по совету Pasha резко улучшило ситуацию.

Все это хорошо с IP. только нам уже адресов перестает хватать уже, а чтобы 150 юзеров перевести на IP - совсем проблема, т.к. системщик с понедельника в отпуске. Ничего, будет ему работенка подсети делать когда приедет. А сейчас пока будем продолжать некоторое время работать с тормозами.

Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник


Пост N: 115
Зарегистрирован: 21.04.09
ссылка на сообщение  Отправлено: 15.07.09 12:03. Заголовок: Pasha пишет: По пов..


Pasha пишет:

 цитата:
По поводу кодировки. Если данные хранятся в кодировке OEM, и необходимо, чтобы украинская i кодировалась отдельным кодом, то прийдется использовать кодировку 1125 вместо 866, хотя она очень уж и нестандартная. В этом случае и перекодировка oem->ansi и наоборот будет выполняться правильно
Сейчас в Харборе нет отдельной кодировки для 1125. Я могу ее добавить.



Pasha, может как большой знаток исходников Harbour подскажешь где ковырнуть (похоже что в hb_gt_win_ReadKey), чтобы при вводе на преобразовывало укр. i в код, соответствующий i в 866 кодовой странице?

Скажи пожалуйста, а нажатие одновременное CTRL/ALT/2 или CTRL/ALT/P не отрабатывается Harbour? В клиппере такие комбинации срабатывали, а тут вообще никак не реагирует.


Спасибо: 0 
ПрофильЦитата Ответить
Администратор




Пост N: 1186
Зарегистрирован: 23.05.05
ссылка на сообщение  Отправлено: 15.07.09 12:50. Заголовок: Urri пишет: где ков..


Urri пишет:

 цитата:
где ковырнуть (похоже что в hb_gt_win_ReadKey), чтобы при вводе на преобразовывало укр. i в код, соответствующий i в 866 кодовой странице?



В gtwin ничего исправлять не надо. Надо найти плагин к фару с кодовой страницей 1125, установить его. При этом кодовая страница oem в windows заменяется с 866-й на 1125-ю, и украинские буквы правильно вводятся на украинской раскладке в gtwin: Іі - F6, F7, и т.д
Перекодировка oem (1125) <-> ansi (1251) также будет выполняться правильно

Только надо в программе указать (обновив, естественно, сам харбор):

вместо

REQUEST HB_CODEPAGE_RU866
hb_SetCodepage( "RU866" )

REQUEST HB_CODEPAGE_UA1125
hb_SetCodepage( "UA1125" )

Единственное неудобство: при переустановке windows надо не забывать устанавливать этот плагин.


Спасибо: 0 
ПрофильЦитата Ответить
Администратор




Пост N: 1187
Зарегистрирован: 23.05.05
ссылка на сообщение  Отправлено: 15.07.09 12:54. Заголовок: ЗЫ: в Ads то cp1125 ..


ЗЫ: в Ads то cp1125 нет

Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник


Пост N: 116
Зарегистрирован: 21.04.09
ссылка на сообщение  Отправлено: 15.07.09 16:51. Заголовок: Pasha пишет: ЗЫ: в ..


Pasha пишет:

 цитата:
ЗЫ: в Ads то cp1125 нет



Спасибо, добрая душа... Куда же я со своими 30 Гб рабочих баз и 150 пользователями от ADS денусь?

Спасибо: 0 
ПрофильЦитата Ответить
Администратор




Пост N: 1188
Зарегистрирован: 23.05.05
ссылка на сообщение  Отправлено: 15.07.09 17:02. Заголовок: Urri пишет: Куда же..


Urri пишет:

 цитата:
Куда же я со своими 30 Гб рабочих баз и 150 пользователями от ADS денусь?



Этот вопрос лучше к Extend systems
Но, насколько я понимаю, отсутствие в Ads украинской cp означает, что на сервере не будет учитываться сортировка для украинских символов, и upper/lower в индексе и sql-запросах. Это при установленной русской cp. Точно так же, кстати, как и для клиппера.
Это критично ?

Спасибо: 0 
ПрофильЦитата Ответить
Администратор




Пост N: 1191
Зарегистрирован: 23.05.05
ссылка на сообщение  Отправлено: 16.07.09 08:52. Заголовок: Urri пишет: Сортиро..


Urri пишет:

 цитата:
Сортировка может и нет так критична, а вот две программы для переключения ukr/lat, чтобы в одной переводило как раньше в i английское при работе с нашей программой, и оставляло i без изменений при наборе в Word/Excel - это критично. Юзеры разные бывают, сам знаешь, и переучивать их так нелегко...



Так ads здесь как раз ни при чем, к счастью. Это настройки клиента - системные - надо указать кодовую страницу oem windows - 1125, и для харбор-программы - ее же.
Для winxp я вчера проверил - работает как надо. Для win98 сейчас проверить не могу, надо пробовать.

Спасибо: 0 
ПрофильЦитата Ответить
Администратор




Пост N: 1192
Зарегистрирован: 23.05.05
ссылка на сообщение  Отправлено: 16.07.09 08:54. Заголовок: Urri пишет: чтобы в..


Urri пишет:

 цитата:
чтобы в одной переводило как раньше в i английское



Так все-таки в БД украинское i надо хранить с кодом 105 или 247 ?
Если первое, надо использовать cp866, если второе - cp1125

Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник


Пост N: 121
Зарегистрирован: 21.04.09
ссылка на сообщение  Отправлено: 16.07.09 16:57. Заголовок: Pasha пишет: Этот в..


Pasha пишет:

 цитата:
Этот вопрос лучше к Extend systems



Дык я же не с претензией... Так, чисто риторически.

Сортировка может и нет так критична, а вот две программы для переключения ukr/lat, чтобы в одной переводило как раньше в i английское при работе с нашей программой, и оставляло i без изменений при наборе в Word/Excel - это критично. Юзеры разные бывают, сам знаешь, и переучивать их так нелегко...

Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник


Пост N: 122
Зарегистрирован: 21.04.09
ссылка на сообщение  Отправлено: 17.07.09 08:10. Заголовок: Pasha пишет: Этот в..


Pasha пишет:

 цитата:
Этот вопрос лучше к Extend systems



Дык я же не с претензией... Так, чисто риторически.

Сортировка может и нет так критична, а вот две программы для переключения ukr/lat, чтобы в одной переводило как раньше в i английское при работе с нашей программой, и оставляло i без изменений при наборе в Word/Excel - это критично. Юзеры разные бывают, сам знаешь, и переучивать их так нелегко...

Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник


Пост N: 123
Зарегистрирован: 21.04.09
ссылка на сообщение  Отправлено: 17.07.09 15:01. Заголовок: Добрый день, уважаем..


Добрый день, уважаемые.
Тут наконец руки дошли до освоения CVS. Скачал Tortoise, записал все, как указано в рекомендациях на странице у AlKresin. Но при запуске требует пароль. Enter, "anonymous", "harbour" и некоторые другие слова - не помогают. Что подскажите? Есть ли у кого консольный клиент, на харборовском сайте его не нашел и даже в GOOGLE (искал CVS_DOS)? Может дадите ссылку?

Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник


Пост N: 716
Зарегистрирован: 09.10.06
ссылка на сообщение  Отправлено: 17.07.09 17:04. Заголовок: Urri пишет: Есть ли..


Urri пишет:

 цитата:
Есть ли у кого консольный клиент, на харборовском сайте его не нашел и даже в GOOGLE (искал CVS_DOS)



Консольный клиент является частью TortoiseCVS, вернее TortoiseCVS - это GUI надстройка над CVSNT. Так что консольный cvs у вас уже есть. См. \Program Files\CVSNT

Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник


Пост N: 124
Зарегистрирован: 21.04.09
ссылка на сообщение  Отправлено: 17.07.09 17:19. Заголовок: Да, спасибо Петр, я ..


Да, спасибо Петр, я там его и нашел по Вашему совету.

А дальше опять по совету AlKresin с его страницы беру строки,

@echo off
SET CVSROOT=:pserver:anonymous@harbour-project.cvs.sourceforge.net:/cvsroot/harbour-project
SET HOME=C:\CVS
cvs login
cvs checkout -P harbour

предварительно создав папку C:\CVS, перекладываю туда все из папки \Program Files\CVSNT, создаю bat файл, тык по нему, спрашивает пароль, тык Enter, а компьютер мне:

cvs server: cannot find module `harbour' - ignored

А что с этим делать?


Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник


Пост N: 717
Зарегистрирован: 09.10.06
ссылка на сообщение  Отправлено: 17.07.09 17:57. Заголовок: Harbour использует S..


Harbour использует SVN
xHarbour использует CVS

Чтобы скачать xHarbour
SET CVSROOT=:pserver:anonymous@xharbour.cvs.sourceforge.net:/cvsroot/xharbour
SET HOME=e:\CVS\XHARBOUR
e:\cvs\cvs login
e:\cvs\cvs checkout -P xharbour

Для пользования Harbour сначала скачайте TortoiseSVN


Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник


Пост N: 125
Зарегистрирован: 21.04.09
ссылка на сообщение  Отправлено: 20.07.09 09:54. Заголовок: Петр, спасибо. С CVS..


Петр, спасибо. С CVS все получилось и удалось скачать xHarbour. Все потранслировалось и собралось. Сейчас буду пробовать пересобирать свои проекты и тестировать.

Скачал и установил рекомендованную TortoiseSVN для скачивания Harbour. Для импорта требует указать URL of repository, это наверное ссылка туда, где хранятся модули Harbour. Не подскажите эту ссылку? Или я что-то не так делаю?

Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник


Пост N: 720
Зарегистрирован: 09.10.06
ссылка на сообщение  Отправлено: 20.07.09 12:19. Заголовок: Urri пишет: Не подс..


Urri пишет:

 цитата:
Не подскажите эту ссылку?



https://harbour-project.svn.sourceforge.net/svnroot/harbour-project

Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник


Пост N: 721
Зарегистрирован: 09.10.06
ссылка на сообщение  Отправлено: 20.07.09 12:23. Заголовок: Только не импорт нуж..


Только не импорт нужно выполнять, а checkout
svn co https://harbour-project.svn.sourceforge.net/svnroot/harbour-project harbour-project

Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник


Пост N: 126
Зарегистрирован: 21.04.09
ссылка на сообщение  Отправлено: 30.07.09 08:50. Заголовок: Добрый день, уважаем..


Добрый день, уважаемые.
Вернулся на xHarbour. По рекомендациям Петра воспользовался CVS, скачал распоследнюю версию, все что нужно подправил и перетранслировал - пересобрал. С этой версией и вышел на широкий простор - заставил всех своих юзеров работать на xHarbour. Работают в режиме WVT. Вылезло значительное количество проблем, которые при предварительной отладке не проявлялись (или не удалось на них попасть). Ничего, справились. Но остались еще некоторые проблемы.

1. Можно ли отключить заголовок окна (на 14" мониторах с разрешением 640*480 это непозволительная трата места, юзеры жалуются на мелкость шрифта).
2. Можно ли заставить xHarbour реагировать на нажатие CTRL/ALT/(буква, цифра или Enter). В клиппере это срабатывало без проблем, а здесь никак. А пользователи привыкли к определенным комбинациям и переучить их очень трудно. Да и для своих нужд эти кнопки приспособили, привыкли.
3. Клавиатура настроена на 3 раскладки: лат/рус/укр. Нажатие левый Alt/(буква) работает при любой из трех раскладок, а вот правый Alt/(буква) работает только при лат. или рус., а при укр. - не работает. С чего бы это?
4. Можно ли проверить программно состояние текущей раскладки клавиатуры и изменить цвет заголовка окна? (для нормальных мониторов, у которых заголовок окна можно сохранить)


Спасибо: 0 
ПрофильЦитата Ответить
Администратор




Пост N: 1196
Зарегистрирован: 23.05.05
ссылка на сообщение  Отправлено: 30.07.09 09:25. Заголовок: Urri пишет: 1. Можн..


Urri пишет:

 цитата:
1. Можно ли отключить заголовок окна (на 14" мониторах с разрешением 640*480 это непозволительная трата места, юзеры жалуются на мелкость шрифта).



У gtwvt такой возможности нет.
Но можно изменить gtwvt самому:

source/rtl/gtwvt/gtwvt.c
функция hb_gt_wvt_CreateWindow

При вызове CreateWindow убрать в 3-м параметре "|WS_CAPTION"

и пересобрать gtwvt.lib


Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник


Пост N: 127
Зарегистрирован: 21.04.09
ссылка на сообщение  Отправлено: 30.07.09 10:08. Заголовок: Pasha пишет: При вы..


Pasha пишет:

 цитата:
При вызове CreateWindow убрать в 3-м параметре "|WS_CAPTION"



Я так сделал.


hWnd = CreateWindow(
s_szClassName, /* classname */
szAppName, /* window name */
WS_THICKFRAME|WS_OVERLAPPED| /*WS_CAPTION|*/
WS_SYSMENU|WS_MINIMIZEBOX|WS_MAXIMIZEBOX, /* style */
0, /* x */
0, /* y */
CW_USEDEFAULT, /* width */
CW_USEDEFAULT, /* height */
NULL, /* window parent */
NULL, /* menu */
hInstance, /* instance */
NULL ); /* lpParam */

Пересобрал gtwvt.lib

Пересобрал свою программу. Не помогло...

Сейчас юзеры на это больше всего жалуются: 14" и 15" мониторов у нас много, а также на то, что яркость букв уменьшилась по сравнению с полноэкранным режимом.

А есть ли возможность сделать так, чтобы окно задачи закрыло и нижнюю панель задач, что-то типа FULL SCREEN ?


Спасибо: 0 
ПрофильЦитата Ответить
Администратор




Пост N: 1197
Зарегистрирован: 23.05.05
ссылка на сообщение  Отправлено: 30.07.09 10:32. Заголовок: Urri пишет: Я так с..


Urri пишет:

 цитата:
Я так сделал.



уберите еще
|WS_SYSMENU|WS_MINIMIZEBOX|WS_MAXIMIZEBOX


 цитата:
А есть ли возможность сделать так, чтобы окно задачи закрыло и нижнюю панель задач, что-то типа FULL SCREEN ?



должен быть какой-то WS_* для 3-го параметра, но я быстро его не найду


Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник


Пост N: 128
Зарегистрирован: 21.04.09
ссылка на сообщение  Отправлено: 30.07.09 10:48. Заголовок: Pasha пишет: уберит..


Pasha пишет:

 цитата:
уберите еще
|WS_SYSMENU|WS_MINIMIZEBOX|WS_MAXIMIZEBOX



Убрал. Все равно заголовок остался, но кнопки в правом верхнем углу действительно удалились.

Спасибо: 0 
ПрофильЦитата Ответить
moderator


Пост N: 237
Зарегистрирован: 06.07.06
ссылка на сообщение  Отправлено: 30.07.09 11:49. Заголовок: 1. Можно ли отключит..



 цитата:
1. Можно ли отключить заголовок окна (на 14" мониторах с разрешением 640*480 это непозволительная трата места, юзеры жалуются на мелкость шрифта).


В Createwindow() поставьте WS_POPUP вместо всего остального.

Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник


Пост N: 129
Зарегистрирован: 21.04.09
ссылка на сообщение  Отправлено: 30.07.09 14:45. Заголовок: alkresin пишет: В C..


alkresin пишет:

 цитата:
В Createwindow() поставьте WS_POPUP вместо всего остального.




Спасибо. Так получилось Жаль, что єтим нельзя управлять в зависимости от возможностей монитора. Сейчас раздам новій модуль юзерам, буду крики слушать.

А что можете подсказать насчет проблем с клавиатурой?

Спасибо: 0 
ПрофильЦитата Ответить
moderator


Пост N: 238
Зарегистрирован: 06.07.06
ссылка на сообщение  Отправлено: 30.07.09 15:51. Заголовок: Жаль, что єтим нельз..



 цитата:
Жаль, что єтим нельзя управлять в зависимости от возможностей монитора


Почему нельзя ? Попробуйте использовать, например, GetSystemMetrics(SM_CXSCREEN) - вызов WinAPI, возвращающий разрешение монитора по горизонтали, вставьте его перед CreateWindow() и в зависимости от результата используйте стиль WS_POPUP или тот, что был.

 цитата:
А что можете подсказать насчет проблем с клавиатурой?


Насчет раскладки клавиатуры пробуйте WinAPI - GetKeyboardLayoutName()
По поводу нажатия Ctrl+Alt+<1...> - не знаю. Windows берет обработку таких сочетаний на себя, не передавая их пользовательской программе. Возможно, есть способ такое поведение изменить, надо копать WinAPI.

Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник




Пост N: 890
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 30.07.09 21:32. Заголовок: Urri пишет: 2. Можн..


Urri пишет:

 цитата:
2. Можно ли заставить xHarbour реагировать на нажатие CTRL/ALT/(буква, цифра или Enter). В клиппере это срабатывало без проблем, а здесь никак. А пользователи привыкли к определенным комбинациям и переучить их очень трудно. Да и для своих нужд эти кнопки приспособили, привыкли.
3. Клавиатура настроена на 3 раскладки: лат/рус/укр. Нажатие левый Alt/(буква) работает при любой из трех раскладок, а вот правый Alt/(буква) работает только при лат. или рус., а при укр. - не работает. С чего бы это?



Форум заключен не только на этой странице...
Смотри http://clipper.borda.ru/?1-4-15-00000452-000-0-0-1245391628

Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник


Пост N: 130
Зарегистрирован: 21.04.09
ссылка на сообщение  Отправлено: 31.07.09 08:32. Заголовок: Доброе утро. Andrey..


Доброе утро.

Andrey пишет:

 цитата:
Форум заключен не только на этой странице...
Смотри http://clipper.borda.ru/?1-4-15-00000452-000-0-0-1245391628



Нечего тут строгость разводить. Я конечно уже эту страницу видел. Предложенным там способом не воспользовался, сделал по-своему и меня все устраивало до того момента, пока не пришлось добавить еще и укр. раскладку. А вот на ней правый Alt/буква вообще никак не реагирует, так же как и при нажатии CTRL/ALT/(цифра,буква). В предыдущем письме AlKresin предположил, что "Windows берет обработку таких сочетаний на себя, не передавая их пользовательской программе". Ну может в такой ситуации это и понятно (а почему тогда для Клиппера Windows ленился брать обработку на себя), а вот почему для рус. правый ALT/буква работает, а для укр. правый ALT/буква - снова "берет обработку на себя"


Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник


Пост N: 727
Зарегистрирован: 09.10.06
ссылка на сообщение  Отправлено: 31.07.09 11:35. Заголовок: Urri пишет: Ну може..


Urri пишет:

 цитата:
Ну может в такой ситуации это и понятно (а почему тогда для Клиппера Windows ленился брать обработку на себя)


Если бы вы за три месяца статуса "начинающего" не ленились хоть что-то узнать о модели ввода с клавиатуры в Windows и о исполнении 16 битных программ в Win32, вы бы таких вопросов не задавали. В общем RTFM.

Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник


Пост N: 133
Зарегистрирован: 21.04.09
ссылка на сообщение  Отправлено: 13.08.09 21:55. Заголовок: Добрый вечер. Подска..


Добрый вечер. Подскажите....

Имеется такая скромная ф-ци

function rupper(txt)
return upper(txt) (по тексту понятно: переводит txt в верхний регистр)

Стал замечать странности в работе, а также отсутствие такого перевода для украинской кодовой страницы заставило вспомнить давно и успешно работающую с Клиппером Си - шную ф-цию.
Была исправлена под xHarbour согласно рекомендациям AlKresin и теперь имеет такой вид

HB_FUNC( RUPPER )
{
/* par1 - исх.строка */
int i,j,n=hb_parclen(1);
char *str=hb_parc(1),*str1;

str1 = hb_xgrab( n );
memcpy( str1, str, n );
for(i=0;i<n;i++) { j=str1;
if (j<'a') continue;
if ((j>='а') && (j<='п')) { str1-='\x20'; continue; };
if ((j>='р') && (j<='я')) { str1-='\x50'; continue; };
if ((j>='a') && (j<='z')) { str1-='\x20'; continue; };
if (j=='ё') { str1='Ё'; continue; };
if (j=='є') { str1='Є'; continue; };
if (j=='ї') { str1='Ї'; continue; };
};

if( ISBYREF(1) )
hb_storclen( str1, n, 1 ) ;

hb_retclen_buffer( str1, n );
}

После этого все сломалось, программа вылетает с кодом 9003. И что я сделал не так?

Спасибо: 0 
ПрофильЦитата Ответить
Администратор




Пост N: 1204
Зарегистрирован: 23.05.05
ссылка на сообщение  Отправлено: 14.08.09 08:20. Заголовок: А ошибка часом не 90..


А ошибка часом не 9023 ?
Она возникает, если hb_xgrab вызывается с параметром 0
т.е, надо изменить вызов на
str1 = hb_xgrab( n + 1 );

либо добавить проверку на 0

Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник


Пост N: 134
Зарегистрирован: 21.04.09
ссылка на сообщение  Отправлено: 14.08.09 10:26. Заголовок: Павел, спасибо за от..


Павел, спасибо за ответ. Я уже попадался на такую ошибку, но, как говорил Шарапов, глаз "замылился"

Добавил перед строкой
str1 = hb_xgrab( n );

такой текст:

if (n==0) {
hb_retclen( str, n );
return; }

Продолжает вылетать с ошибкой как и раньше.

Тогда я еще заменил на (это из разряда дополнительной перестраховки)
str1 = hb_xgrab( n+1 );

На удивление, вылетать перестало, но работает неправильно: в верхний регистр не переводит (Си-шная ф-ция из Клиппера никогда не подводила)

Подскажи еще, пожалуйста, ф-ция hb_retclen_buffer( str1, n ); освобождает буфер, распределенный по hb_xgrab( n ); , или нужно заботиться об этом дополнительно и применять hb_xfree (str1);?


Спасибо: 0 
ПрофильЦитата Ответить
Администратор




Пост N: 1205
Зарегистрирован: 23.05.05
ссылка на сообщение  Отправлено: 14.08.09 11:12. Заголовок: Urri пишет: Подскаж..


Urri пишет:

 цитата:
Подскажи еще, пожалуйста, ф-ция hb_retclen_buffer( str1, n ); освобождает буфер, распределенный по hb_xgrab( n ); , или нужно заботиться об этом дополнительно и применять hb_xfree (str1);?



Нет, вызывать hb_xfree не надо.
Странно, у меня такая функция сработала - строку в верхний регистр перевела.


Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник


Пост N: 135
Зарегистрирован: 21.04.09
ссылка на сообщение  Отправлено: 14.08.09 11:56. Заголовок: Pasha пишет: Странн..


Pasha пишет:

 цитата:
Странно, у меня такая функция сработала - строку в верхний регистр перевела.



Да что же за невезуха такая???!!! Вынес эту ф-цию из большой задачи в тестовый пример - не работает, зараза.
Павел, может дашь свой тестовый пример с использованием этой ф-ции, в котором она заработала. А то я уже не знаю где копать.

Спасибо: 0 
ПрофильЦитата Ответить
Администратор




Пост N: 1206
Зарегистрирован: 23.05.05
ссылка на сообщение  Отправлено: 14.08.09 16:42. Заголовок: Сделайте так: HB_..


Сделайте так:


 цитата:

 
HB_FUNC( RUPPER )
{
/* par1 - исх.строка */
int i,n=hb_parclen(1);
char *str=hb_parc(1),*str1;
unsigned char c;

str1 = hb_xgrab( n + 1 );
memcpy( str1, str, n );
for(i=0;i<n;i++) { c=str1;
if (c<97) continue;
if ((c>=160) && (c<=175)) { str1-='\x20'; continue; };
if ((c>=224) && (c<=239)) { str1-='\x50'; continue; };
if ((c>=97) && (c<=122)) { str1-='\x20'; continue; };
if (c==241) { str1='Ё'; continue; };
if (c==243) { str1='Є'; continue; };
if (c==245) { str1='Ї'; continue; };
};

if( ISBYREF(1) )
hb_storclen( str1, n, 1 ) ;

hb_retclen_buffer( str1, n );
}




Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник


Пост N: 136
Зарегистрирован: 21.04.09
ссылка на сообщение  Отправлено: 15.08.09 12:35. Заголовок: Спасибо Павел. Я тож..


Спасибо Павел. Я тоже такой выход уже нашел: добавил промежуточной печати и получил для 'а' отрицательное число (и для других явных литералов тоже). Поставил конкретные коды вместо литералов - все заработало. Это что - особенности С для Нарбора? И почему нужно выделять на один байт больше, чем нужно, если я точно знаю, что строка для преобразования не пустая?

Спасибо: 0 
ПрофильЦитата Ответить
Администратор




Пост N: 1207
Зарегистрирован: 23.05.05
ссылка на сообщение  Отправлено: 17.08.09 09:42. Заголовок: Urri пишет: Это что..


Urri пишет:

 цитата:
Это что - особенности С для Нарбора?



Нет таких особенностей
см. флаги bcc32:

-K Default char is unsigned

по умолчанию этот флаг выключен, т.е. константы char будут signed
Если это флаг установить, то эти константы будут unsigned, и их можно сравнивать с int.


Спасибо: 0 
ПрофильЦитата Ответить
Администратор




Пост N: 1208
Зарегистрирован: 23.05.05
ссылка на сообщение  Отправлено: 18.08.09 09:31. Заголовок: Urri пишет: И почем..


Urri пишет:

 цитата:
И почему нужно выделять на один байт больше, чем нужно, если я точно знаю, что строка для преобразования не пустая?



Вчера не заметил этот вопрос
Если есть проверка на 0 перед hb_xgrab, то ее можно вызывать с параметром n
Если такой проверки нет, то надо вызывать hb_xgrab(n+1), чтобы избежать ошибки 9023

Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник


Пост N: 137
Зарегистрирован: 21.04.09
ссылка на сообщение  Отправлено: 19.08.09 13:03. Заголовок: Pasha пишет: Если е..


Pasha пишет:

 цитата:
Если есть проверка на 0 перед hb_xgrab, то ее можно вызывать с параметром n
Если такой проверки нет, то надо вызывать hb_xgrab(n+1), чтобы избежать ошибки 9023



Проверка конечно есть, но даже с проверкой приходится выделять (n+1), вот что интересно. Иначе работает с ошибкой.
(проверил сейчас еще раз)

Спасибо: 0 
ПрофильЦитата Ответить



Не зарегистрирован
Зарегистрирован: 01.01.70
ссылка на сообщение  Отправлено: 25.08.09 13:13. Заголовок: Помогите новичку,пож..


Помогите новичку,пожалуйста!
Проблема в следующем: есть DBF-файл в ДОС кодировке.
При попытке вывести его в TBrowse вместо русских букв крякозябры
Причем крякозябры одинаковые при USE wrmo0907 CODEPAGE "RU866" и
USE wrmo0907 CODEPAGE "RU1251"
Русские буквы появляются только при использовании шрифта Terminal,
но тогда заголовки колонок крякозябрами
Что делать?

Спасибо: 0 
Цитата Ответить
Ответов - 294 , стр: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 All [только новые]
Ответ:
1 2 3 4 5 6 7 8 9
большой шрифт малый шрифт надстрочный подстрочный заголовок большой заголовок видео с youtube.com картинка из интернета картинка с компьютера ссылка файл с компьютера русская клавиатура транслитератор  цитата  кавычки моноширинный шрифт моноширинный шрифт горизонтальная линия отступ точка LI бегущая строка оффтопик свернутый текст

показывать это сообщение только модераторам
не делать ссылки активными
Имя, пароль:      зарегистрироваться    
Тему читают:
- участник сейчас на форуме
- участник вне форума
Все даты в формате GMT  3 час. Хитов сегодня: 292
Права: смайлы да, картинки да, шрифты да, голосования нет
аватары да, автозамена ссылок вкл, премодерация откл, правка нет