Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Базы";
Текущий архив: 2002.05.30;
Скачать: [xml.tar.bz2];

Вниз

Проблема с кодировкой   Найти похожие ветки 

 
DPetrovich   (2002-05-08 12:25) [0]

Пытаюсь подключить dbf-ку сформированную в 1C через ADO, но возникает проблема с кодировкой. Менял настройку CharSet в DBGrid - не помогает... Если кто сталкивался, подскажите, пожалуйста!


 
Reindeer Moss Eater   (2002-05-08 12:28) [1]

Обнули 30-й байт в заголовке dbf


 
MONSTER   (2002-05-08 12:29) [2]

Аналогично! Но я подсоединялся не через ADO. Лазил по ODBC. Программка DBCommander работает через BDE откравает как милая, без проблем! А в Delphi и SQL server-е зябры! Кто поможет решить, отблагодарю, сдам алгоритм движения документов в Бухгалтерии (по DBF-файлам) Как и что делают бухгалтера я не знаю.. :)


 
DPetrovich   (2002-05-08 12:33) [3]

Reindeer Moss Eater, каким образом?


 
Reindeer Moss Eater   (2002-05-08 12:37) [4]

Можно точечным лазерным ударом в нужный магнитный домен на винте.
А можно и используя FileWrite


 
MONSTER   (2002-05-08 12:40) [5]

МЫСЛИ ВСЛУХ: все равно копию делать, я вручную попробовал, не получается! И потом "в заголовке" это где?


 
Reindeer Moss Eater   (2002-05-08 12:41) [6]

В заголовке файла Дибейса конечно же


 
MONSTER   (2002-05-08 12:43) [7]

ВОПРОС!
Как я могу вычленить заголовок, от "ТЕЛА"? Или это просто 30-й байт с начала файла????


 
MONSTER   (2002-05-08 12:44) [8]

Reindeer Moss Eater
Если не в лом:
ICQ 150153967


 
MONSTER   (2002-05-08 12:49) [9]

Слышь, прикалываешься?


 
Reindeer Moss Eater   (2002-05-08 12:51) [10]

Это просто тридцатый байт от начала файла.
Перед тем как это делать надо убедиться что первый байт < $4
Потому что в версиях выше третьей cp хранится по иному


 
MONSTER   (2002-05-08 12:59) [11]

Давай по-простому:
.f......A.......................ID......
или
03660508830000004102DC0000000000000000000000000000000000010000004944000000000000
Как должно быть???
(Это первые байты DBF-а)


 
Reindeer Moss Eater   (2002-05-08 13:02) [12]


function DBaseLangPatch(const fName:string):boolean;
var H:Integer; MyArray:array[1..30] of Byte;
begin
Result:=False;
if not FileExists(fName) then Exit;
FillChar(MyArray,30,0);
try
try
H:=FileOpen(fName,fmOpenReadWrite or fmShareExclusive);
except
MessageDlg("Ошибка монопольного доступа к файлу",mtError,[mbCancel],0);
Exit;
end;
FileRead(H,MyArray,30);
if MyArray[1] >= $04 then
begin
Result:=True;
Exit;
end;
if MyArray[30] <> $0 then
begin
MyArray[30]:=$0;
FileSeek(H,0,0);
FileWrite(H,MyArray,30);
end;
Result:=True;
finally
FileClose(H);
end;
end;


 
Reindeer Moss Eater   (2002-05-08 13:06) [13]

При открытии файла Dbase BDE смотрит что написано в 30 байте заголовка. Если он не равен нулю, то BDE верит, что данные там лежат в той кодовой странице, что написано в заголовке.
Если байт нулевой, БДЕ считает что данные лежат в кодовой странице указанной для Dbase в системных параметрах.


 
MONSTER   (2002-05-08 13:07) [14]

Прикол в том, что 30-й байт у меня 0! СМ образец выше! а откуда ты взял это решение? Может стоит покопать первоисточник? Или ты и есть первоисточник?


 
MONSTER   (2002-05-08 13:09) [15]

Ок! Вот за это спасибо. Есть над чем подумать! Хорошо, др. вопрос а разве Delphi работает не через BDE? СТОП! ODBC? Думаю........


 
Reindeer Moss Eater   (2002-05-08 13:09) [16]

Так и копай первоисточник, формат Dbase открыт, в отличие от парадокса.

Если байт = 0, исправь параметры в BDE админе. Либо у тебя версия dbase > 3


 
MONSTER   (2002-05-08 13:10) [17]

У меня нет! У 1С да! Dbase5!


 
Reindeer Moss Eater   (2002-05-08 13:13) [18]

Если речь идет о файлах экспорта, то попроси у 1C сохранять данные в DBase III.
А иначе изучай формат заголовка Dbase5


 
MONSTER   (2002-05-08 13:22) [19]

Нет! Речь идет не о файлах экспорта! Нужно реалтайм!


 
MONSTER   (2002-05-08 14:00) [20]

YES!!!
Я его сделал! Не через ADO! Все нормально!
Ну!!! Ура!


 
MONSTER   (2002-05-08 14:01) [21]

Ну что же теперь попробуем не через BDE!



Страницы: 1 вся ветка

Форум: "Базы";
Текущий архив: 2002.05.30;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.48 MB
Время: 0.006 c
1-97287
Ender
2002-05-18 18:58
2002.05.30
Структура Unita


1-97277
Well
2002-05-18 16:35
2002.05.30
Excel


3-97112
Cola
2002-05-04 21:39
2002.05.30
DBGridEH


1-97229
Dr.Pipe
2002-05-19 15:44
2002.05.30
А можно изменить значение формы. Та, которая не главная - на глав


3-97156
vne
2002-05-03 17:55
2002.05.30
Select из Query без сохранения на диск





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский