Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Базы";
Текущий архив: 2002.04.25;
Скачать: [xml.tar.bz2];

Вниз

Языковые драйверы в BDE   Найти похожие ветки 

 
Андрей Брусов   (2002-04-04 09:13) [0]

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


 
deleon   (2002-04-04 09:50) [1]

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


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

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


 
deleon   (2002-04-04 10:08) [3]

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


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

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


 
sniknik   (2002-04-04 11:23) [5]

кроме установок в 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");


 
deleon   (2002-04-04 11:57) [6]

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


 
Андрей Брусов   (2002-04-04 16:01) [7]

Спасибо за компонент, установил. С BDEConfig все нормально, а вот BDEInfo.UpdateInfo почему-то не срабатывает. В чем дело?


 
deleon   (2002-04-04 16:04) [8]

Сейчас проверю, а где не срабатывает в Design-Time или Run-Time,
может ничего не изменялось с предыдущего апдэйта, вот и кажется что не работает?


 
deleon   (2002-04-04 16:08) [9]

Update info работает, только это происходит незаметно, тк вероятно не изменилось ни количество сессий, ни количество пользователей и т.д.


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

Поменял все драйверы на "acsii", а Update выдает по прежнему RUS866. На обоих этапах.
Вот код, посмотри:

BdeInfo1.UpdateInfo;
If BdeInfo1.LangDriver <> "dBASE RUS cp866" Then
BdeConfig1.Execute;


 
deleon   (2002-04-04 16:18) [11]

BdeInfo выдает язык с которым был инициализирован сам BDE, а не конкретный драйвер (Paradox, dBase), чтобы изменить язык BDE по-умолчанию, необходимо его переинициализировать с другим языком. Собственно langdriver bde ни на что не влияет! Важно какой langdriver стоит у драйвера доступа к СУБД! А BDEConfig в твоем случае устанавливает язык для драйвера доступа к таблицам dBase, чтобы убедиться в том что он его корректно устанавливает, можно посмотреть нужную ветвь при помощи BDE Administrator. Все работает, удачи!


 
deleon   (2002-04-04 16:20) [12]

Наверное пора садиться писать статьи по работе BDE, хотя BDE потихоньку сдает позиции ADO :)))


 
Андрей Брусов   (2002-04-04 16:26) [13]

Да я понял, что Info берет сведения из раздела SYSTEM/INIT, но как тогда програмно определить драйвер доступа к СУБД. Можно конечно при каждом запуске программы запускать BDEConfig, но зачем если это можно сделать один раз, а потом просто проверять драйвер?
А вообще классная штука, спасибо еще раз.


 
Lusha   (2002-04-04 16:37) [14]

>deleon
>...BDE потихоньку сдает позиции ADO

Ой, ли?


 
deleon   (2002-04-04 16:42) [15]

Так нужно один раз и навсегда установить драйвер для dBase в этой ветке:
\DRIVERS\DBASE\INIT\LANGDRIVER=db866ru0


 
Андрей Брусов   (2002-04-05 09:19) [16]

Сообщение для deleon.
Привет! При запуске приложения на другом компьютере, появилось сообщение о необходимости библиотеки DegisyDb6.bpl
Ее нужно в дистрибутив включать? Или как?


 
deleon   (2002-04-05 09:37) [17]

Нет не нужно! Посмотри в свойствах проекта, не стоит-ли галочка использования пакетов? Сейчас я и сам проверю все :)))


 
deleon   (2002-04-05 09:40) [18]

Нашел ошибку:
Нужно зайти в опции пакета и установить свойства:
Designtime only и Rebuil as needed.
И перекомпилировать пакет, должно все заработать, а я сейчас обновлю download. Спасибо :)))


 
Андрей Брусов   (2002-04-05 09:55) [19]

Тогда еще одна задачка, может это связано с предыдущей, не знаю. В общем на компе с Windows XP, приложение при запуске требует rtl60, расширение не помню. Посмотри если есть возможность.


 
deleon   (2002-04-05 10:00) [20]

К сожалению, нет Windows XP...Но думаю это все из предыдущей песни, кстати я обновил download DegisyDb.


 
Андрей Брусов   (2002-04-05 12:08) [21]

Нет не из той. Проблема вот в чем. Если строю свой проект без DegisyDb6.dcp (не ставлю галочку в опциях и не добавляю туда пакет), то при компиляции приложения Delphi не находит BdeConfig.dcu, а если строю с пакетами даже с одним DegisyDb6, то при запуске приложения запрашивается rtl60.bpl, хотя она никакого отношения к твоим компонентам не имеет. Что делать?


 
deleon   (2002-04-05 12:27) [22]

Пропиши пути к библиотеке, ведь файл BdeConfig.pas есть!


 
Андрей Брусов   (2002-04-05 12:52) [23]

Да ни к чему чужие исходники курочить. Может просто при установке компонентов все *.dcu копировать в какой-то доступный дельфийский каталог. Где у Delphi свои *.dcu храняться? Чтобы не подключать дополнительные пакеты. Или это невозможно?


 
Андрей Брусов   (2002-04-05 13:07) [24]

В общем получилось. Скопировал bdeConfig.dcu в каталог LIB и все заработало. Слушай, а может я не из того места устанавливал компоненты, может перед установкой весь пакет куда-то надо помещать? Просто раньше никогда не доводилось, обходился тем, что есть.


 
deleon   (2002-04-05 13:58) [25]

Я делаю так:
Путь к Delphi: C:\Delphi6\Delphi6\Bin...
Путь к левым компонентам: C:\Delphi6\Adds\...
Копирую файлы DegisyDb сюда:
C:\Delphi6\Adds\DegisyDb\
Затем компилирую и инсталлирую пакет DegisyDb.dpk
И затем прописываю путь к библиотеке в настройках:
C:\Delphi6\Adds\DegisyDb\
-----------------------------------
Все работает :)))
А копировать в Lib чужие dcu не советую, будет бардак :)))


 
Андрей Брусов   (2002-04-06 09:08) [26]

Так и сделал. Все работает, большое спасибо. Удачи.



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

Форум: "Базы";
Текущий архив: 2002.04.25;
Скачать: [xml.tar.bz2];

Наверх















Память: 0.91 MB
Время: 0.045 c
6-81010
Hyper-X
2002-01-18 21:22
2002.04.25
помогите!!!!


7-81099
МИФИст
2002-01-25 15:21
2002.04.25
Память...


1-80928
Абдурашид
2002-04-11 10:59
2002.04.25
Помогите сделать


1-80884
VlNek
2002-04-11 08:58
2002.04.25
Имя компонента как переменнная


1-80967
DenKop
2002-04-11 13:35
2002.04.25
Сообщение другой программе.





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский