Акжан в сети - На уровень вверх(BDE) Как заставить работать BDE с русским текстом в кодировке ISO 8859-5?

Здесь будет описана методика превращения набора символов BDE 5.01, скажем, dBase 868, в набор символов ISO 8859-5.

Методика такая:

  1. Открываем charset.cvb любым hex editor-ом;
  2. Ищем строку "868";
  3. Находится строка "BTCVD4868" - именно то, что надо;
  4. Прокручиваемся вниз. Сначала будет много $FF, потом пойдет весь набор символов разделенный нолями: 00 00 01 00 02 00 03 00 и т. д.;
  5. Это таблица перекодировки ANSI -> OEM для 868 кодовой страницы;
  6. После 7E 00 7F 00 пропускаем 96 байт (2 байта на символ, буквы в ISO начинаются с $B0, $B0 - $80 = $30, $30 * 2 = $60, $60 = 96);
  7. Запоминаем это смещение (у меня оно $ED72h);
  8. Ищем строку "866". Находим "BTCVD2866";
  9. Прокручиваемся вниз, пропускаем $FF, находим набор символов, как в п.4;
  10. Находим последовательность 7E 00 7F 00;
  11. Отмечаем дальнейшую последовательность от 10 04 11 04 12 04 до 3D 04 3E 04 3F 04;
  12. Копируем ее на смещение из п.7;
  13. Повторяем п.4;
  14. Прокручиваемся дальше, за таблицу ANSI -> OEM, там опять будет много $FF, после них будет обратная таблица перекодировки OEM -> ANSI, такая же, как и в п.4;
  15. Ищем последовательность 7E 00 7F 00, пропускаем после нее $150 байт (установлено методом научного тыка), начиная с этого смещения (у меня $F486) заносим байты B0 00 B1 00 B2 00 .... ED 00 EE 00 EF 00;
  16. Все. Далее указываем dBase BUL 868 для langdriver-а BDE-шного алиаса.

При открытии таблицы с этого алиаса она будет перекодироваться OEM (то есть ISO) <-> ANSI.

Konstantin Popenko

2:5040/31.13