Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Преобразование строк / 7 сообщений из 7, страница 1 из 1
19.04.2006, 10:38
    #33675574
Feg16
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Преобразование строк
Имеется таблица, в ней хранятся строки, сформированные через Fox,
они разбираются алгоритмом

Код: plaintext
value = ASC(SUBSTR(stroka,  1 ,  1 )) *  256  + ASC(SUBSTR(stroka,  2 ,  1 ))

При разборе в дельфе, при выборе строки алгоритмом

Код: plaintext
1.
  stroka := Table.Fields[ 0 ].AsString;
  value := (ord (ckod[ 1 ]) *  256  + ord (ckod[ 2 ]) ) /  8 ;

некоторые символы из строки при преобразовании получают другой ASCII код.

Как правильно выбрать данные без потери реальных значений?
...
Рейтинг: 0 / 0
19.04.2006, 13:08
    #33676293
ВладимирМ
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Преобразование строк
Проблема с кодовыми страницами. Один и тот же символ, выглядящий одинаково в разных кодовых страницах будет иметь разный ASCII-код

Когда ты определяешь ASCII код в FoxPro, то символы беруться в текущей кодовой страницы среды FoxPro. Что это за страница можно проверить при помощи

?CPCURRENT()

В момент записи в символьное поле, если существует файл конфигурации CONFIG.FPW (это обычный текстовый файл) со строкой CODEPAGE=1251 происходит автоматическая конвертация полученной строки в кодовую страницу таблицы. Проверить текущую кодовую страницу таблицы можно через функцию

?DBF()

В общем случае, кодовая страница среды FoxPro и файла DBF могут отличаться.

Когда разбираешь в Delphi, то тут уже надо смотреть в какой кодовой странице происходит работа именно в среде Delphi. Как? Я не в курсе. Не работал.
...
Рейтинг: 0 / 0
19.04.2006, 16:26
    #33677091
Feg16
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Преобразование строк
авторсмотреть в какой кодовой странице происходит работа именно в среде Delphi
8) смотреть это влегкую (default by c_1251), а проставить?
...
Рейтинг: 0 / 0
20.04.2006, 11:33
    #33678619
Feg16
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Преобразование строк
Получил данные в двоичном виде, можно как-нить вытащить скэн коды этих данных прямо из кодовой страницы?
...
Рейтинг: 0 / 0
20.04.2006, 15:04
    #33679545
ВладимирМ
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Преобразование строк
Feg16Получил данные в двоичном виде, можно как-нить вытащить скэн коды этих данных прямо из кодовой страницы?
Не понял вопроса. Что подразумевается под фразой "скэн коды" применительно к "данные в двоичном виде"?
...
Рейтинг: 0 / 0
28.04.2006, 12:19
    #33697024
Feg16
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Преобразование строк
Подразумевает вытаскивание скан-кода символа из кодовой странице по его бинарному значению
...
Рейтинг: 0 / 0
28.04.2006, 12:56
    #33697168
ВладимирМ
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Преобразование строк
Feg16Подразумевает вытаскивание скан-кода символа из кодовой странице по его бинарному значению
Как Вы думаете, как физически хранятся символьные данные? Т.е. что именно физически записано на диске? То самое, что Вы прочитали как "бинарное значение"?

Это собственно и есть ASCII-код символа. Вам его надо всего-лишь перевести в десятичное представление.

Но это возвращает к исходной проблеме. Кодовая страница какая? Т.е. сам по себе ASCII-код ничего не значит. Чтобы понять, какой именно символ за ним скрывается надо использовать кодовую страницу.

В файле DBF признак кодовой страницы записан в 29 байте заголовка (первый байт имеет порядковый номер 0). Вот некоторые значения этого байта и чему они соответствуют

x01 - 437 - U.S. MS-DOS
x65 - 866 - Russian MS-DOS
xC9 - 1251 - Russian Windows
x03 - 1252 - Windows ANSI

Надо читать текст файла DBF в той кодовой странице, которая указана в 29 байте заголовка. Тогда разночтений не будет.
...
Рейтинг: 0 / 0
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Преобразование строк / 7 сообщений из 7, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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