On-line: Andrey, гостей 0. Всего: 1 [подробнее..]
АвторСообщение





Пост N: 86
Зарегистрирован: 08.07.06
ссылка на сообщение  Отправлено: 11.08.13 18:47. Заголовок: Перехожу с Clipper 5.2e на Harbour, список вопросов от "новичка"


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

Большое спасибо за море справочной информации по переходу, но нужно ещё пнуть меня в нужном направлении.

Итак, установил Harbour 3.0 + BCC 5.5.1 ==>> 3.2.0 +minGW скомпилировал и запустил традиционный "Hello, world!"
Дело перешло к проекту, из-за которого собственно и речь. Компилируется что через hbmk2, что самим харбором - без ошибок, всего с парой предупреждений, что меня немало удивило.
Возникли ошибки на этапе линковки:

Скрытый текст

Help, please - что делать и куды бечь ?

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


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




Пост N: 3440
Зарегистрирован: 17.05.05
ссылка на сообщение  Отправлено: 22.08.13 15:25. Заголовок: Sergy пишет: где ? ..


Sergy пишет:

 цитата:
где ? как именно ?


Паша придет скажет я не помню ;)

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





Пост N: 192
Зарегистрирован: 08.07.06
ссылка на сообщение  Отправлено: 22.08.13 15:36. Заголовок: Есть ли способ прове..


Есть ли способ проверить существование текущего GET-объекта ?
Чтобы потом сделать проверку наподобие такой: VALTYPE(oGet:varGet() == "N") ?

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




Пост N: 3441
Зарегистрирован: 17.05.05
ссылка на сообщение  Отправлено: 22.08.13 15:42. Заголовок: Sergy пишет: Есть л..


Sergy пишет:

 цитата:
Есть ли способ проверить существование текущего GET-объекта ?


а зачем если ты объявишь Set key (46 код) на эту педаль и будешь слать в буфер точку ?

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





Пост N: 193
Зарегистрирован: 08.07.06
ссылка на сообщение  Отправлено: 22.08.13 15:54. Заголовок: Dima пишет: а зачем..


Dima пишет:

 цитата:
а зачем если ты объявишь Set key (46 код) на эту педаль и будешь слать в буфер точку ?



а если там текстовое поле и нужна запятая ?

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




Пост N: 3443
Зарегистрирован: 17.05.05
ссылка на сообщение  Отправлено: 22.08.13 16:07. Заголовок: Sergy Если мы говор..


Sergy
Если мы говорим о цифровой панели и о кнопке DEL c точкой , то при нажатии этой педали
всегда должна биться точка если включен NumLock не зависимо от раскладки клавы.
Или я что то не понял ? :)

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





Пост N: 195
Зарегистрирован: 08.07.06
ссылка на сообщение  Отправлено: 22.08.13 16:31. Заголовок: Dima пишет: Если мы..


Dima пишет:

 цитата:
Если мы говорим о цифровой панели и о кнопке DEL c точкой , то при нажатии этой педали
всегда должна биться точка если включен NumLock не зависимо от раскладки клавы.
Или я что то не понял ? :)



Да, именно о ней. Но разве INKEY() этой запятой чем-то отличается от запятой, набранной на стандартной клавиатуре? Ведь иногда нужна именно запятая.

... пойду проверю...

upd: не отличаются. И в том и другом случае код 44.

Эти кнопки, кстати о птичках, легко отличал TRAPANYKEY() И на его основе (кроме макросов), такая замена была-бы сделана в три строчки кода...

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




Пост N: 3444
Зарегистрирован: 17.05.05
ссылка на сообщение  Отправлено: 22.08.13 17:12. Заголовок: Sergy пишет: Есть л..


Sergy пишет:

 цитата:
Есть ли способ проверить существование текущего GET-объекта ?
Чтобы потом сделать проверку наподобие такой: VALTYPE(oGet:varGet() == "N") ?



Ваял что то ваял я , смотри как можно проанализировать но есть затык
 
Proc Main
local acc:=0
local acc1:=" "
cls
setmode(25,80)
set key 28 to test

@ 0,0 get acc
@ 1,0 get acc1

read
RETURN
************

FUNCTION test()

LOCAL n := 0 ,i


WHILE ! Empty( ProcName( n ) )
n++
if procname(n)=="HBGETLIST:READMODAL"
for i=1 to len(__GETLISTACTIVE())
? __GETLISTACTIVE()[ i ],i

* вот тут можно проверять по идее Valtype(__GETLISTACTIVE()[13]) твоя текущая переменная в GET
* но зараза все время выдает "C" , похоже не там копаю или не так........
next
endif

ENDDO

RETURN NIL



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




Пост N: 3445
Зарегистрирован: 17.05.05
ссылка на сообщение  Отправлено: 22.08.13 18:03. Заголовок: Все разобрался Функц..


Все разобрался
Функция Test
 
FUNCTION test()

LOCAL n := 0 ,i

WHILE ! Empty( ProcName( n ) )
n++
if procname(n)=="HBGETLIST:READMODAL"
if valtype(GetActive():varGet())=="N"
hb_keyins(".")
exit
endif
endif

ENDDO

RETURN NIL



Упрощаем ;)
 
FUNCTION test()
if GetActive()#NIL
if valtype(GetActive():varGet())=="N"
hb_keyins(".")
endif
endif

return nil





ЗЫ
Set key вешаем на точку или куда хотел.

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





Пост N: 196
Зарегистрирован: 08.07.06
ссылка на сообщение  Отправлено: 22.08.13 21:57. Заголовок: Dima пишет: FUNCTI..


Dima пишет:

 цитата:
FUNCTION test()
if GetActive()#NIL
if valtype(GetActive():varGet())=="N"
hb_keyins(".")
endif
endif

return nil



Красиво. Осталось разрешить ввод собственно запятой, когда она нужна.

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





Пост N: 197
Зарегистрирован: 08.07.06
ссылка на сообщение  Отправлено: 23.08.13 00:22. Заголовок: Три часа бился, вот ..


Три часа бился, вот что вышло:

Скрытый текст


Все было-бы проще, если-бы удалось запустить Харборовскую функцию SETKEY() с описанным третьим параметром:

SETKEY(44,{||HB_KeyIns(".")},;  
{||GetActive() # NIL .AND. VALTYPE(GetActive():varGet())=="N"})

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

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




Пост N: 3448
Зарегистрирован: 17.05.05
ссылка на сообщение  Отправлено: 23.08.13 11:10. Заголовок: Sergy пишет: SETKEY..


Sergy пишет:

 цитата:
SETKEY(44,{||HB_KeyIns(".")},;
{||GetActive() # NIL .AND. VALTYPE(GetActive():varGet())=="N"})



а так ?
HB_SETKEY(44,{|| if(GetActive() # NIL .AND. VALTYPE(GetActive():varGet())=="N",HB_KeyIns("."),"")})


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





Пост N: 198
Зарегистрирован: 08.07.06
ссылка на сообщение  Отправлено: 23.08.13 12:18. Заголовок: Dima пишет: а так ?..


Dima пишет:

 цитата:
а так ?
HB_SETKEY(44,{|| if(GetActive() # NIL .AND. VALTYPE(GetActive():varGet())=="N",HB_KeyIns("."),"")})



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

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




Пост N: 228
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 23.08.13 14:17. Заголовок: может так: HB_SETKE..


может так:
 
HB_SETKEY(44,{|o| o:= GetActive(), if(o # NIL, if(VALTYPE(o:varGet())=="N", HB_KeyIns("."), o:Insert(",")), "")})
где:
Text Entry Methods
insert() Inserts characters into the editing buffer:

insert(<cChar>) --> self

Inserts <cChar> into the editing buffer at the current cursor
position, shifting the existing contents of the buffer to the right.
The cursor is then placed one position to the right of the inserted
string.



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





Пост N: 199
Зарегистрирован: 08.07.06
ссылка на сообщение  Отправлено: 23.08.13 14:22. Заголовок: SergKis пишет: мож..


SergKis пишет:

 цитата:

может так:
...
o:Insert(",")


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

Нужно будет попробовать.

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




Пост N: 3449
Зарегистрирован: 17.05.05
ссылка на сообщение  Отправлено: 23.08.13 14:57. Заголовок: При нажатии запятой ..


При нажатии запятой в этом случае в GET вставляется пробел почему то

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





Пост N: 215
Зарегистрирован: 08.07.06
ссылка на сообщение  Отправлено: 23.08.13 19:31. Заголовок: Dima пишет: При наж..


Dima пишет:

 цитата:
При нажатии запятой в этом случае в GET вставляется пробел почему то



+1

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




Пост N: 230
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 23.08.13 22:32. Заголовок: Dima пишет: При нажа..


Dima пишет:
 цитата:
При нажатии запятой в этом случае в GET вставляется пробел почему то


пробел не вставляется, вставляется "" и позиция каретки +1, т.е. в tget.prg method insert( cChar ) для
...
::cBuffer := Left( SubStr( ::cBuffer, 1, ::nPos - 1 ) + cChar + SubStr( ::cBuffer, ::nPos ), ::nMaxEdit )
cChar == "" а не "," .
что есть печально.



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




Пост N: 3460
Зарегистрирован: 17.05.05
ссылка на сообщение  Отправлено: 23.08.13 22:45. Заголовок: SergKis пишет: что ..


SergKis пишет:

 цитата:
что есть печально.


да не все еще отточено в Harbour
а метода твоя была супер

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




Пост N: 231
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 23.08.13 22:52. Заголовок: Dima а так работает:..


Dima
а так работает:
 
hb_SetKey(44, {|| MyTest44(GetActive()) }, {|| GetActive() != NIL})
...
FUNC myTest44( o )

IF o:pos > 1
o:buffer := left(subs(o:buffer, 1, o:pos-1)+','+subs(o:buffer, o:pos+1), len(o:buffer))
ELSE
o:buffer := ','+subs(o:buffer, 2)
ENDIF
o:varPut(o:buffer)
o:display()

RETURN


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





Пост N: 220
Зарегистрирован: 08.07.06
ссылка на сообщение  Отправлено: 24.08.13 19:05. Заголовок: SergKis пишет: а та..


SergKis пишет:

 цитата:
а так работает:


теперь курсор не сдвигается с места после установки запятой Но за идею - спасибо.

Вот что получилось в итоге (upd @22:00)

 
FUNC CommaRepl(oGet) // меняем запятую на точку

IF (VALTYPE(oGet:VarGet()) == "C") // текст ?
IF (VAL(oGet:VarGet()) # 0) // а по сути цифра ?
PutInKbd(".") // меняем на точку
ELSE // не цифра, соотв. нужна запятая
// тк банальный :Insert(",") пока глючит, извращаемся так:
IF oGet:pos > 1
oGet:buffer := LEFT(SUBSTR(oGet:buffer, 1, oGet:pos-1)+','+;
SUBSTR(oGet:buffer, oGet:pos+1), LEN(oGet:buffer))
ELSE
oGet:buffer := ','+SUBSTR(oGet:buffer, 2)
ENDIF
oGet:VarPut(oGet:buffer)
oGet:Display()
oGet:pos += 1 // перемещаем каретку вправо
ENDI
ELSE // цифра, дата и тп...
PutInKbd(".") // меняем на точку
ENDIF

RETURN


Спасибо: 0 
ПрофильЦитата Ответить
Ответов - 285 , стр: 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 час. Хитов сегодня: 94
Права: смайлы да, картинки да, шрифты да, голосования нет
аватары да, автозамена ссылок вкл, премодерация откл, правка нет