Форум » [x]Harbour » Getsecret из CT » Ответить

Getsecret из CT

Dima: В Clipper setcursor(1) tess:=getsecret(space(15),17,25,," Пароль ──> ") // курсор есть setcursor(0) В Harbour курсор почему то не включается

Ответов - 14

Andrey: Dima пишет: В Harbour курсор почему то не включается Какой Харбор ?

Dima: Andrey пишет: Какой Харбор ? Harbour 3.2 dev (последний с SVN)

Andrey: В хХарборе 1.2.1 есть курсор. Под Харбором у меня опять не собирается зараза... C:\UTIL\GET>z:\HB32\BIN\hbmk2.exe GET_PASS.PRG Harbour 3.2.0dev (Rev. 18721) Copyright (c) 1999-2013, http://harbour-project.org/ Compiling 'GET_PASS.PRG'... Lines 509, Functions/Procedures 1 Generating C source output to 'C:\Users\Andrey\AppData\Local\T .c'... Done. C:\Users\Andrey\AppData\Local\Temp\hbmk_nc5uo8.dir\GET_PASS.c: Turbo Incremental Link 5.00 Copyright (c) 1997, 2000 Borland Fatal: Unable to open file 'HBEXTERN.LIB' hbmk2: Error: Running linker. 2


nick_mi: У меня в HARBOUR 3.0.0 (Rev. 16951) эта библиотекв есть. Может не все пересобрал?

Andrey: nick_mi пишет: Может не все пересобрал? Я готовым пользуюсь 3.2 z:\HB32\BIN\hbmk2.exe GET_PASS.PRG - почему через hbmk2.exe сам не находит ???

PSP: Напиши [pre]z:\HB32\BIN\hbmk2.exe -lHBEXTERN.LIB GET_PASS.PRG [/pre]

Andrey: PSP пишет: Напиши z:\HB32\BIN\hbmk2.exe -lHBEXTERN.LIB GET_PASS.PRG Спасибо за подсказку. Но все равно не работает. Оказывается у меня нет библиотек для 3.2 для BCC и из-за этого не находит БИБЛИОТЕКУ ....

Dima: Косяк еще один в этой функции [pre2] proc main local pass cls pass:=getsecret(space(15),17,25,," Password ── > ") ? pass return [/pre2] Собираем и вводим 222222 , затем трем это дело с помощью BackSpace и вводим 111 , жмем ввод На выходе имеем 111222 а должно быть 111 PS Если съехать в начало строки и удалять символы с помощью DEL , то картина та же

Dima: Все еще актуально. Может кто то предложит свою правку сырца ?

Sergy: Dima пишет: Все еще актуально. Может кто то предложит свою правку сырца ? Посмотри, может этот совершенно рабочий вариант пригодится: [pre2]* ------------------------------------------------------ * STATIC FUNC GetPassString(aa,bb,cMessage,cString,nMaxLen,; cMaskChar,cColor,lNeedRedraw) LOCAL first:=TRUE,a,b,result,bx,save_isr,bk_Ins,sx DEFAULT cMaskChar TO "*" DEFAULT cColor TO "15/0" DEFAULT lNeedRedraw TO FALSE cMaskChar:=LEFT(cMaskChar,1) result :=cString @ aa,bb SAY cMessage+" " a:=ROW(); b:=COL() IF !is_read SET CURS ON bk_Ins:=SETKEY(K_INS,{||SetInsert()}) ENDI REPEAT IF ISBIT(KBDSTAT(),7) Message("Пароль может быть введен неправильно из-за нажатой клавиши CapsLock.","7/0") ELSE Message(,"7/0") ENDI @ a,b SAY SPACE(nMaxLen) COLOR cColor IF EMPTY(cMaskChar) @ a,b SAY result COLOR cColor ELSE @ a,b SAY REPL(cMaskChar,LEN(result)) COLOR cColor ENDI IF first; SETPOS(a,b); ENDI IF lNeedRedraw; EXIT; ENDI #ifdef __HARBOUR__ ch:=INKEY(0) #else ch:=INKEYTRAP(0) #endif IF ch=K_ESC; EXIT ELSEIF ch=K_BS IF LEN(result) > 0 result:=LEFT(result,LEN(result)-1) ENDI ELSEIF IsNotControl(CHR(ch)) .OR. (ch=255) sx:=result // сохраняем во врем.перем. IF first result:=CHR(ch); first:=FALSE ELSEIF LEN(result) < nMaxLen result+=CHR(ch) ENDI IF cbCP2(result) == FALSE // проверяем символы пароля на допустимость result:=sx // восстанавливаем в случае ошибки ENDI ENDI UNTIL (ch==K_ENTER) .OR. (ch==K_CTRL_ENTER) IF !is_read SETKEY(K_INS,bk_Ins) SET CURS OFF ENDI RETURN result [/pre2] is_read - глобальная переменная, указывающая, что где-то идет процесс @ GET / READ и курсор выключать не нужно. cbCP2 - функция, которая возвращает TRUE/FALSE в зависимости от того, введен допустимый символ или нет (у меня так отсекаются русские буквы, чтобы народ не парился "почему пароль не подходит")

Dima: Sergy Спасибо завтра буду вникать !

Pasha: Все еще актуально. Может кто то предложит свою правку сырца ? contrib\hbct\getsecrt.prg, после строки 138 добавить строки: ELSEIF nKey == K_BS IF oGet:pos > 1 _cGetSecret := Padr( Left( _cGetSecret, oGet:pos - 2 ) + Substr( _cGetSecret, oGet:pos ), nLen ) ENDIF и до кучи: ELSEIF nKey == K_DEL _cGetSecret := Padr( Left( _cGetSecret, oGet:pos - 1 ) + Substr( _cGetSecret, oGet:pos + 1 ), nLen ) Извини, не проверял (с) PS С этим IE10 приходится ручками добавлять [ quote ] для цитирования, java включен. С mozilla естественно все ок.

Dima: Pasha Работает. Спасибо !

Dima: Pasha пишет: PS С этим IE10 приходится ручками добавлять [ quote ] для цитирования, java включен. С mozilla естественно все ок. Проверил цитирование в IE 8 - работает правильно



полная версия страницы