![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Языковые драйверы в BDE [D4, D5, D6, dBase, FoxPro]
Андрей Брусов © (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