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

Вниз

Bde. Как из программы изменить настройки BDE?   Найти похожие ветки 

 
Arrows ©   (2005-11-15 17:34) [0]

Уважаемые мастера. Подскажите пожайлуста как из программы проверить и по необходимости изменить настройки BDE, конкретно Langdriver.


 
Desdechado ©   (2005-11-15 18:19) [1]

 liDriverParam := TStringList.Create();
 liDriverParam.Add( "OPEN MODE=READ/WRITE" );
 liDriverParam.Add( "LANGDRIVER=" + cLangDriver );
 if( cDriver <> "STANDARD" ) then
   liDriverParam.Add( "SQLQRYMODE=SERVER" );
 Session.ModifyDriver( cDriver, liDriverParam );
 liDriverParam.Free;


 
Arrows ©   (2005-11-19 17:17) [2]

Пишу в программе
 
  ...........
  liDriverParam := TStringList.Create();
  liDriverParam.Add( "OPEN MODE=READ/WRITE" );
  liDriverParam.Add( "LANGDRIVER=dBASE RUS cp866" );
  Session1.ModifyDriver( "DBase", liDriverParam );
  Session1.SaveConfigFile;
  liDriverParam.Free;
  Query1.Open;
  ..............

Смотрю BDE administratore действительно изменился на LANGDRIVER=dBASE RUS cp866, но русские буквы печатаются зябами. Если руками в администраторе меняю LANGDRIVER на dBASE RUS cp866, все хорошо, русские буквы печатаются нормально. Что такое может, я что то забыл написать?


 
Desdechado ©   (2005-11-19 20:45) [3]

Session - это автосоздаваемая переменная, к которой по умолчанию привязываются db-компоненты, а что такое Session1 у тебя?

я запамятовал, что нужно писать в cLangDriver - внутренний ID языка или его название. Поэкпериментируй вот с этим:
{----- определение языковых драйверов BDE -----}
function BDE_LangNameToDesc( cLangName: String ): String;
var
 LD: LDDesc;
 hCur: hDbiCur;
begin
 result := "";
 try
   Check( DbiOpenLdList( hCur ) );
   while( DbiGetNextRecord( hCur, dbiNOLOCK, @LD, nil ) = DBIERR_NONE ) do
     if( StrIComp( LD.szName, PChar( cLangName ) ) = 0 ) then
       begin
         result := String( LD.szDesc );
         break;
       end;
 finally
   Check( DbiCloseCursor( hCur ) );
 end;
end;
function BDE_LangDescToName( cLangDesc: String ): String;
var
 LD: LDDesc;
 hCur: hDbiCur;
begin
 result := "";
 try
   Check( DbiOpenLdList( hCur ) );
   while( DbiGetNextRecord( hCur, dbiNOLOCK, @LD, nil ) = DBIERR_NONE ) do
     if( StrIComp( LD.szDesc, PChar( cLangDesc ) ) = 0 ) then
       begin
         result := String( LD.szName );
         break;
       end;
 finally
   Check( DbiCloseCursor( hCur ) );
 end;
end;
procedure TfrmSelectDB.FormCreate( Sender: TObject );
var
 LD: LDDesc;
 hCur: hDbiCur;
begin
 Session.GetDriverNames( cbxDBDriver.Items );
 try
   Check( DbiOpenLdList( hCur ) );
   while( DbiGetNextRecord( hCur, dbiNOLOCK, @LD, nil ) = DBIERR_NONE ) do
     cbxLangDriver.Items.Add( String( LD.szDesc ) );
 finally
   Check( DbiCloseCursor( hCur ) );
 end;
end;


 
Arrows ©   (2005-11-21 19:03) [4]

Все разовбрался, нужно было в писать

"LANGDRIVER=db866ru0"

а не  "LANGDRIVER=dBASE RUS cp866"

Desdechado    Спасибо за ответы и советы.



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

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

Наверх




Память: 0.48 MB
Время: 0.029 c
14-1134720549
Суслик
2005-12-16 11:09
2006.01.15
Проблемы с материнской платой Asus P4P800 E Deluxe.


2-1135446082
SEN
2005-12-24 20:41
2006.01.15
Значение текстового поля в Word


14-1135074541
Holy
2005-12-20 13:29
2006.01.15
Мысли в слух...


1-1134119330
DUDAS
2005-12-09 12:08
2006.01.15
Invalid typecast


14-1134830371
Nic
2005-12-17 17:39
2006.01.15
Воскрешаю старый проект :)