![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Bde. Как из программы изменить настройки BDE? [D5, D6, D7, dBase, FoxPro, Paradox]
Arrows © (2005-11-15 17:34:00)Уважаемые мастера. Подскажите пожайлуста как из программы проверить и по необходимости изменить настройки BDE, конкретно Langdriver.
Arrows (2005-11-21 19:03:00) [1]Все разовбрался, нужно было в писать
'LANGDRIVER=db866ru0'
а не 'LANGDRIVER=dBASE RUS cp866'
Desdechado Спасибо за ответы и советы.
Desdechado (2005-11-19 20:45:00) [2]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-19 17:17:00) [3]Пишу в программе
...........
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-15 18:19:00) [4]
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;