Автор: Rob Edgar
...из исходного кода VCL я обнаружил, что при назначении значения
DB-полю, имеющему строковый тип, значение "проходит" через функцию
ANSItoNative, что может привести к изменению (порче) ASCII-данных.
Вот так...
Как 16-, так и 32-битные версии IDAPI.CFG устанавливаются с
драйвером языка Paradox 'ascii'.
Я создал простое приложение, записывающее в db-поле значения
ASCII в диапазоне 0-255 и затем проверяющее их на предмет
появившихся различий..... различия между 16- и 32-битной версией не
так велики... для примера... в первых 130 значениях получается
следующее преобразование: 16-бит: 21->182 22->167 31->33 130->128
32-бит: 130->128 Очевидно достаточно
просто "исправить" 32-битные приложения, чтобы добиться такого же
результата, что и получаемые 16-битными приложениями, НО я не уверен
что решив проблему на моем PC, я решу ее у остальных пользователей,
поскольку могут отличаться установки, драйверы языка... и пр.
После того как я проверил все возможные варианты, я составил
таблицу и занес туда пять возможных значений, которые могут
отличаться под Delphi2 и Delphi1: Значение ASCII Delphi1 Delphi2
21 182 21
22 167 22
33 31 33
132 102 132
255 121 255 |