powered by simpleCommunicator - 2.0.53     © 2025 Programmizd 02
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Снова кодовая страница таблицы и старый добрый FPD 2.6 for DOS
20 сообщений из 20, страница 1 из 1
Снова кодовая страница таблицы и старый добрый FPD 2.6 for DOS
    #37676325
DAndrey
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Программа обработчик, написана на старом FoxPro 2.6. в файле config.fp CODEPAGE=866. Системой клиент-банк выписка выгружается в DBF файл с внутренней кодировкой 866, а структура таблицы с кодировкой 1251, если ручками менять символ обозначающий кодировку таблицы с CHR(201) на CHR (101), то все прекрасно. В самой программе клиент-банк никаких возможностей смены кодировки таблицы экспорта нету. Как можно открывать таблицу с кодировкой 1251, если вся программка использует кодировку 866 ????
...
Рейтинг: 0 / 0
Снова кодовая страница таблицы и старый добрый FPD 2.6 for DOS
    #37676398
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
DAndreyесли ручками менять символ обозначающий кодировку таблицы с CHR(201) на CHR (101), то все прекрасно.
Автоматизировать это действие что мешает?
...
Рейтинг: 0 / 0
Снова кодовая страница таблицы и старый добрый FPD 2.6 for DOS
    #37676427
DAndrey
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Dima T,
Придется открывать файл менять, обрабатывать, а потом обратно менять . Так как пытался оставить в описании таблицы 866 кодовую страницу, тогда совсем не понятная кодировка получается при выгрузки из клиент-банка. Может есть другое решение данной проблемы ????
...
Рейтинг: 0 / 0
Снова кодовая страница таблицы и старый добрый FPD 2.6 for DOS
    #37676496
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
DAndreyМожет есть другое решение данной проблемы ????
Как по твоему должно выглядеть другое решение?
У тебя кривой генератор в клиент-банке. Он пишет данные в 866 (ДОС) кодировке, а в заголовке DBF ставит что читайте как 1251 (CHR(201) обозначает 1251 по стандартам).

Можешь CPCONVERT() использовать для смены кодовой страницы, только этой функции нет в FPD 2.6 for DOS если не ошибаюсь.
DAndreyПридется открывать файл менять, обрабатывать, а потом обратно менять .
Обратно-то зачем менять? хочешь исходный файл сохранить - делай копию и в ней меняй. Еще раз повторюсь - файл изначально кривой. И приведение его в порядок - не криминал, а самое правильное решение.
Сложного ничего не вижу:
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
proc Set866CP
lpara tcFile
local lnH, llOk
lnH = FOPEN(tcFile, 2)
if lnH > 0
	FSEEK(lnH, 29)
	FWRITE(lnH, CHR(101))
	FCLOSE(lnH)
	llOk = .T.
endif
return llOk


Можешь сверху еще анализатор неправильной кодировки прикрутить, в 866 многие русские буквы имеют коды непечатаемых символов в 1251 и наоборот.
...
Рейтинг: 0 / 0
Снова кодовая страница таблицы и старый добрый FPD 2.6 for DOS
    #37676635
DAndrey
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Dima T,

Функции CPCONVERT() точно нету, а функция Set866CP с небольшими доработками заработала. СПАСИБО !!!
...
Рейтинг: 0 / 0
Снова кодовая страница таблицы и старый добрый FPD 2.6 for DOS
    #37676685
Sergey Sizov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
DAndreyDima T,

Функции CPCONVERT() точно нетуТочно? А это что?
ЪДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДї
і CPCONVERT() і
АДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДЩ
CPCONVERT(<expN1>,<expN2>, <expC>)

ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД
Converts the character expression <expC> from one code page
(<expN1>) to another (<expN2>).
Return value - Character
ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД

CPCONVERT() is commonly used to translate character or memo
fields or character expressions to the current code page. Use
CPCURRENT() to determine the current code page. Note that
CPCONVERT() isn't required for normal cross-platform
functioning of the product. It is strictly used to access the
underlying translation facilities of FoxPro.

For example, if the variable x contains a character that on
the Macintosh (in code page 10000) would look like then this
command will return a character that will look like when
viewed under the ANSI character set (code page 1252) in
Microsoft Windows.

CPCONVERT(10000, 1252, x)

ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД

See Also: International/X-Platform, CPCURRENT(), CPDBF(),
MODIFY COMMAND/MODIFY FILE, SET NOCPTRANS

ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД
А еще там есть вот это:
ЪДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДї
і OEMTOANSI() і
АДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДЩ
OEMTOANSI(<expC>)

ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД
Converts each character in a character expression to the
corresponding character in the ANSI character set.
Return value - Character
ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД

OEMTOANSI() is supported in FoxPro for Windows and FoxPro for
Macintosh.

Use OEMTOANSI() to move data from FoxPro for MS-DOS to FoxPro
for Windows and FoxPro for Macintosh.

<expC>
OEMTOANSI() converts each character in <expC> to the
corresponding character in the ANSI character set. The
character expression <expC> should contain characters
from the MS-DOS (OEM) character set.

If a character in <expC> doesn't have an ANSI equivalent,
the character is converted to a similar ANSI character.
For example, MS-DOS line-drawing characters might not be
found in the ANSI character set.

ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД

See Also: ANSITOOEM(), CHRTRAN(), SYS(15) Character
translation

ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД
...
Рейтинг: 0 / 0
Снова кодовая страница таблицы и старый добрый FPD 2.6 for DOS
    #37676703
DAndrey
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Sergey Sizov,

Sorry !!! Но в FoxPro 2.6. for DOS такие функции отсутствуют
...
Рейтинг: 0 / 0
Снова кодовая страница таблицы и старый добрый FPD 2.6 for DOS
    #37676756
Sergey Sizov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
DAndreySergey Sizov,

Sorry !!! Но в FoxPro 2.6. for DOS такие функции отсутствуютДумаешь, я это всё придумал? Не поверил, что я это их хелпа вырезал? И не попробовал непосредственно в FPD 2.6?
...
Рейтинг: 0 / 0
Снова кодовая страница таблицы и старый добрый FPD 2.6 for DOS
    #37676952
DAndrey
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Sergey Sizov,

Как ни странно но я тоже попробовал для интереса и не поверите система выдала "Function not implemented" .
...
Рейтинг: 0 / 0
Снова кодовая страница таблицы и старый добрый FPD 2.6 for DOS
    #37677000
XAndy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
DAndrey,

Если у вас нет, значит ваш FPD26 подозрительно напоминает FPD20 ))))))))
...
Рейтинг: 0 / 0
Снова кодовая страница таблицы и старый добрый FPD 2.6 for DOS
    #37677300
DAndreyПрограмма обработчик, написана на старом FoxPro 2.6. в файле config.fp CODEPAGE=866. Системой клиент-банк выписка выгружается в DBF файл с внутренней кодировкой 866, а структура таблицы с кодировкой 1251, если ручками менять символ обозначающий кодировку таблицы с CHR(201) на CHR (101), то все прекрасно. В самой программе клиент-банк никаких возможностей смены кодировки таблицы экспорта нету. Как можно открывать таблицу с кодировкой 1251, если вся программка использует кодировку 866 ????

Если не читается:

*Запускаем cpzero - в комплекте фокспро есть
cpzero.prg таблица.DBF (этим дейстием обнулим кодовую страницу)

*Открываем таблицу
USE таблица.DBF

* фокс выдаст окошко с просьбой указать кодировку. Указываем 1251 если она была создана в 1251.
BROWSE

* смотрим. если будут какозябрики то таблица.DBF заполнялась НЕ как 1251. начинаем сначала - cpzero и пробуем выбрать другую кодировку.
...
Рейтинг: 0 / 0
Снова кодовая страница таблицы и старый добрый FPD 2.6 for DOS
    #37677332
Запускать cpzero можно с параметром
DO cpzero WITH таблица.DBF

Просто обнулит кодировку без лишних вопросов.
Утилита cpzero данные внутри таблицы не меняет.
...
Рейтинг: 0 / 0
Снова кодовая страница таблицы и старый добрый FPD 2.6 for DOS
    #37677495
DAndrey
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
проходящий.,

Изредко нужно читать вопрос и судя по ответу не один раз. Решение у (Dima T) самое оптимальное. Я же не буду каждый раз запускать CPZERO, а если точнее то гл. бухгалтер. Система клиент-банк создает каждый раз новый файл при экспорте выписки.
...
Рейтинг: 0 / 0
Снова кодовая страница таблицы и старый добрый FPD 2.6 for DOS
    #37677501
Sergey Sizov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
DAndreySergey Sizov,

Как ни странно но я тоже попробовал для интереса и не поверите система выдала "Function not implemented" .Проверяй версию своего фокса.
Код: sql
1.
?version()
...
Рейтинг: 0 / 0
Снова кодовая страница таблицы и старый добрый FPD 2.6 for DOS
    #37677514
DAndrey
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Sergey Sizov,

?version() выдает FoxPro 2.6 (X)
...
Рейтинг: 0 / 0
Снова кодовая страница таблицы и старый добрый FPD 2.6 for DOS
    #37677606
Фотография AndreTM
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
DAndrey?version() выдает FoxPro 2.6 (X) Кошерная версия должна выдавать 2.Xx, где вместо большого хрена - буковка версии, вместо маленького - буковка релиза. Так что XAndy был недалёк от истины...
...
Рейтинг: 0 / 0
Снова кодовая страница таблицы и старый добрый FPD 2.6 for DOS
    #37677672
DAndreyпроходящий.,

Изредко нужно читать вопрос и судя по ответу не один раз. Решение у (Dima T) самое оптимальное. Я же не буду каждый раз запускать CPZERO, а если точнее то гл. бухгалтер. Система клиент-банк создает каждый раз новый файл при экспорте выписки.
Что за дебильный ответ?
DO cpzero WITH 'таблица.dbf',1251 && Одна строчка.

И такие отпетые двоечники как ты работают с банком?
...
Рейтинг: 0 / 0
Снова кодовая страница таблицы и старый добрый FPD 2.6 for DOS
    #37677687
1122112211
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
проходящий.DO cpzero WITH 'таблица.dbf',1251 && Одна строчка.

Те же яйца только в профиль. cpzero точно также меняет 30-й байт. Какая разница чем менять своей функцией или предложенной MS?
...
Рейтинг: 0 / 0
Снова кодовая страница таблицы и старый добрый FPD 2.6 for DOS
    #37677699
1122112211проходящий.DO cpzero WITH 'таблица.dbf',1251 && Одна строчка.

Те же яйца только в профиль. cpzero точно также меняет 30-й байт. Какая разница чем менять своей функцией или предложенной MS?
Вот и я о том же.
Dima T тут целую поибень накатал, когда есть готовая утилита cpzero.prg в дистрибутиве фокса :))
...
Рейтинг: 0 / 0
Снова кодовая страница таблицы и старый добрый FPD 2.6 for DOS
    #37677710
1122112211
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
проходящий.Dima T тут целую поибень накатал, когда есть готовая утилита cpzero.prg в дистрибутиве фокса :))
Ну знаешь, если для тебя 9 строк это мегапрога, то не знаю чего сказать в ответ. По моему их быстрее набить по памяти чем название cpzero.prg вспомнить, потом где она живет и в проект добавить.
...
Рейтинг: 0 / 0
20 сообщений из 20, страница 1 из 1
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Снова кодовая страница таблицы и старый добрый FPD 2.6 for DOS
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]