Главная страница
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.014 c
3-99459
badis
2003-12-03 07:53
2003.12.30
Как сделать так, чтобы БД работала без BDE Administrator


1-99528
velial
2003-12-16 11:56
2003.12.30
Передача параметров в процедуру/функцию


1-99547
Ivolg
2003-12-16 11:18
2003.12.30
Конвертация!


4-99812
DillerXX
2003-11-02 18:32
2003.12.30
Кнопка


1-99555
WG
2003-12-17 18:13
2003.12.30
Как записать данные в конкретный лист Excel-файла ?