ник: Анатолий (Киев)
администратор BDE (если он есть) можно откріть через Панель управления - Администрирование. Но, ИМХО, он вам не нужен.
Если ваш DBF открыть в HEX-редакторе, то в байте со смещением 29 (30-й по счету) увидите 01 - это кодовая страница CP437 (U.S. MS-DOS). Если указать C9 (CP1251) или 00 (системная CP, обычно та же 1251), то через ODBC VFP драйвер таблица откроется с "неиспорченой" кодировкой.
То есть в редакторе я вижу код 144 и хочу чтобы AscB тоже давал 144
|
А с чего вы взяли, что так должно быть? Для символов с кодом выше 127 Asc(), AscB() и AscW() будут совпадать только для CP437. Например (в окне отладки):
?Asc("S")
83
?AscB("S")
83
?AscW("S")
83
?Asc("Б")
193
?AscB("Б")
17
?AscW("Б")
1041
?Chr(193)
Б
?ChrW(1024+17)
Б
Access сам преобразует ANSI в Unicode, используя системную кодовую страницу. Если вас єто не устраивает, но обратное преобразование можно выполнить функцией StrConv("Текст", vbFromUnicode), а затем преобразоват по своему.
Ниже пример процедуры, выдающей в окне отладки ANSI коды и ANSI символы из 1-го поля 1-й строки файла. Там, кстати и код 144 есть.
Sub TestArmDBF()
Dim s$, bytArr() As Byte, i&
s = CurrentDb.OpenRecordset("mvds_4202").Fields(0)
Debug.Print s
bytArr = StrConv(s, vbFromUnicode)
For i = LBound(bytArr) To UBound(bytArr)
Debug.Print i; Tab; bytArr(i); Tab; Chr(bytArr(i))
Next
End Sub
|