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



Не зарегистрирован
Зарегистрирован: 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-программа? Или всё-таки подобное закрытие программы возможно?

Спасибо: 0 
Ответов - 42 , стр: 1 2 3 All [только новые]





Не зарегистрирован
Зарегистрирован: 01.01.70
ссылка на сообщение  Отправлено: 07.04.06 00:47. Заголовок: Re:


Господа, Вы излишне увлеклись подсчётом прожитых лет
Повторяю вопрос:
А FAQ Павла свежий где-нить имеется? А то у меня вариант от февраля 2005...
И парочка новых:
1. Как у xHarbour-программы с защитой от взлома? В Clipperе я юзал "blinker executable compress, а здесь?
2. Можно ли в тексте исходной клипперной проги использовать одну из стандартных C-фукнций и если да, то как это оформить?

Спасибо: 0 
Администратор




Не зарегистрирован
Зарегистрирован: 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-функции


Спасибо: 0 
Профиль





Не зарегистрирован
Зарегистрирован: 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


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




Не зарегистрирован
Зарегистрирован: 01.01.70
ссылка на сообщение  Отправлено: 07.04.06 15:49. Заголовок: Re:


Лукашевский
[q]не зарегистрирован[/q]

Зарегестрируйся пожалуйста или будешь только читать 1 неделю !!!

Спасибо: 0 
Профиль





Не зарегистрирован
Зарегистрирован: 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


Спасибо: 0 
Профиль
Администратор




Не зарегистрирован
Зарегистрирован: 01.01.70
ссылка на сообщение  Отправлено: 09.04.06 15:01. Заголовок: Re:


Декомпилятора пи-кода харбор пока не существует, хотя когда-нибудь
его конечно напишут

Say должен работать, покажи свой пример

Надо еще подключить библиотеку wvtgui.lib. В прошлом году терминал gtwvt
был разделен на 2 библиотеки
На будущее - в таких ситуациях, когда не подлинковываются какие-нибудь
функции, надо просто запустить поиск текста (WVT_SETCODEPAGE) в папке
LIB и сразу будет видно, в какой библиотеке эта функция находится


Спасибо: 0 
Профиль





Не зарегистрирован
Зарегистрирован: 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 не вывелся (как и все прочие в программе)

Спасибо: 0 
Профиль
Администратор




Не зарегистрирован
Зарегистрирован: 01.01.70
ссылка на сообщение  Отправлено: 10.04.06 20:12. Заголовок: Re:


Насчет дизассемблирования - теоретически все так, но только теоретически
Картина такая
Есть Harbour Virtual Marhine, есть почти пара сотен команд пи-кода, и HVM
как раз занимается их итерпретацией, или выполнением, причем каждой команды
в отдельности
Взломать HVM можно, но смысла особого в этом нет - она и так открыта, зная,
что программа написана на харборе, легко получить HVM легальным путем
Да и задача взлома, или дизассемблирования HVM на ПОРЯДОК сложнее
задачи декомпиляции пи-кода
Т.О. все в любом случае сводится к декомпиляции пи-кода
А это задача не очень сложная
А дизассемблировать можно все что угодно... теоретически :)
Даже blinker executable compress, тем более это никакая не защита, а всего
лишь упаковка

Твой пример протестирую чуть позже


Спасибо: 0 
Профиль
Администратор




Не зарегистрирован
Зарегистрирован: 01.01.70
ссылка на сообщение  Отправлено: 10.04.06 20:48. Заголовок: Re:


Проблема c Center: клиппер по умолчанию выравнивает строку по
ширине экрана (окна), а харбор это не делает
Поставь пока у себя: Center(cStr, MaxCol()+1), а я на CVS поправлю


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




Не зарегистрирован
Зарегистрирован: 01.01.70
ссылка на сообщение  Отправлено: 10.04.06 21:50. Заголовок: Re:


Pasha
Павел , просто хочу тебе спасибо сказать за твой труд !!!!!
Молодец !!!!!!!!!!!!!!!!!!

Спасибо: 0 
Профиль





Не зарегистрирован
Зарегистрирован: 01.01.70
ссылка на сообщение  Отправлено: 11.04.06 00:47. Заголовок: Re:


Pasha пишет:

 цитата:
Проблема c Center: клиппер по умолчанию выравнивает строку по ширине экрана (окна), а харбор это не делает


Да, действительно. Павел, большое Спасибо за подсказку. Если не трудно, подскажи потом, когда и откуда можно будет закачать сборку с исправлением а то ведь это у меня только программка-установщик (хотя и в ней штук 20-30 Center() будет, а уж в самой программе - немеряно).

Спасибо: 0 
Профиль





Не зарегистрирован
Зарегистрирован: 01.01.70
ссылка на сообщение  Отправлено: 11.04.06 01:02. Заголовок: Re:


SHOWTIME(0,75,.T.,"W+/B") тоже ведёт себя странно: светит время не на строке 0, а почему-то на строке 2...

Спасибо: 0 
Профиль
Администратор




Не зарегистрирован
Зарегистрирован: 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 в клиппере она работает в пределах экрана, а в харборе в пределах окна
Надо поправить, повожусь


Спасибо: 0 
Профиль





Не зарегистрирован
Зарегистрирован: 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() работала в точности так как раньше...

Спасибо: 0 
Профиль
Администратор




Не зарегистрирован
Зарегистрирован: 01.01.70
ссылка на сообщение  Отправлено: 12.04.06 07:43. Заголовок: Re:


ShowTime поправил на CVS
Center пересмотрю

Спасибо: 0 
Профиль





Не зарегистрирован
Зарегистрирован: 01.01.70
ссылка на сообщение  Отправлено: 20.04.06 04:27. Заголовок: Re:


А как производится печать? Я ещё не пробовал, но сильно подозреваю, что команды языка PCL, которые у меня вставлены в печатаемых строках для переключения шрифтов, не сработают...

Спасибо: 0 
Профиль





Не зарегистрирован
Зарегистрирован: 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()


Спасибо: 0 
Профиль
Администратор




Не зарегистрирован
Зарегистрирован: 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 ))


Спасибо: 0 
Профиль





Не зарегистрирован
Зарегистрирован: 01.01.70
ссылка на сообщение  Отправлено: 26.04.06 01:39. Заголовок: Re:


Pasha пишет:

 цитата:
Кажется нащупал. Функцию Center


Вроде теперь нормально, Паша, спасибо!

А что всё-таки с печатью? Я так понял, что вся печать идёт через класс Win32prn? То есть это офигеть сколько в программе переделывать... У кого-нибудь есть идеи по минимизации трудозатрат в этом процессе? И можно ли где-то поподробнее почитать о классе Win32prn? Разбираться с примером из тестов - та ещё задачка, без десятков печатаний вряд ли получится...
Кстати, NG по xHarbour ни у кого не завалялся?


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




Не зарегистрирован
Зарегистрирован: 01.01.70
ссылка на сообщение  Отправлено: 26.04.06 08:10. Заголовок: Re:


Лукашевский пишет:

 цитата:
та ещё задачка, без десятков печатаний вряд ли получится...


Печатай на виртуальный принтер.
Варианты
PdfFactory
VentaFax
MS Office Document Image Writer

Спасибо: 0 
Профиль
Ответов - 42 , стр: 1 2 3 All [только новые]
Тему читают:
- участник сейчас на форуме
- участник вне форума
Все даты в формате GMT  3 час. Хитов сегодня: 10
Права: смайлы да, картинки да, шрифты да, голосования нет
аватары да, автозамена ссылок вкл, премодерация откл, правка нет