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



Пост N: 66
Зарегистрирован: 30.05.11
ссылка на сообщение  Отправлено: 10.01.13 00:38. Заголовок: перекодирока dbf в 866 кодовую страницу


В dbf базе украинский текст набран с помощью утилиты keyrus. Какая это кодовая страница - не знаю. Если данные из этой базы перенести в другую dbf базу, которая использует 866 кодовую страницу, то в новой базе эти данные не читабельны. Как средствами clipper5 преобразовать данные в 866 кодовую страницу, а если это невозможно, то какой сторонней утилитой можно сделать данное преобразование?

Спасибо: 0 
ПрофильЦитата Ответить
Ответов - 37 , стр: 1 2 All [только новые]





Пост N: 43
Зарегистрирован: 28.07.10
ссылка на сообщение  Отправлено: 10.01.13 10:57. Заголовок: В утилите DBFnfvigat..


В утилите DBFnavigator есть пункт меню "Сменить кодировку" (DOS<->Win)
потом сохранить файл.

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



Пост N: 67
Зарегистрирован: 30.05.11
ссылка на сообщение  Отправлено: 10.01.13 12:14. Заголовок: При смене кодировки ..


При смене кодировки DBFnavigatorom остается несколько символов (например "щ" перекодируется "ц"), все остальные символы перекодируются в "_"
Исходная база заполняется программой, написанной на Фокспро 2.6а и символьные данные заносятся на украинском языке с помощью утилиты keyrus.
Данные из этой базы нужно перенести в базу, созданную в визуал фокспро 7, но не полностью, а изменив в последней некоторые записи.
Скорее всего нужно перекодировать из ДОС в ДОС

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



Пост N: 26
Зарегистрирован: 07.06.08
ссылка на сообщение  Отправлено: 10.01.13 13:57. Заголовок: Пока ищете утилиту, ..


Пока ищете утилиту, напишете свою перекодировку. Нужно только составить таблицу соответствия, привожу пример перекодировки для WIN1251-> 866. По любому нужно менять код на код. Я бы не доверился утилитам. Или просто две кодовые страницы забить (найти и скопировать в программу), потом искать замену каждого символа по таблицам. Нашел сходу кодировки украинского http://porokhnyak.org/cyr/index.ru.html, посмотрите кодировку в Вашем файле dbf, по любому нужно знать исходную кодировку и кодовую страницу.
FUNC w_d(c) // && WIN1251->Dos
Local b:="АБВГДЕЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯабвгдежзийклмнопрстуфхцчшщъыьэюя─┌┘┴┬└┐┼│├┤═╔╝╩╦╚╗╬║╠╣№ёЁ"
Local a:="└┴┬├─┼╞╟╚╔╩╦╠═╬╧╨╤╥╙╘╒╓╫╪┘┌█▄▌▐▀рстуфхцчшщъыьэюяЁёЄєЇїЎў°∙•√№¤■ -+++++++|||=+++++++|||╣╕и"
Local i
local ret
i=At(c,a)
if i>0
ret:=substr(b,i,1)
else
ret:=c
endif
RETURN ret


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




Пост N: 2650
Зарегистрирован: 23.05.05
ссылка на сообщение  Отправлено: 10.01.13 14:04. Заголовок: SergeyKorotun пишет:..


SergeyKorotun пишет:

 цитата:
Скорее всего нужно перекодировать из ДОС в ДОС



Есть 2 украинские кодировки: ms (866) и украинский ГОСТ 1992-го года (1125). Они отличаются только несколькими украинскими символами.

Перекодировка между ними:

Function UkrToMs(c)
// -------------------------------------------------------------
// Перекодировка УкраинаГОСТ cp1125 -> cp866
// -------------------------------------------------------------
Return CharRepl(Chr(242)+Chr(243)+Chr(244)+Chr(245)+Chr(246)+Chr(247)+Chr(248)+Chr(249), c, Chr(131)+Chr(163)+Chr(242)+Chr(243)+Chr(73)+Chr(105)+Chr(244)+Chr(245), .t.)

Function MsToUkr(c)
// -------------------------------------------------------------
// Перекодировка cp866 -> УкраинаГОСТ cp1125
// -------------------------------------------------------------
Return CharRepl(Chr(242)+Chr(243)+Chr(244)+Chr(245), c, Chr(244)+Chr(245), .t.)


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



Пост N: 68
Зарегистрирован: 30.05.11
ссылка на сообщение  Отправлено: 11.01.13 00:27. Заголовок: a_sidorov пишет: Re..


a_sidorov пишет:

 цитата:
Return CharRepl(Chr(242)+Chr(243)+Chr(244)+Chr(245), c, Chr(244)+Chr(245), .t.)


А где взять функцию CharRepl()?
Я использую клиппер5

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




Пост N: 2651
Зарегистрирован: 23.05.05
ссылка на сообщение  Отправлено: 11.01.13 08:58. Заголовок: Это функция из clipp..


Это функция из clipper tools

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



Пост N: 69
Зарегистрирован: 30.05.11
ссылка на сообщение  Отправлено: 11.01.13 19:27. Заголовок: Скачал clipper tools..


Скачал clipper tools 3
Будет работать с clipper 5.01 и если да, то как подцепить?
Использую оболочку clip.exe
Батником ни одного раза не компилировал.

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



Не зарегистрирован
Зарегистрирован: 01.01.70
ссылка на сообщение  Отправлено: 12.01.13 14:55. Заголовок: Лучше взять родной комплект Clipper Tools II/5.0


Лучше взять родной комплект Clipper Tools II/5.0,
или напишите свой аналог, что-то типа
Function CharRepl2(cSearchFor, cText, cReplace)
Local lSearchFor:=len(cSearchFor), lReplace := len(cReplace)
Local i,s1,s2
lSearchFor:=min(lSearchFor,lReplace )
for i=1 to lSearchFor
s1:=substr(cSearchFor,i,1)
s2:=substr(cReplace ,i,1)
cText:=STRTRAN(cText,s1,s2)
next i
return cText


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




Пост N: 2577
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 20.01.13 15:03. Заголовок: Pasha пишет: Есть 2..


Pasha пишет:

 цитата:
Есть 2 украинские кодировки: ms (866) и украинский ГОСТ 1992-го года (1125). Они отличаются только несколькими украинскими символами.


Не совсем понятно ?

В Харборе есть 3 кодировки:
Ukrainian Windows-1251 HB_CODEPAGE_UA1251 "UA1251" cpuawin.c
Ukrainian 866 HB_CODEPAGE_UA866 "UA866" cpua866.c
Ukrainian KOI-8U HB_CODEPAGE_UAKOI8 "UAKOI8" cpuakoi.c

1125 - то же самое что и "UA1251" ?

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




Пост N: 2659
Зарегистрирован: 23.05.05
ссылка на сообщение  Отправлено: 21.01.13 00:11. Заголовок: Andrey пишет: В Хар..


Andrey пишет:

 цитата:
В Харборе есть 3 кодировки:



Неверно. В харборе есть 4 украинские кодировки: 866, 1125, 1251 и koi8u
1125 почти совпадает с 866-й, кроме кодов для специфических украинских символов. Это кодировка была принята в 1991 году Минэкономики еще УССР в качестве республиканского стандарта.
Свое название - cp1125, или как ее еще называют, ruscii, она получила позднее.
Поскольку тогда с кириллическими кодировками творился бардак, она отличается от 866-й, которая де-факто к 91-му году уже существовала, но microsoft ее утвердила позже.
А 1251 - это кириллическая кодировка для windows, которая появилась еще позже, в ней коды символов кириллицы отличаются от 866-й

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




Пост N: 2579
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 21.01.13 12:02. Заголовок: Pasha пишет: В харб..


Pasha пишет:

 цитата:
В харборе есть 4 украинские кодировки: 866, 1125, 1251 и koi8u



Спасибо ! Буду знать теперь.
А как идет вызов кодировки 1125 для БД ?
CODEPAGE "UA866"
CODEPAGE "UA1251"
CODEPAGE "UAKOI8"
CODEPAGE "?????"

И нужно ли в Харборе и МиниГуи описывать все используемые кодировки ?
REQUEST HB_CODEPAGE_UA866
REQUEST HB_CODEPAGE_UA1251
и т.д.

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




Пост N: 2660
Зарегистрирован: 23.05.05
ссылка на сообщение  Отправлено: 21.01.13 12:22. Заголовок: Andrey пишет: CODEP..


Andrey пишет:

 цитата:
CODEPAGE "?????"



Кодировка называется UA1125. Стало быть:

HB_SETCODEPAGE('UA1125')

или

hb_cdpSelect('UA1125')

SET CODEPAGE TO .. это как я понимаю команда minigui, и в ней есть далеко не полный список возможных кодировок.
Если нужной кодировки нет, ее надо задать стандартными средствами харбора. В конце концов, это одно и то же, и применять эту команду hmg совершенно необязательно.

А описывать естественно надо используемые кодировки, а неиспользуемые - не описывать. Так советует капитан очевидность.

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




Пост N: 2581
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 21.01.13 13:03. Заголовок: Pasha пишет: А опис..


Pasha пишет:

 цитата:
А описывать естественно надо используемые кодировки, а неиспользуемые - не описывать. Так советует капитан очевидность.


Спасибо !

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




Пост N: 2586
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 22.01.13 16:02. Заголовок: SergeyKorotun пишет:..


SergeyKorotun пишет:

 цитата:
то какой сторонней утилитой можно сделать данное преобразование?



Вот этой утилитой... Русский работает, остальные проверять надо...
Правда еще не доделал до конца эту прогу, но все равно её нужно тестировать...
http://files.mail.ru/349DE519487D43279426E1FF862868BF


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



Пост N: 70
Зарегистрирован: 30.05.11
ссылка на сообщение  Отправлено: 24.01.13 21:39. Заголовок: Всем спасибо за помо..


Всем спасибо за помощь.
Использовал функцию:


 цитата:
Pasha пишет:
Function UkrToMs(c)
// -------------------------------------------------------------
// Перекодировка УкраинаГОСТ cp1125 -> cp866
// -------------------------------------------------------------
Return CharRepl(Chr(242)+Chr(243)+Chr(244)+Chr(245)+Chr(246)+Chr(247)+Chr(248)+Chr(249), c, Chr(131)+Chr(163)+Chr(242)+Chr(243)+Chr(73)+Chr(105)+Chr(244)+Chr(245), .t.)

Function MsToUkr(c)
// -------------------------------------------------------------
// Перекодировка cp866 -> УкраинаГОСТ cp1125
// -------------------------------------------------------------
Return CharRepl(Chr(242)+Chr(243)+Chr(244)+Chr(245), c, Chr(244)+Chr(245), .t.)


Но есть один нюанс. Текстовые данные визуал фокспрошной программой отображаются крякозябрами, хотя любой вьювер показывает читабельный текст. Причина - в обнулении клиппером 29 байта в заголовке файла, в котором хранится номер кодовой страницы и его надо восстановить.
Можно было погуглить и узнать номер 866 кодовой страницы, скачать редактор бинарных файлов и изменить 29 байт. Но сделал попроще: в визуал фокспро открыл базу в монопольном режиме, он предложил выбрать кодовую страницу, выбрал 866, сохранил, подбросил в фокспрошную программу и символы начали отображаться верно.


 цитата:
Andrey пишет: её нужно тестировать...


Не прошла ваша утилита тест. почему перекодировка из win1125 в СР866, а не из dos1125 в СР866
Некоторые перекодируемые символы видны как например Chr(176) в CP866

Редко использую клиппер, подскажите почему не выходит из цикла по нажатию ESC?
#include "inkey.ch"
...
do while !eof() .and. lastkey()<>K_ESC
...
enddo

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



Не зарегистрирован
Зарегистрирован: 01.01.70
ссылка на сообщение  Отправлено: 24.01.13 23:14. Заголовок: Потому что не читает из клавиатуры - нужен inkey()



...
do while !eof() .and. lastkey()<>K_ESC
inkey()
..
enddo
....
Function ESC_WAIT(ntime)
Local ret:=.f.,n:=0,lkey:=0
ntime:=IIF(ntime=NIL,60,ntime)
keyboard(":"); inkey()
for n=1 to 5
lkey:=INKEY(ntime)
if lkey=K_ESC
ret:=.t.
EXIT
endif
next i
return ret


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




Пост N: 2588
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 25.01.13 16:32. Заголовок: SergeyKorotun пишет:..


SergeyKorotun пишет:

 цитата:
Не прошла ваша утилита тест. почему перекодировка из win1125 в СР866, а не из dos1125 в СР866


Давайте базу, я сам посмотрю.

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



Пост N: 71
Зарегистрирован: 30.05.11
ссылка на сообщение  Отправлено: 27.01.13 12:46. Заголовок: Andrey пишет: Давай..


Andrey пишет:

 цитата:
Давайте базу, я сам посмотрю.


ЮЛЎЯ
СТАНЎСЛАВ
СВЎТЛАНА
ЛЕОНЎД
МАРЎЯ
РА°СА
ВАЛЕРЎЙ
АНАТОЛЎЙ
ВЎРА
ЇВГЕНЎЙ
ЎННА
АНАСТАСЎЯ
ЮРЎЙ

Надо перекодировать:
Перекодировка Украина ГОСТ cp1125 -> cp866
242 131 Є Г
243 163 є г
244 242 Ї Є
245 243 ї є
246 73 Ў I
247 105 ў i
248 244 ° Ї
249 245 ∙ ї

Если возможно, занесите в 29 байт (по счету - 30-ый, отсчет байтов ведется с нуля) номер 866 кодовой страницы.
Если знаете, как занести номер кодовой страницы в заглавие базы из клиппер 5.01, приведите код



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



Не зарегистрирован
Зарегистрирован: 01.01.70
ссылка на сообщение  Отправлено: 27.01.13 13:10. Заголовок: как занести номер кодовой страницы в заглавие базы


Похоже , вряд ли это Вам поможет.

29 байт будет сброшен при первом же изменении таблицы движком DBFNTX clipper'a 5.01
Этот движок не знает такого понятия - кодовая страница.
Вроде даже просто сократит размер заголовка DBF, подготовленной Fox'ом с указанием кодовой страницы

Спасибо: 0 
Цитата Ответить



Пост N: 72
Зарегистрирован: 30.05.11
ссылка на сообщение  Отправлено: 27.01.13 14:54. Заголовок: petr707 пишет: 29 б..


petr707 пишет:

 цитата:
29 байт будет сброшен при первом же изменении таблицы движком DBFNTX clipper'a 5.01
Этот движок не знает такого понятия - кодовая страница.
Вроде даже просто сократит размер заголовка DBF, подготовленной Fox'ом с указанием кодовой страницы


Задача заключается в следующем: взять базу визуал фокспро 7, внести в нее изменение средствами клиппера, сохранить изменения, закрыть базу и только после этого в файле изменить (не средствами DBFNTX) значение 29 байта на значение равное номеру 866 кодовой страницы и после этого подкинуть базу фокспрошой проге.
Инфа с инета: В среде FoxPro признак кодовой страницы (29-й байт) равен 0x65 для cp866 и 0xC9 для cp1251.

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



Не зарегистрирован
Зарегистрирован: 01.01.70
ссылка на сообщение  Отправлено: 27.01.13 16:08. Заголовок: Возможны варианты..


Так у Вас просто обмен данными между двумя программами или последовательная обработка.
В этом случае не обязательно иметь полный общий DBF, в котором нужно менять байт в заголовке софтом нижнего уровня.

1) Экспорт(fox - в папку обмена для clipper) - импорт (clipper)- экспорт(для fox)- импорт ( fox - от cliiper)
в качестве носителя данных - возможен DBF без кодовой странциы или простой ASCI txt-файл

2) Зачем нужен Clipper для этой задачи? Перекодировку можно сделать в рамках и только одного Fox:
одну таблицу создать с одной кодовой страницей, вторую - с другой
Преобразовать при копировании полей первого DBF во второй DBF или через TXT-файл

Спасибо: 0 
Цитата Ответить



Пост N: 73
Зарегистрирован: 30.05.11
ссылка на сообщение  Отправлено: 27.01.13 18:30. Заголовок: Я ранее уже писал чт..


Я ранее уже писал что задача решена, но хотелось больше ее автоматизировать.
1. Есть чужая откомпилированная прога на визуал фокспро 7. В базах бардак.
2. Есть чужая прога на фокспро 2.6, в базах которой порядок и там есть данные для первой проги.
3. Нужно из баз второй проги перенести некоторые данные в базы первой проги.
Поскольку фокспро не знаю, с помощью этого форума написал программу на клиппере 5.01, которая собирает из нескольких таблиц второй проги базу, которую средствами клиппера перекодирую с CP1125 в CP866 и некоторые данные переношу в базу первой проги.
4. Поскольку клиппер обнулил 29 байт базы второй проги, инфа с второй проги будет во второй проге отображаться крякозябрами. (любой вьювер отображает данные нормально)
5. Чтобы изменить 29 байт, открываю в визуал фокспро 7 базу (use dbfname exclusive), фокспро сам выбрасывает окно с предложением выбрать кодовую страницу, выбираю 866 и выхожу с фокспро. В результате 29 байт заполнен номером 866 кодовой страницы.
6.Подбрасываю базу во вторую прогу, и после этого она нормально отображает символьные данные.

5 пункт хотелось бы выполнить средствами клиппера, чтобы все выполнить с помощью одной клипперовской программы

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




Пост N: 2602
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 30.01.13 12:16. Заголовок: SergeyKorotun пишет:..


SergeyKorotun пишет:

 цитата:
ЮЛЎЯ
СТАНЎСЛАВ
СВЎТЛАНА
ЛЕОНЎД
МАРЎЯ
РА°СА
ВАЛЕРЎЙ
АНАТОЛЎЙ
ВЎРА
ЇВГЕНЎЙ
ЎННА
АНАСТАСЎЯ
ЮРЎЙ

Надо перекодировать:
Перекодировка Украина ГОСТ cp1125 -> cp866


Нужен DBF файл, я не могу собрать DBF из этих ИМЕН....
SergeyKorotun пишет:

 цитата:
Если возможно, занесите в 29 байт (по счету - 30-ый, отсчет байтов ведется с нуля) номер 866 кодовой страницы.


Вот примерно так (править под себя):
Скрытый текст



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



Пост N: 76
Зарегистрирован: 30.05.11
ссылка на сообщение  Отправлено: 31.01.13 01:10. Заголовок: Andrey пишет: Нуже..


Andrey пишет:

 цитата:

Нужен DBF файл, я не могу собрать DBF из этих ИМЕН....


Перенеси имена в текстовый файл и добавь в базу родной утилитой клиппера - dbu.exe (F6, добавить, выбрать SDF и выбрать текстовый файл с именами)
Andrey пишет:

 цитата:
Вот примерно так (править под себя):
Скрытый текст

А ограничение на длину бинарного файла есть?
Базы большие.

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




Пост N: 2608
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 31.01.13 12:38. Заголовок: SergeyKorotun пишет:..


SergeyKorotun пишет:

 цитата:
Перенеси имена в текстовый файл и добавь в базу родной утилитой клиппера - dbu.exe (F6, добавить, выбрать SDF и выбрать текстовый файл с именами)


Вот вы и проделайте эту работу. У меня русская 1251 кодировка на компе, ставить украинскую не когда.
Если вам "влом" сделать DBF-ник и выложить здесь, то тогда продолжать разговор не чего !

SergeyKorotun пишет:

 цитата:
А ограничение на длину бинарного файла есть?
Базы большие.



Запись идет 30 байт (ПЕРВЫХ) в базу, какой размер файла - это до лампочки !

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



Пост N: 77
Зарегистрирован: 30.05.11
ссылка на сообщение  Отправлено: 31.01.13 23:08. Заголовок: Andrey пишет: Вот в..


Andrey пишет:

 цитата:
Вот вы и проделайте эту работу. У меня русская 1251 кодировка на компе, ставить украинскую не когда.
Если вам "влом" сделать DBF-ник и выложить здесь, то тогда продолжать разговор не чего !


Я не знаю как вставить файл, поэтому базу импортировал в текстовый файл и несколько имен вставил в сообщение. Кнопка "файл с компьютера" делает переадресацию на сайт, на котором можно вставить только картинку.
По поводу продолжения разговора: я уже пару раз писал, что перекодировку сделал программно, поэтому дополнительная утилита мне уже не нужна. Вы просили, я протестировал, нет в проге перекодировки с дос 1125 в дос 866. Если подскажите как присоединить файл, базу я вам выложу.

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



Пост N: 705
Зарегистрирован: 11.06.10
ссылка на сообщение  Отправлено: 31.01.13 23:15. Заголовок: SergeyKorotun пишет:..


SergeyKorotun пишет:

 цитата:
Я не знаю как вставить файл

Синяя стрелка вниз (файл с компьютера).

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



Пост N: 78
Зарегистрирован: 30.05.11
ссылка на сообщение  Отправлено: 31.01.13 23:24. Заголовок: AlexMyr пишет: Синя..


AlexMyr пишет:

 цитата:
Синяя стрелка вниз (файл с компьютера).


при нажатии открывает http://photo.qip.ru/index.php на котором можно вставить только картинку

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



Пост N: 79
Зарегистрирован: 30.05.11
ссылка на сообщение  Отправлено: 31.01.13 23:43. Заголовок: Для Andrey отправил ..


Для Andrey
отправил вам базу на 30195@mail.ru

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




Пост N: 2613
Зарегистрирован: 17.05.05
ссылка на сообщение  Отправлено: 31.01.13 23:55. Заголовок: SergeyKorotun пишет:..


SergeyKorotun пишет:

 цитата:
при нажатии открывает http://photo.qip.ru/index.php на котором можно вставить только картинку


файл можно выложить на любой файло обменник , к примеру files.mail.ru и продублировать сюда ссылку , что то
типа http://files.mail.ru/FBD6TR (это просто пример)

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



Пост N: 80
Зарегистрирован: 30.05.11
ссылка на сообщение  Отправлено: 01.02.13 01:54. Заголовок: база для перекодиров..


база для перекодировки из ср1125 в ср866 http://us.ua/1024583/

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




Пост N: 2618
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 01.02.13 17:12. Заголовок: SergeyKorotun пишет:..


SergeyKorotun пишет:

 цитата:
база для перекодировки из ср1125 в ср866


Вот программа (и исходник) для перекодировки на МиниГуи - http://files.mail.ru/D2E69525A38D43F3B1734C3B07081E82

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

Забыл язык указать правильно...
Замените сами на эти строки:
SET LANGUAGE TO UKRAINIAN
SET CODEPAGE TO UKRAINIAN



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



Пост N: 81
Зарегистрирован: 30.05.11
ссылка на сообщение  Отправлено: 03.02.13 17:20. Заголовок: Доработанная функция..


Доработанная функция Андрея по смене 29 байта базы
//chr(101) for cp866
//chr(201) for cp1251

#include "fileio.ch"
clear screen

Set29biteInCP866("c:\proba.dbf")

FUNCTION Set29biteInCP866(cFile)
Local nFile, nStatus, nSizeFile, cStream

nFile:=Fopen(cFile,FO_WRITE)
nStatus:=FError()
if ((nFile=-1) .or. (nStatus!=0))
alert("Номер вiдкритого файла: "+ltrim(str(nFile))+";Помилка! Неможливо вiдкрити файл:;"+cFile+";Код помилки ДОС: "+ltrim(str(nStatus)))
return NIL
endif

nSizeFile := FSEEK(nFile,0,FS_END)
//alert("Size file "+str(nSizeFile))
nSeek:=FSEEK(nFile,29,FS_SET)
if nSeek<>29
alert("Не вдалося перемiстити курсор в 29 байт;для змiни номеру кодової сторiнки на CP866;Зробiть це за допомогою visual foxpro 7; use "+alltrim(cFile)+" exclusive; i виберiть 866 кодову сторiнку")
Fclose(nFile)
return NIL
endif
cStream=chr(101) //chr(201) for cp1251
nWriteBites:=Fwrite(nFile, cStream, 1)
nStatus:=FError()
if nWriteBites<>1
Alert("Не вдалося змiнити номер кодової сторiнки в файлi:;"+cFile+";"+"Код помилки ДОС: "+ltrim(str(nStatus)))
endif

FClose(nFile)
Return NIL


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



Пост N: 82
Зарегистрирован: 30.05.11
ссылка на сообщение  Отправлено: 05.02.13 00:17. Заголовок: Задача скорее не име..


Задача скорее не имеет решение, но все же сформулирую.
Клиентам раздается программа с заполненной данными базой:
tin c 10
sum n 16.2
fio c 60
Клиент на основе данных этой базы с помощью программы создает новую базу:
tin c 10
tin_cl c 10
sum n 16.2
sum_cl n 16.2
fio c 60
fio_cl c 60
Программа после поиска tin или fio в первой базе заполняет пары get полей (tin и tin_cl, sum и sum_cl, fio и fio_cl) одинаковыми значениями и если некоторые данные неверные, клиент должен исправить их в полях tin_cl, sum_cl, fio_cl. Поля tin, sum, fio недоступные для редактирования и отображают значения из первой базы.
В первую базу заносились данные прогой, использующей 866 кодовую станицу (но через использование сторонних программ в первой базе присутствуют данные в разных кодировках.
Во вторую базу в поля *_cl данные заносятся в кодовой странице 1125 (используется кейрус)
Требуется данные в поле fio_cl перекодировать в 866 кодовую страницу.


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




Пост N: 2625
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 05.02.13 11:38. Заголовок: SergeyKorotun пишет:..


SergeyKorotun пишет:

 цитата:
Во вторую базу в поля *_cl данные заносятся в кодовой странице 1125 (используется кейрус)
Требуется данные в поле fio_cl перекодировать в 866 кодовую страницу.


Сделай эту программу на хХарборе, отличия от Клипера минимальны, и заморачиватся с кодировками не будешь.
Как сделать программу на хХарборе смотри http://clipper.borda.ru/?1-6-0-00000002-000-0-0-1355737108

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



Пост N: 83
Зарегистрирован: 30.05.11
ссылка на сообщение  Отправлено: 06.02.13 02:00. Заголовок: Andrey пишет: Сдела..


Andrey пишет:

 цитата:
Сделай эту программу на хХарборе, отличия от Клипера минимальны, и заморачиватся с кодировками не будешь.


Заморачиваться придется, так как исходная база (сp1125) берется с одной чужой проги, с помощью клипперовской проги правится база (ср866) другой чужой проги, используя данные с первой базы.
Помогла бы утилита наподобии кейруса, но переводящяя коды символов не в ср1125, а в ср866. Существует такая?

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




Пост N: 2629
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 06.02.13 09:21. Заголовок: SergeyKorotun пишет:..


SergeyKorotun пишет:

 цитата:
Существует такая?


Не знаю !

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

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