Magistr(ru) |
Отправлено: 14.11.2003, 04:37 |
|
Ученик-кочегар
Группа: Участник
Сообщений: 20
|
1) Допустим маска в MaskEdit1 задана Date(например 01.01.03) , а у меня введено только “01.01”. И далее при любом событии выскакивает EDBEditError. Как мне отловить это?
try …catch(EDBEditError &)
ShowMessage(“FFF”); не катит.
2) По поводу Aliases. Если я в Table1->DatabaseName
введу не Alias указанный в BDEAdminestrator, а укажу путь к таблицам (например C:\Tables) не будет ли это ошибкой при переносе БД на другой комп?
3)Знаю что при использовании BDE база данных обращается к BDE, а не на прямую к таблицам. Не будет ли ошибок при переносе БД на другой комп если в Table1->DatabaseName не Alias, а путь?(при учёте что BDE будет установлена).
4)Как программно добавить в win.ini [FontSubstitutes] Arial,0=Arial,204(для русификации таблиц). А перед этим проверить на существование такой строки. И обязательно ли устанавливать BDE в каталог по умолчанию?
(BCB5; WIN98;PARADOX)
|
|
Admin |
Отправлено: 16.11.2003, 18:57 |
|
Владимир
Группа: Администратор
Сообщений: 1190
|
1/ А кто мешает поменять маску, например на !99/99/99;1;_
(или воспользоваться компонентом — и это более правильно
типа DateTimePicker)
2 и 3/ Смотря как Вы работаете с базой. Если на другом компе
база размещена также в C:\Tables то ошибкой это не будет,
все будет работать (для таблиц типа Paradox)
Однако есть вариант лучше (универсальней).
Вообще не прописывайте в Database1 путь к базе
или пропишите путь по умолчанию, а путь вводите
в командной строке (для Windows — пропишите в ярлыке),
и тогда если в командной строке ничего не прописано,
берите путь по умолчанию, если прописано — получите
его значение в ParamStr(1) и пропишите в Database
(при запуске программы)
CODE |
Database1->DatabaseName = "C:\\Tables";
if(ParamStr(1) != "")
Database1->DatabaseName = ParamStr(1);
Label1->Caption = Database1->DatabaseName;
|
В этом случае на разных копьютерах база может находиться
в разных каталогах, в ярлыке к программе лишь пропишите
путь к каталогу на данном компьютере.
|
|
Magistr(ru) |
Отправлено: 17.11.2003, 03:50 |
|
Ученик-кочегар
Группа: Участник
Сообщений: 20
|
1)А как всё-таки отловить??
2,3)У меня зделано так-Query1->DatabaseName=GetCurrentDir()+"\Bas1\\Table1";
Query1->Open();
Никакого Database у меня нету да и зачем он нужен?
А можно ли устанавливать BDE в произвольный каталог например C:\Games? И как БД будет обращаться к BDE? |
|
Admin |
Отправлено: 17.11.2003, 10:21 |
|
Владимир
Группа: Администратор
Сообщений: 1190
|
1 Можете бросить на форму компонент ApplicationEvents и
обрабатывать его событие onEvents
CODE |
void __fastcall TForm1::ApplicationEvents1Exception(TObject *Sender,
Exception *E)
{
if(E->ClassNameIs("EDBEditError") &&
dynamic_cast<TMaskEdit*>(Sender) &&
((TMaskEdit*)Sender)->Name == "MaskEdit1")
{
ShowMessage("Неверный формат даты !");
MaskEdit1->SetFocus();
}
} |
|
|