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





Пост N: 86
Зарегистрирован: 08.07.06
ссылка на сообщение  Отправлено: 11.08.13 18:47. Заголовок: Перехожу с Clipper 5.2e на Harbour, список вопросов от "новичка"


Добрый день, уважаемые коллеги.

Большое спасибо за море справочной информации по переходу, но нужно ещё пнуть меня в нужном направлении.

Итак, установил Harbour 3.0 + BCC 5.5.1 ==>> 3.2.0 +minGW скомпилировал и запустил традиционный "Hello, world!"
Дело перешло к проекту, из-за которого собственно и речь. Компилируется что через hbmk2, что самим харбором - без ошибок, всего с парой предупреждений, что меня немало удивило.
Возникли ошибки на этапе линковки:

Скрытый текст

Help, please - что делать и куды бечь ?

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





Пост N: 14
Зарегистрирован: 24.04.13
ссылка на сообщение  Отправлено: 15.08.13 16:57. Заголовок: По inkeytrap() см. в..

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





Пост N: 121
Зарегистрирован: 08.07.06
ссылка на сообщение  Отправлено: 15.08.13 17:53. Заголовок: azoo пишет: По inke..


azoo пишет:

 цитата:
По inkeytrap() см. ветку



Спасибо. Пригодилось.

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





Пост N: 137
Зарегистрирован: 08.07.06
ссылка на сообщение  Отправлено: 19.08.13 17:50. Заголовок: Не получается подруж..


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

Например:

 

FUNC Main()

REQUEST HB_LANG_RU866
REQUEST HB_CODEPAGE_RU866
HB_LANGSELECT("RU866")
HB_CDPSELECT("RU866")

? File("текст.!")
QUIT

RETURN

Всегда дает результат .F.
Файл разумеется есть, лежит рядом с exe. Если переименовать в латиницу - результат File("text.!") сразу .T.

Команда RUN("@echo --- Привет --- ") дает кракозябры на экране.

В hbp указал
-DHB_LANG_DEFAULT=RU866
-DHB_CODEPAGE_DEFAULT=RU866

Что я еще забыл переключить в настройках ?

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




Пост N: 2944
Зарегистрирован: 23.05.05
ссылка на сообщение  Отправлено: 19.08.13 18:06. Заголовок: Есть 2 способа решен..


Есть 2 способа решения этого вопроса:

1. Транслировать имена файлов из cp866 в cp1251

2. Добавить в конец модуля такую функцию:

#pragma BEGINDUMP
#include "windows.h"

HB_FUNC_STATIC( SETFILEAPIS ) // Имена файлов в кодировке OEM
{
SetFileApisToOEM();
}
#pragma ENDDUMP

и вызвать ее при старте программы

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





Пост N: 138
Зарегистрирован: 08.07.06
ссылка на сообщение  Отправлено: 19.08.13 18:12. Заголовок: Pasha пишет: Есть ..


Pasha пишет:

 цитата:

Есть 2 способа решения этого вопроса:

1. Транслировать имена файлов из cp866 в cp1251


Переделывать всю программу, искать вызовы файловых функций (а там во всех местах - и FILE() и DIRECTORY() и тд и тп) ... муторно очень...


 цитата:
2. Добавить в конец модуля такую функцию:



Добавил.
RUN("@echo --- Привет ---") теперь пишет нормально, а File() все равно дает .F.


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





Пост N: 139
Зарегистрирован: 08.07.06
ссылка на сообщение  Отправлено: 19.08.13 18:56. Заголовок: Попробовал даже так:..


Попробовал даже так:

sx := "абв.dbf"
sx := HB_TRANSLATE(sx,"RU866","RU1251")

? File(sx)

все равно дает .F.



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




Пост N: 2931
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 19.08.13 21:05. Заголовок: Попробуй так: FUNC M..


Попробуй так:
FUNC Main()

REQUEST HB_LANG_RU866
REQUEST HB_CODEPAGE_RU866
HB_LANGSELECT("RU866")
HB_CDPSELECT("RU866")

sx := "абв.dbf"
sx := HB_ANSITOOEM(sx)
? File(sx)


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





Пост N: 140
Зарегистрирован: 08.07.06
ссылка на сообщение  Отправлено: 19.08.13 21:51. Заголовок: Andrey пишет: Попр..


Andrey пишет:

 цитата:

Попробуй так:
...
sx := HB_ANSITOOEM(sx)



Попробовал. FALSE

Поставил наоборот - HB_OEMTOANSI(sx) - заработало.

Блин... этож сколько переписывать придется... просто ппц... Неужели нет вариантов ???




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


Пост N: 1143
Зарегистрирован: 09.10.06
ссылка на сообщение  Отправлено: 19.08.13 22:06. Заголовок: Sergy пишет: Блин....


Sergy пишет:

 цитата:
Блин... этож сколько переписывать придется... просто ппц... Неужели нет вариантов ???



Лично у меня
FUNC Main()

REQUEST HB_LANG_RU866
REQUEST HB_CODEPAGE_RU866
HB_LANGSELECT("RU866")
HB_CDPSELECT("RU866")

? File("текст.!")
QUIT

RETURN

показало .T. если исходник в 866 странице, ну и .F. если в 1251


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





Пост N: 141
Зарегистрирован: 08.07.06
ссылка на сообщение  Отправлено: 19.08.13 22:13. Заголовок: Исходник ведь клиппе..


Исходник ведь клипперовский, конечно он в 866 странице...

Базы данных, все сообщения - все работает нормально. А вот с файловой системой какая-то непонятка...

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


Пост N: 1144
Зарегистрирован: 09.10.06
ссылка на сообщение  Отправлено: 19.08.13 22:22. Заголовок: А какая ось, как зап..


А какая ось, как запускаете программу, что показывает chcp?

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





Пост N: 142
Зарегистрирован: 08.07.06
ссылка на сообщение  Отправлено: 19.08.13 22:35. Заголовок: Петр пишет: А какая..


Петр пишет:

 цитата:
А какая ось, как запускаете программу, что показывает chcp?



На домашнем компе - XP, запускаю программу из под Far, chcp показывает 866

На работе - сервер 2003 SR3, остальное тоже самое - и из под Far и из проводника тоже самое...


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


Пост N: 1145
Зарегистрирован: 09.10.06
ссылка на сообщение  Отправлено: 19.08.13 22:41. Заголовок: Ну не знаю, Win 7, F..


Ну не знаю, Win 7, Far 3.0 build 3249, active code page 866

.T.


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



Пост N: 12
Зарегистрирован: 21.04.13
ссылка на сообщение  Отправлено: 19.08.13 22:46. Заголовок: Сначала нужно SetFileApis


proc main
Local cfname
// set name before SetFileApis - wrong
cfname:="тест.!"
strfile("1",cfname,.f.)
? file(cfname)
SetFileApis()
? file(cfname)

inkey(100)

// set name after SetFileApis - right
cfname:="тест.!"
strfile("2",cfname,.f.)
? file(cfname)

return

#pragma BEGINDUMP

#include "windows.h"

HB_FUNC_STATIC( SETFILEAPIS ) //
{
SetFileApisToOEM();
}
#pragma ENDDUMP


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





Пост N: 143
Зарегистрирован: 08.07.06
ссылка на сообщение  Отправлено: 19.08.13 22:47. Заголовок: Петр пишет: Ну не з..


Петр пишет:

 цитата:
Ну не знаю, Win 7, Far 3.0 build 3249, active code page 866

.T.





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





Пост N: 144
Зарегистрирован: 08.07.06
ссылка на сообщение  Отправлено: 19.08.13 22:56. Заголовок: petr707 пишет: proc..


petr707 пишет:

 цитата:
proc main
Local cfname
// set name before SetFileApis - wrong
cfname:="тест.!"
strfile("1",cfname,.f.)
? file(cfname)
SetFileApis()
? file(cfname)

inkey(100)

// set name after SetFileApis - right
cfname:="тест.!"
strfile("2",cfname,.f.)
? file(cfname)

return

#pragma BEGINDUMP

#include "windows.h"

HB_FUNC_STATIC( SETFILEAPIS ) //
{
SetFileApisToOEM();
}
#pragma ENDDUMP



Прикольно.
У меня получилось
.T.
.T.
.T.

НО имя файла в?бв.!

Компилировал припомощи hbp следующего содержания (скопирован с проекта)

d:\harbour\contrib\hbnf\hbnf.hbc
d:\harbour\contrib\hbct\hbct.hbc
d:\harbour\contrib\hbwin\hbwin.hbc
d:\harbour\contrib\hbblink\hbblink.hbc

-lhbcpage.lib
-inc
-run
-LD:\Harbour\lib\win\bcc
-DHB_LANG_DEFAULT=RU866
-DHB_CODEPAGE_DEFAULT=RU866
-prgflag=/v

lang_test2.prg


Ваще ниче не понимаю...

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



Пост N: 13
Зарегистрирован: 21.04.13
ссылка на сообщение  Отправлено: 19.08.13 23:04. Заголовок: Удалите все файлы, и перезапустите ,старый файл тест.! мешает


Удалите все файлы, и перезапустите ,старый Ваш файл тест.! картинку портит

Должно быть два файла
в?бв.! ( содержимое="1")
и
тест.! (содержимое="2")

proc main

REQUEST HB_LANG_RU866
REQUEST HB_CODEPAGE_RU866
HB_LANGSELECT("RU866")
HB_CDPSELECT("RU866")

// set name before SetFileApis - wrong
cfname:="тест.!"
strfile("1",cfname,.f.)
? file(cfname)
SetFileApis()
? file(cfname)

inkey(100)

// set name after SetFileApis - right
cfname:="тест.!"
strfile("2",cfname,.f.)
? file(cfname)

return

#pragma BEGINDUMP

#include "windows.h"

HB_FUNC_STATIC( SETFILEAPIS ) //
{
SetFileApisToOEM();
}
#pragma ENDDUMP

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





Пост N: 145
Зарегистрирован: 08.07.06
ссылка на сообщение  Отправлено: 19.08.13 23:05. Заголовок: Вот такой пример: p..


Вот такой пример:

proc main
Local cfname
// set name before SetFileApis - wrong
cfname:="тест1.!"
strfile("1",cfname)
? file(cfname)

SetFileApis()

// set name after SetFileApis - right
cfname:="тест2.!"
strfile("2",cfname)
? file(cfname)

return

#pragma BEGINDUMP

#include "windows.h"

HB_FUNC_STATIC( SETFILEAPIS ) //
{
SetFileApisToOEM();
}
#pragma ENDDUMP

дает
.T.
.T.

и два файла: в?бв1.! и в?бв2.!

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





Пост N: 146
Зарегистрирован: 08.07.06
ссылка на сообщение  Отправлено: 19.08.13 23:06. Заголовок: почти синхронно отве..


почти синхронно ответили...

ща попробую Ваш пример

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



Пост N: 14
Зарегистрирован: 21.04.13
ссылка на сообщение  Отправлено: 19.08.13 23:08. Заголовок: Не работает SetFileApis()


Не работает SetFileApis()

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

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