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
ссылка на сообщение  Отправлено: 01.04.06 10:08. Заголовок: Re:


1. Наверно забыл поставить "+" при сборке проверь :
......................................
echo cw32.lib + >> b32.bc
echo import32.lib + >> b32.bc
echo oslib.lib >> b32.bc

2. В свойствах ярлыка , в разное , использование мыши -> галочку "исключительно"

3. В свойствах ярлыка , в разное , завершение работы -> снять галочку "предупреждение"

И вообще проверь все параметры ярлыка .
Harbour-программа - это исключительно Windows-программа , если собрана под Windows .

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



Не зарегистрирован
Зарегистрирован: 01.01.70
ссылка на сообщение  Отправлено: 02.04.06 00:43. Заголовок: Сергею Р


1. В том-то и дело, что не забыл! Я же писал: "хотя библиотека OSLIB.LIB, содержащая функцию OL_ISNT(), в линковке указана... "
Всё именно так:
........
echo import32.lib + >> b32.bc
echo oslib.lib >> b32.bc
Мне даже кажется, что я знаю, в чём проблема, но не знаю, как её решить: в библиотеке OSLIB.LIB действительно НЕТ функции _HB_FUN_OL_ISNT(), там только функция OL_ISNT(). А вот как xHarbourу указать, что это внешняя функция, чтобы он её под себя не переделывал - это вопрос...

2. 'В свойствах ярлыка , в разное , использование мыши -> галочку "исключительно"'
Начать с того, что в свойствах ярлыка, который у меня создался, нет вкладки "Разное" - только "Ярлык" и "Общие"... А если в оконном режиме во время выполнения, то мышь исчезает вообще и исчезает сам смысл оконного режима - ни другую программу не запустить, ни уже запущенную активизировать... И кстати, если переключиться в полноэкранный режим, а потом обратно в оконный - мышь снова появляется!
Я-то хотел, чтобы у меня мыши не было именно в полноэкранном режиме!

3. 'В свойствах ярлыка , в разное , завершение работы -> снять галочку "предупреждение"'
Опять-таки, в ярлыке вкладки "Разное" нет, а в процессе выполнения юзверей заставлять это делать только для того, чтобы программу можно было мышью закрыть - верх неприличия...

Спасибо: 0 





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


1. Нет , скорее всего дело не в этом . В борландовской библиотеке import32.lib тоже нет _HB_FUN_ , но она замечательно компануется .

2.и3. Создай файл pif , в нем все пропишишь (посмотри как сделано в FAR , тоже консольный режим) .
Какой ты капризный , то хочу мышь , то не хочу .
Поставь в программе SET EVENTMASK TO INKEY_ALL программа станет откликаться на мышку и никто не станет
возмущаться из-за отсутствия реакции .



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




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


1. Ни одну клипперовскую библиотеку нельзя простой линковкой прицепить
к харбору. Во-первых этоо 16-битные библиотеки, во 2-х должно быть выполнено
соглашение харбора о именах и передачи параметров
Для этого сырцы должны быть перекомпилированы
oslib наверное написана на asm, так что ее надо вообще переписать для
использования
Что касается OL_ISNT(), то в харборе есть аналогичная функция OS_ISWINNT()

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



Не зарегистрирован
Зарегистрирован: 01.01.70
ссылка на сообщение  Отправлено: 03.04.06 06:57. Заголовок: Re: Pasha


Спасибо за подсказку.

А где лежит описание функций xHarbourа?

Иначе я буду стопориться с каждой функцией, например, OL_95AppTitle(), которая у меня выводила к оконном режиме в титулярной строке окна название программы...

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




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

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



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


"xharbour\doc не пробовал смотреть ?"

А нет у меня такого. Когда установил xHarbour, там оказались только папки BIN, INCLUDE и LIB...
Где взять?

" http://www.xharbour.com/xhdn/index.asp?page=ref_listing.asp&show_i=20&show_sub=2 "

Очень там неудобно - пока до нужной страницы доберёшься, допустим функции начинающиеся на OS_ посмотреть, не раз маму вспомнишь.
А как бы так чтобы не висеть в нете, а качнуть и спокойненько, на родном харде, в виде DOC или NG почитывать?

" http://www.xharbour.net/nortonguides/norton.asp?page=norton.asp&show_h=996&show_sub=/ "

А тут вообще ничего про xHarbour не увидел, извиняюсь... Хотя про Clipper, CTools различных версий и прочая доки действительно много.



Спасибо: 0 



Не зарегистрирован
Зарегистрирован: 01.01.70
ссылка на сообщение  Отправлено: 04.04.06 00:52. Заголовок: Сергею Р


" SET EVENTMASK TO INKEY_ALL "

Ага, и теперь у меня по щелчку мышой на нужном пункте меню нужное мне окошко конечно открывается, но вместо того чтобы ждать нажатия любой клавиши сразу же закрывается :-)

Спасибо: 0 



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


И где взять всяки-разны библиотеки для xHarboura, например LIBNF.LIB, в которой нужная мне функция FT_GETE() ? В списке функций на www.xharbour.com/xhdn/ эта функция указана, а толку-то?

Спасибо: 0 





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


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

 цитата:
" SET EVENTMASK TO INKEY_ALL "

Ага, и теперь у меня по щелчку мышой на нужном пункте меню нужное мне окошко конечно открывается, но вместо того чтобы ждать нажатия любой клавиши сразу же закрывается :-)



Может тебе надо другую маску установить посмотри :
inkey.ch и
http://www.xharbour.com/xhdn/index.asp?page=ref_detail.asp&src=xhb&id=4233&show_i=20&show_sub=2


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

 цитата:
И где взять всяки-разны библиотеки для xHarboura, например LIBNF.LIB, в которой нужная мне функция FT_GETE() ? В списке функций на www.xharbour.com/xhdn/ эта функция указана, а толку-то?



Дима мне выложил исходники xHarbour на http://www.filefactory.com посмотри тут
http://clipper.fastbb.ru/index.pl?1-0-0-00000136-000-15-0
скачай и собери xHarbour и будет тебе счастье . (там есть и libnf и Doc)


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



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


Сергей Р пишет:

 цитата:
Дима мне выложил исходники xHarbour на http://www.filefactory.com


Что-то не выходит у меня ничего оттуда скачать. За каждый файл 1 бакс требують, супостаты!
Нет в жизни счастья! и не предвидится...

А попроще есть вариант?

Спасибо: 0 





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


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

 цитата:
Что-то не выходит у меня ничего оттуда скачать. За каждый файл 1 бакс требують, супостаты!



Ты слишком торопишься . Там надо подождать секунд 15 (на странице счетчик увидишь), если будут всплывать окна , закрывать их . По истечении 15 секунд , может окрыться окно (в низу будет ссылка вернуться в filefactory нажми или подожди немного , потом откроется опять страница загрузки и будет счетчик на 30 секунд , подожди (если окна будут всплывать - закрывай ) . Истекут 30 секунд появиться ссылка на файл , тогда скачивай чем-нибудь .
Лучше окрыть несколько окон для загрузки , чтобы качать по нескольку файлов ,например по 3 .
Если после качания filefactory не будет давать ссылки , то два варианта , либо час подождать или удалить cookie от filefactory или все , если они тебе не нужны .

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





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

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




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


Сергей Р
Боюсь с рапидой он тож не разберется ;)


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




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


Как качать с Rapidshare.de

Если увидите ссылку Download/Скачать, ведущую на адрес вида http://rapidshare.de/*****/*****.html, открывайте её БРАУЗЕРОМ (не качалкой)!
Внизу открывшейся страницы нажимайте кнопку ''FREE''.
После 20-40 секунд появится картинка с тремя символами. Вводим эти символы в поле и кликаем Start Download.
Дальше всё просто: качаем браузером. Качалки не поддерживаются. Если качалка постоянно перехватывает файл, просто нажимаем на ссылку правой кнопкой мыши и выбираем опцию ''Сохранить объект как...'' (название опции зависит от браузера).
ВНИМАНИЕ: Закачка происходит в 1 поток! Докачки НЕТ! (при обрыве закачки Вы потеряете файл). Лимит скачивания - 20-30 МБ в час. Поэтому, если Вы не увидите ссылку на файл, подождите 1 час и попробуйте снова. Если Вам надо удалить Cookies, то в Свойствах обозревателя (меню Сервис) нажмите ''Удалить Cookie''. Способ удаления зависит от браузера.

Видеоинструкция

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




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


Dima пишет:

 цитата:
сборка xHarbour :

http://rapidshare.de/files/17237712/xHarbour.rar.html



Скачал с помощью Universal Share Downloader v1.33 (http://www.dimonius.ru) с Рапиды безо всяких проблем (размер файла - 6,42 МБ).
Спасибо за сборку

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





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


Dima пишет:

 цитата:
Боюсь с рапидой он тож не разберется ;)



Значит не судьба .

2Лукашевский

Ну если не получиться , скачивай 060 сырцы (но там сортировка не работает ,
а может и еще чего-нибудь )

http://prdownloads.sourceforge.net/xharbour/xharbour-0.99.60.src.contrib.zip?download
http://prdownloads.sourceforge.net/xharbour/xharbour-0.99.60.src.zip?download

Только не забудь читать FAQ Павла , для полной сборки запускай makallbc.bat, который собирает и сам харбор и все библиотеки contrib .
Если собираешь под XP , то не пиши путь к bison и set BISON_SIMPLE=<path>bison.simple
не в autoexec.bat и не в autoexec.nt , а прописывай в Мой компьютер -> Панель управления -> Система -> Дополнительно -> Переменные среды в системные переменные или переменные среды пользователя . Не забывай , что писать туда и туда не надо , а то у тебя сдублируется (например путь)
Ух , устал .


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



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


Сергей Р пишет:

 цитата:
Dima пишет:

цитата:
Боюсь с рапидой он тож не разберется ;)


Значит не судьба .



Я, конечно, может, для каких-то вещей и староват (35, седина в шевелюре и всё такое), но не настолько же
С рапидой разобрался на "ура!", и без всяких качалок, одним стандартным IE6


Сергей Р пишет:

 цитата:
Только не забудь читать FAQ Павла , для полной сборки запускай makallbc.bat, который собирает и сам харбор и все библиотеки contrib .
Если собираешь под XP , то не пиши путь к bison и set BISON_SIMPLE=<path>bison.simple



Нет, у меня не Хрюша, а Линолеум...
А FAQ Павла свежий где-нить имеется? А то у меня вариант от февраля 2005...

Спасибо: 0 





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


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

 цитата:
Я, конечно, может, для каких-то вещей и староват (35, седина в шевелюре и всё такое), но не настолько же



Молод ешо , что уж тогда говорить обо мне (скоро 45 стукнет) , надо почаще качать с файловых серверов пиратскую продукцию .


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




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


Сергей Р пишет:

 цитата:
Молод ешо , что уж тогда говорить обо мне (скоро 45 стукнет)


Да мы ровесники почти ;)

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



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





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


Dima пишет:

 цитата:
Печатай на виртуальный принтер.


Ещё проще, наверное, будет посмотреть в любом графическом редакторе - ведь в резалте графический файл получается?

С TESTW32P.PRG мне не удалось получить результирующего BMP-файла, хотя он, как мне кажется, должен получаться, т.к. oPrinter:Destroy() я заремил...

Где всё-таки можно почитать о функциях класса WIN32PRN, чтобы не тыкаться вслепую?

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





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


Обнаружилось ещё одно несоответствие xHarbour и Clipper: присвоение := значения в строке объявления Static переменной в xHarbour выдаёт ошибку, а в Clipper проходит на "ура".
Так я отслеживаю, первый раз выполняется модуль с момента запуска программы или не первый (присвоение переменной указанного в строке объявления Static значения производится только при первом выполнении модуля).

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