Вниз
Скачать: 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 вся ветка

Скачать: CL | DM;



Память: 0.46 MB
Время: 0.026 c
14-1135173301
Fl@sh
2005-12-21 16:55
2006.01.15
Пролог и выход с цикла


3-1132044086
Leonid
2005-11-15 11:41
2006.01.15
Файл PDOXUSRS.NET и DBF-файлы


14-1134710721
begin...end
2005-12-16 08:25
2006.01.15
С Днём рождения! 16 декабря


2-1135660324
Рубей
2005-12-27 08:12
2006.01.15
Переход по окнам формы


2-1135271634
oleggar
2005-12-22 20:13
2006.01.15
queryperformance




   Наверх