Автор | Сообщение |
|
| постоянный участник
|
Пост N: 1
Зарегистрирован: 21.04.09
|
|
Отправлено: 21.04.09 15:43. Заголовок: Помогите советом начинающему...
Тут вот надумал переползти на xHarbour. Возникла следующая проблема: имена всех функций и подпрограмм дополняются префиксом HB_FUN_. А можно ли этого избежать так, чтобы остались родные, начальные имена. У меня весь софт построен на скриптах, в которых уже стоят вызовы функций и процедур по привычным, родным именам. И перелопатить везде в 5000 текстовых файлах-скриптах вызовы функций и поменять на новые - задача крайне утомительная с непонятной перспективой на успех.
|
|
|
Ответов - 294
, стр:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
All
[только новые]
|
|
|
| постоянный участник
|
Пост 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
|
|
|
|
| постоянный участник
|
Пост N: 36
Зарегистрирован: 21.04.09
|
|
Отправлено: 14.05.09 17:26. Заголовок: Добрый вечер, уважае..
Добрый вечер, уважаемые. Подскажите пожалуйста: а совместимы ли способы блокировки записей в ADS, вызываемые из Клиппера и проверяемые в Нарборе? После использования в клиппере функции rlock() функцией ax_islocked() указывает, что запись заблокирована, но в Харборе функция ADSISRECORDLOCKED() дает .F. Есть ли где описание соответствия функций для ADS, вызываемых из клиппера и Харбора? А то по названиям можно догадываться, а вот при проверке - не работает.
|
|
|
|
| Администратор
|
Пост N: 1124
Зарегистрирован: 23.05.05
|
|
Отправлено: 15.05.09 08:22. Заголовок: Проверил на ace 7.0,..
Проверил на ace 7.0, local server, AdsIsRecordLocked() работает На ace 8 проверить не могу
|
|
|
|
| постоянный участник
|
Пост N: 37
Зарегистрирован: 21.04.09
|
|
Отправлено: 15.05.09 10:07. Заголовок: Да, но Local и Remot..
Да, но Local и Remote версии при работе с ADS только из Harbour работает нормально, а вот если для remote server блокировку поставила одна программа, написанная на Клиппере, то другая программа, написанная на Харборе эту блокировку не видит. Т.е. получается, что с одной таблицей не может правильно (в смысле анализа блокировок) работать две программы: одна на Клиппере, другая полный ее аналог, но на Харборе (с разницей только в вызываемых функциях анализа блокировок). Я спрашивал именно про совместную работу Клиппера и Харбора
|
|
|
|
| Администратор
|
Пост N: 1125
Зарегистрирован: 23.05.05
|
|
Отправлено: 15.05.09 10:24. Заголовок: Я бы советовал задат..
Я бы советовал задать этот вопрос в Ads support Совместимы ли блокировки старого клиента клиппер с ace 8.0. У ads раньше была newsgroup, я даже задавал там вопрос, и мне отвечали, адреса правда под рукой нет. Возможно, он уже изменился
|
|
|
|
| Администратор
|
Пост N: 1126
Зарегистрирован: 23.05.05
|
|
Отправлено: 15.05.09 10:34. Заголовок: Вот где собака порыл..
Вот где собака порылась AdsIsRecordLocked tests if the given record is locked by the current user
|
|
|
|
| Администратор
|
Пост N: 1127
Зарегистрирован: 23.05.05
|
|
Отправлено: 15.05.09 10:46. Заголовок: dbInfo(DBI_GETLOCKAR..
dbInfo(DBI_GETLOCKARRAY) возвращает массив блокировок, номера записей Можно проверять: ASCAN(dbInfo(DBI_GETLOCKARRAY), RecNo()) # 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() проверит - нужную строку уже заблокируют
|
|
|
|
| Администратор
|
Пост 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
|
|
|
|
| постоянный участник
|
Пост N: 39
Зарегистрирован: 21.04.09
|
|
Отправлено: 15.05.09 12:00. Заголовок: Pasha пишет: Почему..
Pasha пишет: цитата: | Почему бы не блокировать нужные записи сразу ? Примерно так |
| Какие записи блокировать выясняется в процессе расчета. Бывает нужно заблокировать штук 300, а бывает - только 1. А блокировать на всякий случай - так это переводняк времени (в ADS блокировки выполняются неторопливо). Проблема вот в чем. На 20 машинах запускается расчет для 250000 абонентов. Первая машина прихватила (заблокировала) первую строку списка - расчитывает, вторая машина - проверила эту строку: занята (заблокирована кем-то) - перешла на следующую строку, прихватила, расчитывает. Третья машина проверила первуя строку, вторую строку - заняты. Прихватила третью. И т.д. А потом первая строка ищет в списке следующую свободную для расчета и т.д. Получается такой себе конвейер. А теперь получается нужно придумывать другой по банальной причине...
|
|
|
|
| Администратор
|
Пост N: 1129
Зарегистрирован: 23.05.05
|
|
Отправлено: 15.05.09 12:31. Заголовок: А зачем разделять пр..
А зачем разделять проверку и блокировку ? rlock/dbRLock - это проверка и блокировка в одном флаконе А то может оказаться, что запись будет захвачена другим пользователем между вызовами ax_islocked и rlock
|
|
|
|
|
| постоянный участник
|
Пост N: 40
Зарегистрирован: 21.04.09
|
|
Отправлено: 18.05.09 16:33. Заголовок: Добрый день. Подска..
Добрый день. Подскажите пожалуйста, как заставить ф-цию FT_SETVPG прилинковаться. В LIBNF она есть, при вызове FT_INT86, которая ее вызывает, пишет про неразрешенную внешнюю ссылку. При попытке вставить в исходный текст эту ф-цию из исходников - пишет, что дублируется... И что делать? Очень хочется воспользоваться ф-цией FT_INT86 чтобы закончить с печатью... Кстати, кто как в Харборе печатает, т.е. выбодит на принтер. Просматривал список предлагаемых в Харборе функций - про все сказано, что сделаны только для совместимости и возвращают постоянное значение вне зависимости от ситуации. А какая же родная ф-ция печати в Харборе?
|
|
|
|
| постоянный участник
|
Пост N: 41
Зарегистрирован: 21.04.09
|
|
Отправлено: 18.05.09 17:00. Заголовок: Еще такой вопрос. Вы..
Еще такой вопрос. Вызываются ли под ADS SQL команды, например выбрать нечто по условию и результат записать в DBF файл. Попытка использования ф-ции ADSEXECUTESQLDIRECT('select ...') ни к чему не привела. Дайте пример.
|
|
|
|
| Администратор
|
Пост 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
|
|
|
|
| постоянный участник
|
Пост N: 42
Зарегистрирован: 21.04.09
|
|
Отправлено: 18.05.09 20:06. Заголовок: Спасибо. Щас будем р..
Спасибо. Щас будем разбираться. Может у кого есть описание указанных ф-ций? А ф-ция ADSEXECUTESQLDIRECT что, не работает? И что подскажите насчет печати (предыдущего вопроса)?
|
|
|
|
| Администратор
|
Пост 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 Какие именно функции печати имеются в виду ?
|
|
|
|
| Администратор
|
Пост N: 1139
Зарегистрирован: 23.05.05
|
|
Отправлено: 19.05.09 08:35. Заголовок: Urri пишет: А ф-ция..
Urri пишет: цитата: | А ф-ция ADSEXECUTESQLDIRECT что, не работает? |
| По-видимому, перед ее вызовом надо выдать: AdsCreateSQLStatement(cAlias, 2)
|
|
|
|
| постоянный участник
|
Пост 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. Она ведь есть в библиотеках Харбора, только не работает так, как раньше под Клиппером. Или подскажите другой вариант проверки готовности принтера (матричные принтеры у нас еще имеются)
|
|
|
|
| постоянный участник
|
Пост N: 44
Зарегистрирован: 21.04.09
|
|
Отправлено: 19.05.09 11:01. Заголовок: Pasha пишет: По-вид..
Pasha пишет: цитата: | По-видимому, перед ее вызовом надо выдать: AdsCreateSQLStatement(cAlias, 2) |
| Что есть cAlias? Что такое параметр 2? Смотрю примеры из Харбор, понятного весьма мало т.к. нет ну никакого описания. А прокладывать дорогу в дебрях исходников на С очень утомительно и долго. Может у кого есть какое-то описание? И вообще из участников этого форума кто-то использует SQL запросы при работе ADS с .DBF файлами, а не .ADT? Хочу пока немного: сделать выборку SQL запросом и вывалить результат в .DBF файл...
|
|
|
|
| Администратор
|
Пост N: 1140
Зарегистрирован: 23.05.05
|
|
Отправлено: 19.05.09 11:29. Заголовок: Алиас - это алиас ра..
Алиас - это алиас рабочей области, в которой будет выполняться select 2 - имеется в виду ADS_CDX После выполнения select в рабочей области можно использовать обычные средства rdd: go top, skip, обращение к полям Поскольку эти функции в харборе не описаны, то надо смотреть сырцы rddads, и, конечно, помощь к ace
|
|
|
Ответов - 294
, стр:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
All
[только новые]
|
|