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





Пост N: 175
Зарегистрирован: 08.04.06
ссылка на сообщение  Отправлено: 02.02.08 01:02. Заголовок: Проблемы с ADIR() и DIRECTORY()


Почему-то не работает ADIR("ПРАЙС*.DBF"), как работало в Clipper'е, но работает ADIR(Windows("ПРАЙС*.DBF"))...
Опять программу перелопачивать...
И нафига переводить название файла в кодировку 1251, если на диске они хранятся в 866-й? Или я в этом своём предположении сильно ошибаюсь? Но ведь гольный DOS 6.22 нормально видит и отбражает файл или папку, названную при создании из-под виндов русскими буквами?
И в любом случае, ADIR(Windows("ПРАЙС*.DBF")) возвращает мне названия файлов тоже в кодировке 1251. Зачем??? Чтобы я никак не мог их использовать без перевода обратно в 866-ю? Ставить цикл перевода в 866-ю кодировку по всем найденным названиям - это извращённое издевательство... и при n-ном числе найденных файлов может быть не очень быстрым!
C функцией DIRECTORY() та же самая история...
Сказал же я Harbour'у, выбрав HB_SETCODEPAGE ("RU866"), что хочу видеть всё в 866-й кодировке, что ещё ему надо?

Спасибо: 0 
Профиль
Ответов - 4 [только новые]


Администратор




Пост N: 758
Зарегистрирован: 23.05.05
ссылка на сообщение  Отправлено: 02.02.08 11:05. Заголовок: Харбор специально де..


Харбор специально делался для издевательств над малознающими программистами. Это такая незаявленная цель :)
Не пиши того, чего не знаешь. С чего ты взял, что


 цитата:
на диске они хранятся в 866-й? Или я в этом своём предположении сильно ошибаюсь?



Сильно. С точностью до наоборот

HB_SETCODEPAGE ("RU866") не перекодирует имена файлов. Она вообще ничего не перекодирует. Она указывает кодовую страницу для сортировки и работы upper/lower. И не более. Больше ничего она не делает.
Чтобы получить имена файлов по русски, не надо перелопачивать программу. Достаточно читать этот форум
Здесь неоднократно писали, что для этого необходимо вызов

SetFileApis()

и сама SetFileApis:

#ifdef __HARBOUR__
#pragma BEGINDUMP
#include "windows.h"

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


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




Пост N: 463
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 03.02.08 00:59. Заголовок: Лукашевский пишет: ..


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

 цитата:
Но ведь гольный DOS 6.22 нормально видит и отбражает файл или папку, названную при создании из-под виндов русскими буквами?



Так зачем мучится, поставь MS-DOS и продолжать в нем работать. Тогда и не будут никакие новшества в системах мешать !!! А то расплодили всяких Виндусов, аж до Висты какой-то дошли !!! Скажем нет прогрессу ....

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





Пост N: 176
Зарегистрирован: 08.04.06
ссылка на сообщение  Отправлено: 03.02.08 01:27. Заголовок: Re: Pasha


Pasha пишет:

 цитата:
Достаточно читать этот форум


Pasha, не поверишь - почти всё читаю, и даже сам в него пишу :-) но упоминания об этой функции не встречал... может, это было давно, когда я обращался к Харбору (и форуму соответственно) раз в два-три месяца, чтобы узнать, принял он наконец божеский вид или нет.
Спасибо за неоднократную :-) помощь!
Но всё-таки логичнее было бы эту функцию всобачить внутрь HB_SetCODEPAGE("RU866") - тогда и вопросов бы ни у кого не возникало! А так - до меня неоднократно, плюс мой вопрос - уже как минимум три раза...

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


Пост N: 386
Зарегистрирован: 09.10.06
ссылка на сообщение  Отправлено: 03.02.08 10:58. Заголовок: Лукашевский пишет: ..


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

 цитата:
Но всё-таки логичнее было бы эту функцию всобачить внутрь HB_SetCODEPAGE("RU866")



Не логичнее, Паша уже Вам говорил, что HB_SETCODEPAGE () не имеет никакого отношения к FS API, к тому же
Вы все время забываете о том, что [x]Harbour может, и работает, не только на Win платформе.

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