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





Пост N: 67
Зарегистрирован: 05.10.06
ссылка на сообщение  Отправлено: 30.11.14 11:22. Заголовок: Перевожу Clipper на консольный Харбор


Добрый день, уважаемое сообщество!

Перехожу на Харбор, собрал программу, начинаю бороть ошибки несовместимости кода, по мере появления вопросов надеюсь на скорую помощь.
Заранее всем участникам огромное спасибо!



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







Пост N: 240
Зарегистрирован: 05.10.06
ссылка на сообщение  Отправлено: 24.10.19 09:20. Заголовок: alexmar пишет: memo..


alexmar пишет:

 цитата:
memo полями в формате fpt, которые ntx не поддерживают


конвертни в dbt

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





Пост N: 74
Зарегистрирован: 25.07.06
ссылка на сообщение  Отправлено: 24.10.19 12:54. Заголовок: 2MIKHAIL Я в свое вр..


2MIKHAIL Я в свое время спецом конвертнул их в fpt из-за постоянно возникающих ошибок переполнения счетчика количества блоков

Dima пишет:

 цитата:

... тянем
Advantage Client Engine
Advantage Clipper RDD
или более раннюю версию

а Advantage Database Server разве не нужен?

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




Пост N: 7131
Зарегистрирован: 17.05.05
ссылка на сообщение  Отправлено: 24.10.19 13:36. Заголовок: alexmar пишет: Adv..


alexmar пишет:

 цитата:
Advantage Database Server разве не нужен


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

PS
я тупанул , для локального тож надо качнуть Advantage Database Server

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





Пост N: 76
Зарегистрирован: 25.07.06
ссылка на сообщение  Отправлено: 12.02.21 16:39. Заголовок: Такой вопрос. Имеетс..


Такой вопрос. Имеется dbf файл с мемо файлом. Как определить с каким типом файла dbt или fpt открывается dbf файл, если в папке, где лежит dbf, лежат оба мемо-файла?

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




Пост N: 3998
Зарегистрирован: 23.05.05
ссылка на сообщение  Отправлено: 12.02.21 17:57. Заголовок: Тип мемо однозначно ..


Тип мемо однозначно определяется по сигнатуре, 1-му байту dbf
Если там 0x83 - то dbt, если 0xF5 или 0x30 - fpt

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




Пост N: 3562
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 12.02.21 18:25. Заголовок: Pasha пишет Тип мемо..


Pasha пишет
 цитата:
Тип мемо однозначно определяется по сигнатуре


После USE можно и так
? dbinfo(DBI_MEMOEXT)

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





Пост N: 77
Зарегистрирован: 25.07.06
ссылка на сообщение  Отправлено: 10.03.21 10:01. Заголовок: Привет всем Есть иде..


Привет всем
Есть идеи как организовать многоязыковую поддержку двуязычного интерфейса в консольном харборе?
Программы построены на вызовах из меню. Меню динамическое, основанное на dbf-файле. Т.е. из самой программы можно изменять меню, подключая или отключая функционал. По поводу меню у меня 2 варианта:
1. Дублирование полей, привязанных к языку
2. Добавление в dbf файл меню мемо полей, содержащих локализованные названия и т.д
Пока не решил какой вариант лучше. Может есть еще какие-то варианты?
Браузер и средства для редактирования записей реализованы через текстовые вспомогательные файлы, в которых описаны названия колонок и полей в режиме редактирования. Т.е. для работы с браузером достаточно перевести эти файлы.
Основной вопрос как быть с диалоговыми окнами. Они все реализованы через одну и ту же функцию. Может кто-то занимался подобной задачей в консольном харборе или клиппере?

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




Пост N: 3594
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 10.03.21 10:16. Заголовок: alexmar пишет как ор..


alexmar пишет
 цитата:
как организовать многоязыковую поддержку двуязычного интерфейса в консольном харборе?


Посмотрите исходники hbedit http://www.kresin.ru/hbedit.html

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


Пост N: 1596
Зарегистрирован: 09.10.06
ссылка на сообщение  Отправлено: 10.03.21 11:00. Заголовок: alexmar пишет: Осно..


alexmar пишет:

 цитата:
Основной вопрос как быть с диалоговыми окнами. Они все реализованы через одну и ту же функцию. Может кто-то занимался подобной задачей в консольном харборе или клиппере?


Harbour поддерживает i18n "из коробки".
Хорошим примером могут могут послужить исходники hbmk2

Поищите на этом форуме, я что-то также писал на эту тему.

Harbour & i18n в примерах

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




Пост N: 3595
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 10.03.21 12:15. Заголовок: Кусочки текстов рабо..


Кусочки текстов работы с code page в hbedit (он у меня под рукой, как раб инструмент)
Делаете подключение нужных
...
REQUEST HB_CODEPAGE_ROISO, HB_CODEPAGE_ROWIN, HB_CODEPAGE_RU1251, HB_CODEPAGE_RU866, HB_CODEPAGE_RUISO
...
REQUEST HB_CODEPAGE_TRWIN, HB_CODEPAGE_UA1125, HB_CODEPAGE_UA1251, HB_CODEPAGE_UA866, HB_CODEPAGE_UAKOI8
REQUEST HB_CODEPAGE_UTF8
используете
 
...
x1 := Int( (MaxCol()-nLen)/2 )

bufsc := Savescreen( y1, x1, y1+Len(aText)+3, x1+nLen )

oldc := SetColor( TEdit():cColorWR )
cp := hb_cdpSelect( "RU866" )
@ y1, x1, y1+Len(aText)+3, x1+nLen BOX "┌─┐│┘─└│ "
hb_cdpSelect( cp )
FOR i := 1 TO Len( aText )
@ y1+i, x1 + 2 SAY aText
NEXT
SetColor( oldc )

i := edi_Read( aGets )
Restscreen( y1, x1, y1+Len(aText)+3, x1+nLen, bufsc )
...
hb_cdpSelect( "RU866" )
@ 09, 10, 15, 72 BOX "┌─┐│┘─└│ "
@ 13, 20 SAY "├"
@ 13, 60 SAY "┤"
@ 13, 11 TO 13, 71
hb_cdpSelect( oEdit:cp )
@ 10, 12 SAY "Open file"
@ 12, 12 SAY "[ ] ReadOnly"
@ 12, 27 SAY "[ ] In a current window"
IF !Empty( oEdit:cFileName )
aGets[5,3] := 1
@ 12, 55 SAY "[ ] Diff"
ENDIF
...
hb_cdpSelect( "RU866" )
@ 09, 20, 16, 60 BOX "┌─┐│┘─└│ "
@ 14, 20 SAY "├"
@ 14, 60 SAY "┤"
@ 14, 21 TO 14, 59
hb_cdpSelect( oEdit:cp )

@ 10,22 SAY "Search for"
@ 12, 22 SAY "[ ] Case sensitive"
@ 12, 42 SAY "[ ] Backward"
@ 13, 22 SAY "[ ] Whole word"
@ 13, 42 SAY "[ ] Regular expr."
...
oldc := SetColor( cColor )
cp := hb_cdpSelect( "RU866" )
aText := hb_aTokens( cText, ";" )
FOR i := 1 TO Len( aText )
nLen := Max( nLen, Len( aText ) )
NEXT
nLen += 4

x1 := Int( (MaxCol()-nLen)/2 )
x2 := x1+nLen
y2 := y1+Len(aText)+1
cBuffScr := SaveScreen( y1, x1, y2, x2 )
@ y1, x1, y2, x2 BOX "┌─┐│┘─└│ "
hb_cdpSelect( cp )
FOR i := 1 TO Len( aText )
@ y1+i, x1 + 2 SAY aText
NEXT
SetColor( oldc )
...


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




Пост N: 3596
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 10.03.21 12:17. Заголовок: УПС. В текстах было ..


УПС. В текстах было [ i ] без пробелов, исказилось, но суть понятна должна быть.
Поиск RU866 в *.prg hbedit все выдаст

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




Пост N: 3597
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 10.03.21 12:29. Заголовок: PS С dbf, если все п..


PS
С dbf, если все поля в нем в одной кодировке, при открытии указывайте CP, тогда в установленную кодировку hb_cdpSelect( cp ) будет переводить hb, если поля в разных кодировках, не указывайте CP при открытии, но уст. этот CP (программы) при чтении\записи. Др. языки из полей читайте в переменные и при выводе ставьте нужный CP с возвратом потом

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





Пост N: 78
Зарегистрирован: 25.07.06
ссылка на сообщение  Отправлено: 10.03.21 13:42. Заголовок: Всем огромное спасиб..


Всем огромное спасибо. Пошел изучать матчасть Появятся вопросы, буду здесь отписываться

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





Пост N: 79
Зарегистрирован: 25.07.06
ссылка на сообщение  Отправлено: 11.03.21 01:39. Заголовок: Петр пишет: Harbour..


Петр пишет:

 цитата:
Harbour поддерживает i18n "из коробки".

Файлик почитал.
А где можно про эти функции поподробнее почитать?
hb_i18n_gettext hb_i18n_ngettext, hb_i18n_gettext_strict, hb_i18n_ngettext_strict etc.

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




Пост N: 7286
Зарегистрирован: 17.05.05
ссылка на сообщение  Отправлено: 11.03.21 08:36. Заголовок: Может тут http://hmg..

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





Пост N: 80
Зарегистрирован: 25.07.06
ссылка на сообщение  Отправлено: 11.03.21 08:38. Заголовок: спасибо :sm36:..


спасибо

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




Пост N: 3598
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 11.03.21 08:58. Заголовок: alexmar пишет А где ..


alexmar пишет
 цитата:
А где можно про эти функции поподробнее почитать?
hb_i18n_gettext hb_i18n_ngettext, hb_i18n_gettext_strict, hb_i18n_ngettext_strict etc.


в исходниках rtl\hbi18n?.*

Но по мне это не совсем удобная штука, т.к. варианты текстов (окончания) могут форм. динамически, часто тексты привязаны к окнам и таблицам и выбранное кучей в .pot файлы - офигенная работа для разбора всего. Т.к. мы страдаем с языками со времен clipper и похожую схему выборки текстов для перевода делали еще в 90х ... Удобнее оказалось сразу делать текст в ini.RU, ini.LV, ini.EN с секциями, которые могут опр. использование в конкретном prg или окне + часто клиент не согласен с переводом того или др. текста. Имеем перекрывающие ini в подкаталоге пользователя, где только тексты от клиента (даем возможность их менять). Тексты не читаем в память (массивы или hash), достаются они ф-ей сразу из файла, т.к. в win буферизация, то все достается мгновенно. Все ini utf8 с BOM, если у ini нет bom - это старая версия и сразу переделываем в вариант с BOM.
Пример ini _Agent.lv (базовый вариант в ресурсах программы) Скрытый текст

в коде текст достается ф-ей _gTxt("ключ", ...) в параметрах можно указать варианты окончания и секцию подмены от установл. default

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




Пост N: 4009
Зарегистрирован: 23.05.05
ссылка на сообщение  Отправлено: 11.03.21 09:43. Заголовок: SergKis пишет: Т.к...


SergKis пишет:

 цитата:
Т.к. мы страдаем с языками со времен clipper



Хотя наши страдания с языками уже закончились, вспоминаю времена, когда эти страдания еще были...
Возвращаясь к исходному вопросу. Проще всего идти по п.1: добавить в dbf локализованные поля: Name/NameU. Я так и делал

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





Пост N: 81
Зарегистрирован: 25.07.06
ссылка на сообщение  Отправлено: 11.03.21 09:49. Заголовок: alexmar пишет: Т.к...


SergKis пишет:

 цитата:
Т.к. мы страдаем с языками со времен clipper и похожую схему выборки текстов для перевода делали еще в 90х ... Удобнее оказалось сразу делать текст в ini.RU, ini.LV, ini.EN с секциями


Т.е вариант локализации с ini-файлами использовали еще в Clipper? А вместо _gTxt() что использовали?

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




Пост N: 3599
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 11.03.21 10:15. Заголовок: alexmar пишет А вмес..


alexmar пишет
 цитата:
А вместо _gTxt() что использовали?


Т.к. hash не было был dbf с полями EN, RU, LV и index unique, переводили в dbf
_gTxt() не было, выбирали из prg строки в "", '' потом меняли прямо в prg, но таких prg было
мало, т.к. была своя Ide с базой txt формата, где хранились все окна с координатами, типа (упрощенно схема)
Func SvWnd(y,x,w,h) ; Retu hb_valtoexp({ y,x,w,h, savescreen(y,x,w,h), <тип данных> }) // <тип данных> :
Func RsWnd(w) ; Local a := &(w) ;Retu restscreen(a[1],a[2],a[3],a[4], a[5])) // панель, текст, структура, dbf, ...
ф-ии на C, доставали окна, тексты с окон. панелей.
В ide (уже на S87 была) можно было рисовать окна, привязывать к Say,Get,, макросы,своей achioce и tbrowse,
так вот файлы были отд. для каждого языка и из dbf процедурой переносились в нужный и от ENV установки
подкл. тот или иной язык.

Спасибо: 1 
ПрофильЦитата Ответить
Ответов - 245 , стр: 1 2 3 4 5 6 7 8 9 10 11 12 13 All [только новые]
Ответ:
1 2 3 4 5 6 7 8 9
большой шрифт малый шрифт надстрочный подстрочный заголовок большой заголовок видео с youtube.com картинка из интернета картинка с компьютера ссылка файл с компьютера русская клавиатура транслитератор  цитата  кавычки моноширинный шрифт моноширинный шрифт горизонтальная линия отступ точка LI бегущая строка оффтопик свернутый текст

показывать это сообщение только модераторам
не делать ссылки активными
Имя, пароль:      зарегистрироваться    
Тему читают:
- участник сейчас на форуме
- участник вне форума
Все даты в формате GMT  3 час. Хитов сегодня: 327
Права: смайлы да, картинки да, шрифты да, голосования нет
аватары да, автозамена ссылок вкл, премодерация откл, правка нет