powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Конвертирование codepage 1251 в 866
10 сообщений из 10, страница 1 из 1
Конвертирование codepage 1251 в 866
    #34036700
rino_lan
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Всем привет ! Натолкните на мысль. Проблемка следующая. В папке есть куча DBF-файлов с кодовой страничкой 1251. Есть желание программно конвертировать
их в 866. Заполняю ADIR()-ом массив.Организую цикл по кол-ву файлов и при открытии таблицы появляется окно диалога выбора codepage. Это все хорошо , но
в том случае , если таблиц не более десятка. В моем случае - их более 300. Заранее спасибо.
...
Рейтинг: 0 / 0
Конвертирование codepage 1251 в 866
    #34036801
Фотография Владимир СА
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А использовать cpzero.prg НЕ пробовали???
...
Рейтинг: 0 / 0
Конвертирование codepage 1251 в 866
    #34037100
rino_lan
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Владимир , а если подробнее.
...
Рейтинг: 0 / 0
Конвертирование codepage 1251 в 866
    #34037151
Фотография Владимир СА
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Посмотри файлик:
...\Microsoft Visual FoxPro 9\Tools\Cpzero\Cpzero.prg

И еще. В Config.fpw строка
Код: plaintext
Codepage =  1251 
стоит???
...
Рейтинг: 0 / 0
Конвертирование codepage 1251 в 866
    #34037176
rino_lan
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Владимир , спасибо за подсказку . Сейчас буду пробовать.
...
Рейтинг: 0 / 0
Конвертирование codepage 1251 в 866
    #34037638
Фотография ВладимирМ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
rino_lanВсем привет ! Натолкните на мысль. Проблемка следующая. В папке есть куча DBF-файлов с кодовой страничкой 1251. Есть желание программно конвертировать
их в 866. Заполняю ADIR()-ом массив.Организую цикл по кол-ву файлов и при открытии таблицы появляется окно диалога выбора codepage. Это все хорошо , но
в том случае , если таблиц не более десятка. В моем случае - их более 300. Заранее спасибо.
Здесь что-то в Вашей логике не правильно.

Если таблица уже имеет признак кодовой страницы, то окно диалога выбора CodePage не появляется.

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

Почитай описание следующих команд и функций

CPDBF()
CPCURRENT()
SET CPDIALOG
...
Рейтинг: 0 / 0
Конвертирование codepage 1251 в 866
    #34038548
ORAselect
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Кодовая страница - это 29 байт в заголовке файла. Если в него записать 0, то при вызове из FoxPro система выведет запрос.
int main{
FILE * f;
f=fopen("C:\\My.dbf","r+");
fseek(f,28,0);
fputs('\0',sizeof(char),1,f);
fcloce(f);
}


Смысл во всяком случае именно такой. Если есть компилятор С, получите срумент для сбития бита кодировки. Может есть косяки -компилятор образумит.
...
Рейтинг: 0 / 0
Конвертирование codepage 1251 в 866
    #34038559
ORAselect
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Если придется, можно перекодировать. Это просто: минусуйте 96 от символа и будет 1251->866. Прибавьте 96 будет 866->1251. Можно сделать простенький цикл по строке. Работает быстро.
...
Рейтинг: 0 / 0
Конвертирование codepage 1251 в 866
    #34038663
GoshaS
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Может что нибудь наподобие вот такого?
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
IF ADIR(a_file, 'oldFile\*.dbf')# 0    
  FOR i= 1  TO ALEN(a_file,  1 )
      lсFile=ALLTRIM(a_file(i,  1 ))
     use &lcFile alias t_tmp
     AFIELDS(a_tmp)
     CREATE table 'newFile\&lcFile'  codepage= 866  FROM ARRAY a_tmp
     APPEND FROM 'oldFile\&lcFile' as  866 
     use in &lcFile
  ENDFOR
endif  
...
Рейтинг: 0 / 0
Конвертирование codepage 1251 в 866
    #34038673
GoshaS
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Если просто кодовую страницу пометить
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
IF ADIR(a_file, 'oldFile\*.dbf')# 0    
	LOCAL lcFile
	FOR i= 1  TO ALEN(a_file,  1 )
		lcFile=ALLTRIM(a_file(i,  1 ))
		DO prg\cpzero WITH 'oldFile\&lcFile' ,  866 
	ENDFOR 
endif 
...
Рейтинг: 0 / 0
10 сообщений из 10, страница 1 из 1
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Конвертирование codepage 1251 в 866
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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