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

Вниз

Смена языкового драйвера для DBASE   Найти похожие ветки 

 
Stas Kalishenko   (2004-12-08 14:33) [0]

Есть база в досовской кодировке. После программной смены языкового драйвера в реестре для DBASE ничего не меняется, т.е. в гриде те же зяблики, что и до этой операции, хотя в реестре значение LANGDRIVER меняется. Вот код:

//Функция замены драйвера
procedure ChangeBDELangDriver;
begin
 oldlevel := "3";
 oldlang := "db866ru0";
 tr := TRegistry.Create;
 try
   tr.RootKey := HKEY_LOCAL_MACHINE;
   tr.OpenKey("\SOFTWARE\Borland\Database Engine\Settings\DRIVERS\DBASE\INIT", true);
   oldlang := tr.ReadString("LANGDRIVER");
   tr.OpenKey("\SOFTWARE\Borland\Database Engine\Settings\DRIVERS\DBASE\INIT", true);
   tr.WriteString("LANGDRIVER", "db866ru0");
   tr.CloseKey;
   tr.OpenKey("\SOFTWARE\Borland\Database Engine\Settings\DRIVERS\DBASE\TABLE CREATE", true);
   oldlevel := tr.ReadString("LEVEL");
   tr.OpenKey("\SOFTWARE\Borland\Database Engine\Settings\DRIVERS\DBASE\TABLE CREATE", true);
   tr.WriteString("LEVEL", "5");
   tr.CloseKey;
 finally
   tr.Free;
 end;
 infi := TIniFile.Create(ExtractFilePath(Application.ExeName)+"bdetmp.ini");
 infi.WriteString("BDE", "Lang", oldlang);
 infi.WriteString("BDE", "Level", oldlevel);
 infi.Free;
end;

//Обработчик кнопки
procedure TForm1.Button1Click(Sender: TObject);
begin
 Table1.Close;
 ChangeBDELangDriver;
 Table1.Open;
end;

Получается какая-то чепуха. В реестре устанавливается один драйвер (db866ru0), а в BDE администраторе я вижу другой (ansius0 - так кажется). Т.е. выходит, что все настройки компоненты хватают из bde.cfg, т.е. из БДЕ, который в свою очередь не синхронизируется с реестром. Что не так?


 
HSolo ©   (2004-12-08 15:34) [1]

Боюсь соврать - давно с BDE не работаю; если ошибаюсь, пусть меня поправят - но, по-моему, BDE инициалицируется в initialization модуля dbtables, после чего изменения в реестре ему без разницы :) Лучше воспользуйтесь TSession.ModifyAlias


 
Digitman ©   (2004-12-08 15:56) [2]


> Получается какая-то чепуха


тебе что в конечном итоге надо-то ? видеть НД в нормальной кодировке ? при этом осуществляя доступ к объектам базы с пом. БДЕ ? ну так зачем же сразу в реестре ковыряться ? все замечательно настраивается средствами штатного БДЕ-конфигуратора ..


 
Stas Kalishenko   (2004-12-08 16:21) [3]

>>тебе что в конечном итоге надо-то ? видеть НД в нормальной кодировке ?

Именно. При этом, чтобы при выгрузке приложения все настройки возвращались в исходное состояние, в частности языковой драйвер.

>>все замечательно настраивается средствами штатного БДЕ-конфигуратора ..

А можно поподробнее.


 
HSolo ©   (2004-12-08 18:08) [4]

>Stas Kalishenko   (08.12.04 16:21) [3]

>>все замечательно настраивается средствами штатного БДЕ-конфигуратора ..

>А можно поподробнее

Наверное, имеется в виду BDEAdmin

> чтобы при выгрузке приложения все настройки возвращались в исходное состояние

TSession.ModifyAlias


 
Stas Kalishenko   (2004-12-08 18:19) [5]

Попробовал еще один метод. После выполнения этой процедуры вносятся изменения в bde.cfg и сами изменения видны только после перезапуска приложения, а не в реале. Код ниже:

procedure TForm1.Button2Click(Sender: TObject);
var List:TStringList;
begin
 Table1.Close;
 List := TStringList.Create;
 List.Add("LANGDRIVER=db866ru0");
 //List.Add("LANGDRIVER=DBWINUS0");
 Session.ModifyDriver("DBASE",List);
 Session.SaveConfigFile;
 ShowMessage("Ok!");
 Table1.Open;
 Table1.Refresh;
end;

Что в нем не так? Я думал, что после внесения изменений методом ModifyDriver и сохранения изменений методом SaveConfigFile, Table1.Open покажет в гриде нормальные данные. Ан нет. Нифига. ТОлько после перезапуска.


 
Anatoly Podgoretsky ©   (2004-12-08 20:15) [6]

Все изменения в конфиграциях вступают в действие после пезапуска всех приложений использующих БДЕ


 
Bob ©   (2004-12-09 02:19) [7]

а ты попробуй поменять не драйвер и реестр а заголовок dbf-файла. я эту проблему решил именно так



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

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

Наверх




Память: 0.49 MB
Время: 0.025 c
14-1103021793
Alexander Panov
2004-12-14 13:56
2005.01.09
Выборы в Украине. Противостояние. (Продолжение 4)


3-1102664574
DimonNew
2004-12-10 10:42
2005.01.09
ClientDataSet & UpdateSQL


6-1097925112
Freedom
2004-10-16 15:11
2005.01.09
IPX протокол


3-1102431010
Fedor
2004-12-07 17:50
2005.01.09
Немогу удалить записи из таблицы


11-1085045840
dimon1979
2004-05-20 13:37
2005.01.09
Добавление нового KOL-компонента