Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2003.12.30;
Скачать: CL | DM;

Вниз

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

 
dmtr ©   (2003-12-04 13:53) [0]

Возникла необходимость обработать данные, записанные в таблице
FP 2.6. Подулючаюсь через BDE компоненты не используя алиасов.
Проблема в том, что русские буквы криво отображаются. Подскажите, как эту ситуацию можно поправить?


 
Andrey V. ©   (2003-12-04 15:08) [1]

Может так ?
procedure TLogForm.MakeRusCP(FileName:string);
var
F:TFileStream;
Fanny:byte;
begin
F := TFileStream.Create(FileName, fmOpenReadWrite);
try
// русификация
F.Seek(29, soFromBeginning);
Fanny := 38;
F.Write(Fanny,1);
// а заодно избавляемся от индексов
F.Seek(28, soFromBeginning);
Fanny := 0;
F.Write(Fanny,1);
finally
F.Free;
end;
end;

As is .


 
dmtr ©   (2003-12-04 15:16) [2]

А если таким образом модифицированный файл снова открыть в FP 2.6 под ДОСом, то что мы увидим?


 
HSolo ©   (2003-12-04 15:53) [3]

Зачем же файл портить?
Просто langdriver укажите: dBASE RUS cp866


 
Andrey V. ©   (2003-12-05 08:55) [4]

Ничего не будет. (в смысле - ничего плохого) Досу на эти байты наплевать, он на них не смотрит.
Содержание- то полей не меняется.


 
Anatoly Podgoretsky ©   (2003-12-05 09:21) [5]

Andrey V. © (05.12.03 08:55) [4]
Не будь таким наивным, смотрит и еще как, а если ты не умеешь писать программы для Фокса или не знаешь как он работает, то не давай такие зверские методы, а то подведешь человека под монастырь.

Но может ты его не долюбоиваешь и специально такой совет даешь?


 
RUYurik ©   (2003-12-05 09:34) [6]


> HSolo © (04.12.03 15:53) [3]

Ты прав! нужно "dBase 866 RUS" поставить.

> Anatoly Podgoretsky © (05.12.03 09:21) [5]
> Andrey V. © (05.12.03 08:55) [4]
> Не будь таким наивным, смотрит и еще как, а если ты не умеешь
> писать программы для Фокса или не знаешь как он работает,
> то не давай такие зверские методы

Я когда сталкивался с этим - делал так
With Table do
begin
ZeroByte:=$00;
FileDBF:=TFileStream.Create(DatabaseName + "\" + TableName,fmOpenReadWrite or fmShareExclusive);
FileDBF.Position:=$1C; //Отрыв ндексов
FileDBF.Write(ZeroByte,1);
FileDBF.Position:=$1D; //Обнуление кодовой страницы
FileDBF.Write(ZeroByte,1);
FileDBF.Free;
end;
И под ДОС"ом он работал отлично, разве только в нем не было прописано индексов. А на кодовую страницу ему действительно наплевать


 
Andrey V. ©   (2003-12-05 15:00) [7]

2 Anatoly Podgoretsky
То что мы признак индекса убираем, понятно надо и ?.cdx удалить.
И ясно надо понимать к чему это приведет и для чего это мыделаем.
Насчет 29 байта , уверяю Fox 2.6 его не смотрит.
А вообще я там внизу мелко приписал "As is" :-)
Во всяком случае это пример из моей программы (пусть и наивной :))
которая работает с фоксовыми базами вместе(не паралельно естественно) с досовской прогой.
Впрочем оставляю небольшой процент на мою непровоту :-\



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

Текущий архив: 2003.12.30;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.019 c
1-99529
чайник
2003-12-16 14:38
2003.12.30
Ошибка класса EDatabaseError


3-99462
RDen
2003-12-05 14:01
2003.12.30
Как восстановить удалённые записи из *.DBF?


6-99693
Bart
2003-11-01 21:51
2003.12.30
TCPSERVER - HELP!


14-99737
Chuha
2003-12-08 08:27
2003.12.30
Гробница фараона


14-99709
Dimman1
2003-12-09 11:16
2003.12.30
Использование снифферов в сети с коммутаторами