Автор | Сообщение |
|
| |
Не зарегистрирован
Зарегистрирован: 01.01.70
|
|
Отправлено: 01.04.06 00:24. Заголовок: Проблемы с xHarbour-программой
Ура-а! EXEшник получился! Однако сразу обнаружилось несколько проблем: 1. Как только я пытаюсь использовать функцию из сторонней библиотеки, она тут же вылезает ошибкой при линковке, например: Error: Unresolved external '_HB_FUN_OL_ISNT' referenced from F:\XHARBOUR\MAIN\SETUP.OBJ хотя библиотека OSLIB.LIB, содержащая функцию OL_ISNT(), в линковке указана... Что с этим делать? 2. На экране появился курсор мыши. Но поскольку нигде в программе она у меня пока не используется, как его можно убрать? А то ведь юзвери однозначно будут пытаться щёлкать мышью и возмущаться из-за отсутствия реакции! 3. В оконном режиме попытался закрыть окно программы щелчком мыши на кресте (ну как обычно закрываются все Windows-программы), и получил фигвам: "Windows не может автоматически завершить...". Так что, Harbour-программа - это не совсем Windows-программа? Или всё-таки подобное закрытие программы возможно?
|
|
|
Ответов - 42
, стр:
1
2
3
All
[только новые]
|
|
|
| |
Не зарегистрирован
Зарегистрирован: 01.01.70
|
|
Отправлено: 07.04.06 00:47. Заголовок: Re:
Господа, Вы излишне увлеклись подсчётом прожитых лет Повторяю вопрос: А FAQ Павла свежий где-нить имеется? А то у меня вариант от февраля 2005... И парочка новых: 1. Как у xHarbour-программы с защитой от взлома? В Clipperе я юзал "blinker executable compress, а здесь? 2. Можно ли в тексте исходной клипперной проги использовать одну из стандартных C-фукнций и если да, то как это оформить?
|
|
|
|
| Администратор
|
Не зарегистрирован
Зарегистрирован: 01.01.70
|
|
Отправлено: 07.04.06 08:27. Заголовок: Re:
FAQ Нет 1. Пока нет, хотя это Рон планировал добавить - защиту на уровне пи-кода Упаковать exe можно утилитой upx Еще можно шифровать в exe символьные строки: #pragma TEXTHIDDEN(1) ? "This is a hidden text" #pragma TEXTHIDDEN(0) 2. Да. Прямо в теле функции: prg-функция ... uRet := HB_INLINE(par1, par2,...) { обычная С-функция: обьявление переменных, параметры принимаются обычным образом: hb_parnXX(n) возврат результата: hb_retXXX() } продолжение prg-функции
|
|
|
|
| |
Не зарегистрирован
Зарегистрирован: 01.01.70
|
|
Отправлено: 07.04.06 09:32. Заголовок: Re:
Лукашевский пишет: цитата: | 2. Можно ли в тексте исходной клипперной проги использовать одну из стандартных C-фукнций и если да, то как это оформить? |
| Типа так : #define ....... #include ...... Procedure main() .............. Ci1() .............. Ci2() .............. Return Nil *************************** #pragma BEGINDUMP #define ....... #include ...... HB_FUNC ( Ci1 ) { .................... } HB_FUNC ( Ci2 ) { .................... } #pragma ENDDUMP
|
|
|
|
| |
Не зарегистрирован
Зарегистрирован: 01.01.70
|
|
Отправлено: 07.04.06 15:49. Заголовок: Re:
Лукашевский [q]не зарегистрирован[/q] Зарегестрируйся пожалуйста или будешь только читать 1 неделю !!!
|
|
|
|
| |
Не зарегистрирован
Зарегистрирован: 01.01.70
|
|
Отправлено: 08.04.06 02:43. Заголовок: Re:
Вроде зарегистрировался... правда не понял, зачем - мне и так было хорошо Pasha пишет: цитата: | 1. ...Еще можно шифровать в exe символьные строки: |
| Не, мне чтобы никто не смог дизассемблировать и поудалять встроенные функции защиты от копирования Начал смотреть на работу своей xHarbour-программы и обнаружил, что не выводятся @...say При том что @...prompt - без вопросов. Попробовал прилинковать вместо gtwin.lib - gtwvt.lib и указать в программе WVT_SETCODEPAGE(255) - как написано в FAQ - и на линковке получаю: Error: Unresolved external '_HB_FUN_WVT_SETCODEPAGE' referenced from F:\XHARBOUR\INSTALL\MAIN.OBJ
|
|
|
|
| Администратор
|
Не зарегистрирован
Зарегистрирован: 01.01.70
|
|
Отправлено: 09.04.06 15:01. Заголовок: Re:
Декомпилятора пи-кода харбор пока не существует, хотя когда-нибудь его конечно напишут Say должен работать, покажи свой пример Надо еще подключить библиотеку wvtgui.lib. В прошлом году терминал gtwvt был разделен на 2 библиотеки На будущее - в таких ситуациях, когда не подлинковываются какие-нибудь функции, надо просто запустить поиск текста (WVT_SETCODEPAGE) в папке LIB и сразу будет видно, в какой библиотеке эта функция находится
|
|
|
|
| |
Не зарегистрирован
Зарегистрирован: 01.01.70
|
|
Отправлено: 10.04.06 00:46. Заголовок: Re: Pasha
Pasha пишет: цитата: | Декомпилятора пи-кода харбор пока не существует, |
| Причем тут код харбора? В результате-то получается обычная сишная программа, которая, наверное, опытным человеком ломается "на ура"... Может быть, конечно, что я чего-нибудь не понимаю... После добавления в линковку wvtgui.lib линковка пошла, но вот результат... Основное окно программы то ли смещено, то ли обрублено, части экрана с одним из пунктов меню не видно... а @...say как не работал, так и не работает. Выжимка из моего модуля: #include "inkey.ch" #include "mypublic.ch" REQUEST HB_CODEPAGE_RU866 HB_SetCodepage( "RU866" ) ......... dir_org = "Лукашевский Андрей Александрович." color_f = "B/W,B/W" color_s = "B/W,W/B" color_m = "W/B,W+/B" set wrap on set scoreboard off set deleted on set softseek on set exact off set date british set epoch to 1980 set confirm on set cursor off SETBLINK(.F.) SET EVENTMASK TO INKEY_ALL w_menu = WOPEN(0,0,1,79) set color to (color_f) @ 1,00 set color to (color_m) @ 0,00 SHOWTIME(0,75,.T.,"W+/B") screen = WOPEN(2,0,24,79) ColorSClear() DEMO=.T. wstr = 'Программа установки ' + IIF(DEMO, " -версии ", "") ; + 'системы складского учета "Книга"' ; + IIF(DEMO, "", ", v.m. 2.85") + " от 19.01.2006" * OL_95AppTitle(wstr) !!!!!!!!!! Нет в xHarbour! @ 20,00 to 20,79 @ 21,00 say CENTER(wstr) if DEMO @ 21,21 say "DEMO" color "GR+/W" endif @ 22,00 say CENTER("Р А З Р А Б О Т Ч И К : " + Bess(dir_org)) Примерно так. Ни один из этих @...say не вывелся (как и все прочие в программе)
|
|
|
|
| Администратор
|
Не зарегистрирован
Зарегистрирован: 01.01.70
|
|
Отправлено: 10.04.06 20:12. Заголовок: Re:
Насчет дизассемблирования - теоретически все так, но только теоретически Картина такая Есть Harbour Virtual Marhine, есть почти пара сотен команд пи-кода, и HVM как раз занимается их итерпретацией, или выполнением, причем каждой команды в отдельности Взломать HVM можно, но смысла особого в этом нет - она и так открыта, зная, что программа написана на харборе, легко получить HVM легальным путем Да и задача взлома, или дизассемблирования HVM на ПОРЯДОК сложнее задачи декомпиляции пи-кода Т.О. все в любом случае сводится к декомпиляции пи-кода А это задача не очень сложная А дизассемблировать можно все что угодно... теоретически :) Даже blinker executable compress, тем более это никакая не защита, а всего лишь упаковка Твой пример протестирую чуть позже
|
|
|
|
| Администратор
|
Не зарегистрирован
Зарегистрирован: 01.01.70
|
|
Отправлено: 10.04.06 20:48. Заголовок: Re:
Проблема c Center: клиппер по умолчанию выравнивает строку по ширине экрана (окна), а харбор это не делает Поставь пока у себя: Center(cStr, MaxCol()+1), а я на CVS поправлю
|
|
|
|
| |
Не зарегистрирован
Зарегистрирован: 01.01.70
|
|
Отправлено: 10.04.06 21:50. Заголовок: Re:
Pasha Павел , просто хочу тебе спасибо сказать за твой труд !!!!! Молодец !!!!!!!!!!!!!!!!!!
|
|
|
|
| |
Не зарегистрирован
Зарегистрирован: 01.01.70
|
|
Отправлено: 11.04.06 00:47. Заголовок: Re:
Pasha пишет: цитата: | Проблема c Center: клиппер по умолчанию выравнивает строку по ширине экрана (окна), а харбор это не делает |
| Да, действительно. Павел, большое Спасибо за подсказку. Если не трудно, подскажи потом, когда и откуда можно будет закачать сборку с исправлением а то ведь это у меня только программка-установщик (хотя и в ней штук 20-30 Center() будет, а уж в самой программе - немеряно).
|
|
|
|
|
| |
Не зарегистрирован
Зарегистрирован: 01.01.70
|
|
Отправлено: 11.04.06 01:02. Заголовок: Re:
SHOWTIME(0,75,.T.,"W+/B") тоже ведёт себя странно: светит время не на строке 0, а почему-то на строке 2...
|
|
|
|
| Администратор
|
Не зарегистрирован
Зарегистрирован: 01.01.70
|
|
Отправлено: 11.04.06 11:14. Заголовок: Re:
Можно включить в свою программу эту функцию Center #include "common.ch" FUNCTION CENTER( c, n, p ) DEFAULT n TO MaxCol() + 1 DEFAULT c TO "" RETURN PadC( AllTrim( c ), n, p ) А сборка будет только в следующем релизе, если никто не выложит свою конечно Насчет ShowTime в клиппере она работает в пределах экрана, а в харборе в пределах окна Надо поправить, повожусь
|
|
|
|
| |
Не зарегистрирован
Зарегистрирован: 01.01.70
|
|
Отправлено: 12.04.06 01:35. Заголовок: Re:
Pasha пишет: цитата: | FUNCTION CENTER( c, n, p ) DEFAULT n TO MaxCol() + 1 DEFAULT c TO "" RETURN PadC( AllTrim( c ), n, p ) |
| Павел, извини за назойливость, но PADC() не есть равноценная замена CENTER()... В Клиппере выполнение, например: @ 22,0 say CENTER("Большой привет!") @ 22,0 say CENTER("Привет!") даёт результат: Привет!вет! А с приведённой тобой функцей результат: Привет! Хотелось бы, чтобы оно было как прежде (иначе бы я пользовался везде PADC() и не выпендривался :-) То есть я-то, конечно, в строке возврата функции напишу: RETURN RTRIM(PadC( AllTrim( c ), n, p )) но хотелось бы чтобы в следующем релизе CENTER() работала в точности так как раньше...
|
|
|
|
| Администратор
|
Не зарегистрирован
Зарегистрирован: 01.01.70
|
|
Отправлено: 12.04.06 07:43. Заголовок: Re:
ShowTime поправил на CVS Center пересмотрю
|
|
|
|
| |
Не зарегистрирован
Зарегистрирован: 01.01.70
|
|
Отправлено: 20.04.06 04:27. Заголовок: Re:
А как производится печать? Я ещё не пробовал, но сильно подозреваю, что команды языка PCL, которые у меня вставлены в печатаемых строках для переключения шрифтов, не сработают...
|
|
|
|
| |
Не зарегистрирован
Зарегистрирован: 01.01.70
|
|
Отправлено: 22.04.06 01:14. Заголовок: Re:
Pasha пишет: цитата: | Можно включить в свою программу эту функцию Center |
| Оказалось, что CENTER() в Clipperе использует другой алгоритм, гораздо более сложный! Вкратце: центрирование делается не в границах окна, а в границах рамки окна (если она есть), и в большинстве случаев не зависит от начальной колонки вывода центрируемого текста. Именно этим CENTER() мне в своё время и понравился, я только не отдавал себе в этом отчёта. Короче, достаточно выполнить пример в Clipperе и в xHarbour, чтобы увидеть разницу... WOPEN(8, 18, 14, 63) COLORWIN(MAXROW(),1,MAXROW(),MAXCOL()) COLORWIN(1,MAXCOL(),MAXROW(),MAXCOL()) set color to ("W/B,B/W*") @ 0,0 clear to MAXROW()-1,MAXCOL()-1 @ 0,00 to 5,43 double @ 1,04 say CENTER("Лукашевский Андрей Александрович") @ 2,04 say CENTER("(812) 000-00-00, с 20.00 до 23.00 (моск.)") INKEY(0) WCLOSE()
|
|
|
|
| Администратор
|
Не зарегистрирован
Зарегистрирован: 01.01.70
|
|
Отправлено: 23.04.06 12:02. Заголовок: Re:
Кажется нащупал. Функцию Center надо написать так: FUNCTION CENTER( c, n, p ) DEFAULT n TO MaxCol() + 1 - Col()*2 DEFAULT c TO "" RETURN RTrim(PadC( AllTrim( c ), n, p ))
|
|
|
|
| |
Не зарегистрирован
Зарегистрирован: 01.01.70
|
|
Отправлено: 26.04.06 01:39. Заголовок: Re:
Pasha пишет: цитата: | Кажется нащупал. Функцию Center |
| Вроде теперь нормально, Паша, спасибо! А что всё-таки с печатью? Я так понял, что вся печать идёт через класс Win32prn? То есть это офигеть сколько в программе переделывать... У кого-нибудь есть идеи по минимизации трудозатрат в этом процессе? И можно ли где-то поподробнее почитать о классе Win32prn? Разбираться с примером из тестов - та ещё задачка, без десятков печатаний вряд ли получится... Кстати, NG по xHarbour ни у кого не завалялся?
|
|
|
|
| |
Не зарегистрирован
Зарегистрирован: 01.01.70
|
|
Отправлено: 26.04.06 08:10. Заголовок: Re:
Лукашевский пишет: цитата: | та ещё задачка, без десятков печатаний вряд ли получится... |
| Печатай на виртуальный принтер. Варианты PdfFactory VentaFax MS Office Document Image Writer
|
|
|
Ответов - 42
, стр:
1
2
3
All
[только новые]
|
|