On-line: гостей 1. Всего: 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: 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 
ПрофильЦитата Ответить
Ответов - 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 час. Хитов сегодня: 63
Права: смайлы да, картинки да, шрифты да, голосования нет
аватары да, автозамена ссылок вкл, премодерация откл, правка нет