Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Языковые драйверы в BDE [D4, D5, D6, dBase, FoxPro]


Страницы:   1 2

Андрей Брусов ©   (2002-04-04 09:13:00) 

Всем привет! Подскажите как програмно сменить языковой драйвер в BDE. Или как сделать так, чтобы BDE устанавливался на новый компьютер сразу с нужными языками, например: dBASE RUS cp 866, а то по умолчанию там забит ANSII. Чтобы клиенту не приходилось самому настраивать BDE.
И второе, как все-таки настроить Database Desktop, чтобы вместо абракадабры был русский алфавит, чего только не пробовал, ничег не помогает. Заранее благодарен.


deleon   (2002-04-04 11:57:00) [21]

10000 извинений!!!
По спешке забыл включить в пакет DegisyDb.inc
Теперь все в порядке:
http://www.dbwork.kuban.ru/download/degisydb.zip


sniknik   (2002-04-04 11:23:00) [22]

кроме установок в BDE драйвер в таблице прописывается попробуй его изменить.

procedure ChangeLangDriver(DatabaseName, TableName, LDName: string);
var
TblExt: string;
Database: TDatabase;
TblDesc: CRTblDesc;
OptDesc: FLDDesc;
OptData: array [0..250] of Char;
Cur: hDBICur;
Rec: CFGDesc;
begin
if (TableName="") or (LDName="") then raise Exception.Create("Unknown TableName or LDName");
Database:=Session.OpenDatabase(DatabaseName);
try
if Database.IsSQLBased then raise Exception.Create("Function ChangeLangDriver working only with dBase or Paradox tables");
FillChar(OptDesc, SizeOf(OptDesc), #0);
FillChar(TblDesc, SizeOf(TblDesc), #0);
StrCopy(OptDesc.szName, "LANGDRIVER");
OptDesc.iLen:=Length(LDName)+1;
with TblDesc do begin
StrPCopy(szTblName, TableName);
TblExt:=UpperCase(ExtractFileExt(TableName));
if TblExt="DBF" then StrCopy(szTblType, szDbase)
else if TblExt=".DB" then StrCopy(szTblType, szParadox)
else begin
AnsiToOEM(StrPCopy(OptData, DatabaseName), OptData);
if DbiOpenCfgInfoList(nil, dbiREADONLY, cfgPersistent, StrPCopy(OptData, "\DATABASES\"+StrPas(OptData)+"\DB INFO\"),Cur)<>DBIERR_NONE
then raise Exception.Create("Unknown table type");
try
while DbiGetNextRecord(Cur, dbiNOLOCK, @Rec, nil)<>DBIERR_EOF do
if StrComp(Rec.szNodeName, "DEFAULT DRIVER")=0 then begin
StrCopy(szTblType, Rec.szValue);
Break;
end;
finally
Check(DbiCloseCursor(Cur));
end;
end;
iOptParams:=1;
pfldOptParams:=@OptDesc;
pOptData:=@OptData;
end;
StrPCopy(OptData, LDName);
Check(DbiDoRestructure(Database.Handle, 1, @TblDesc, nil,nil, nil, False));
finally
Session.CloseDatabase(Database);
end;
end;

вызов
ChangeLangDriver("D:\", "CASH005.DB", "cyrr");
для dbf
ChangeLangDriver("D:\", "CASH005.DBF", "db866ru0");


Андрей Брусов   (2002-04-04 11:10:00) [23]

Скачал компонент. Установить не получается. Не находит файл с расширением .inc
Неужели нет других путей? Алиасами BDE я не пользуюсь.


deleon   (2002-04-04 10:08:00) [24]

И еще, попробуй вместо Database Desktop -> Database Workshop, функциональность намного выше чем у первого и проблем с кодировкой не возникает!
http://www.dbwork.kuban.ru


Mike S   (2002-04-04 09:59:00) [25]

List.Values["LANGDRIVER"] := "Pdox ANSI Cyrillic";
Session.ModifyAlias(AliasName, List);


deleon   (2002-04-04 09:50:00) [26]

В данном случае очень пригодится компонент TBDEConfig, который позволяет в Run-Time настраивать любые параметры BDE, доступные из BDE Administrator. Взять его можно здесь:
http://www.dbwork.kuban.ru/download/degisydb.zip


Страницы:   1 2

Наверх

Титульная страница Поиск, карта сайта Написать письмо