Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2007.05.27;
Скачать: CL | DM;

Вниз

Изменить LANGDRIVER для DBase   Найти похожие ветки 

 
lightix   (2007-03-13 09:45) [0]

Как для всех наборов данных (таблицы DBASE) приложения изменить LANGDRIVER, не меняя при этом настройки в BDE, т.е. чтобы все остальные приложения работали с стандартным LANGDRIVER?

В настройках BDE для DBASE указано LANGDRIVER=dBASE RUS cp866 , а мне нужно, чтобы мое приложение работало с LANGDRIVER="ascii" ANSI, и при этом все остальные приложения работали с dBASE RUS cp866. Алиасы создавать нельзя.

Пробовал два способа:
1. На форме поставил TDatabase (DriverName=STANDART), прописал такие параметры:
DEFAULT DRIVER=DBASE
LANGDRIVER=DBWINUS0
У всех наборов данных указал его в качестве DatabaseName.
Кодировка не поменялась.

2. Перед открытием набора данных такой код:
var List:TStrings;
.......
BEGIN
.......
 List.Add ( "LANGDRIVER=DBWINUS0 ");
.......
 Session.ModifyDriver( "DBASE", List );
.......
END;

В таком случае меняются и настройки в БДЕ.


 
ЮЮ ©   (2007-03-13 10:10) [1]

> Алиасы создавать нельзя.

Алиасы можно создавать и на время работы приложениия. см. TSession.ConfigMode

Кстати и в топике о ModifyDriver об этом тоже говорится:


A session’s ConfigMode property determines whether a driver is local to the session, or is available to all applications in the BDE persistent store as long as any BDE clients are active. To save a driver permanently, call the SaveConfigFile method before ending the session.


 
lightix   (2007-03-13 10:30) [2]

Странно, но почему-то у меня сохраняются настройки в конфиге, хотя SaveConfigFile не вызываю...
Перепробовал все ConfigMode


 
lightix   (2007-03-13 10:38) [3]

Может быть это потому, что я работаю с default session?


 
lightix   (2007-03-13 11:11) [4]

Закрыл-открыл IDE, теперь в конфиге не сохраняется....
Но запускаю 2 приложения - одно должно использовать кодировку из конфига (866), а другое - использовать ANSI с помощью ModifyDriver.
Так вот, после ModifyDriver, первое приложение уже тоже с кодировкой ANSI....

Как сделать так, чтобы смену кодировки не видели другие приложения??


 
lightix   (2007-03-13 11:50) [5]

И еще вопрос - если в приложении нужно будет создать 2 таблицы с разными кодировками, то как указать что для одной используй одну кодировку, для другой другую?
Пробовал с разными TSession для каждой таблицы - кодировка выставляется один раз , а второй раз уже не изменяется


 
lightix   (2007-03-13 11:50) [6]

И еще вопрос - если в приложении нужно будет создать 2 таблицы с разными кодировками, то как указать что для одной используй одну кодировку, для другой другую?
Пробовал с разными TSession для каждой таблицы - кодировка выставляется один раз , а второй раз уже не изменяется


 
ЮЮ ©   (2007-03-13 12:10) [7]

> Как сделать так, чтобы смену кодировки не видели другие
> приложения??

Если все-таки посмотреть в сторону "виртуальных" алиасов и там устанавливать LANGDRIVER, а не менять глобальный LANGDRIVER для DBASE ?

> если в приложении нужно будет создать 2 таблицы с разными
> кодировками

Кому, интересно, такое нужно?
Создавать две TDataBase и использовать для разных таблиц разные базы. Вот только запросом из двух таблиц сразу вряд ли что получишь путное.


 
Desdechado ©   (2007-03-13 12:22) [8]

http://delphimaster.net/view/2-1173690419/


 
lightix   (2007-03-13 13:13) [9]


> ЮЮ ©   (13.03.07 12:10) [7]
> >Если все-таки посмотреть в сторону "виртуальных"
> алиасов и там устанавливать LANGDRIVER, а не менять глобальный
> LANGDRIVER для DBASE ?

А как менять у алиаса LANGDRIVER?

> если в приложении нужно будет создать
> 2 таблицы с разными > кодировкамиКому, интересно, такое
> нужно?Создавать две TDataBase и использовать для разных
> таблиц разные базы. Вот только запросом из двух таблиц сразу
> вряд ли что получишь путное.

Нужен не запрос из двух таблиц. В общем ПО работает на DBASE с кодировкой 866, а на вход могут прийти DBF как 866 так и ANSI, присылают каждый раз как захотят, и таблицы то DBASE то FOXPRO. Приходится каждый раз брать входной файл и вручную перекодировать, сохранять в "своем формате", и только тогда уже подсовывать его ПО. Хотелось бы, чтобы входной файл подхватывался автоматически.


 
ЮЮ ©   (2007-03-13 13:27) [10]

> А как менять у алиаса LANGDRIVER?

Точно, у STANDARD c параметрами не густо, т.е. он как раз и работает, похоже с тем, что в NATIVE/DBASE стоит :(


 
lightix   (2007-03-13 13:34) [11]


> Точно, у STANDARD c параметрами не густо, т.е. он как раз
> и работает, похоже с тем, что в NATIVE/DBASE стоит :(

Вот и я о том же... :(


 
Desdechado ©   (2007-03-13 13:45) [12]

> Нужен не запрос из двух таблиц
Ты вычитал совсем не то, что нужно. И пропустил нужное. Tsession - там настройка LangDriver.

Но, судя по всему, тебе просто придется читать байт кодировки из заголовка DBF и выставлять нужную кодировку в своем Session.


 
lightix   (2007-03-13 13:49) [13]


> Desdechado ©   (13.03.07 13:45) [12]
>  Tsession - там настройка LangDriver.Но, судя по всему, тебе просто >придется читать  байт кодировки из заголовка DBF и выставлять нужную >кодировку  в своем Session.

Не выставляется! Верней выставляется один раз, а потом уже не изменяется больше. TSession разные для двух таблиц.



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

Текущий архив: 2007.05.27;
Скачать: CL | DM;

Наверх




Память: 0.5 MB
Время: 0.043 c
8-1158306298
megasecure
2006-09-15 11:44
2007.05.27
Графика в Delphi


2-1177655982
ОльгаС
2007-04-27 10:39
2007.05.27
Ehlib и инсталяция


4-1166789398
AMS
2006-12-22 15:09
2007.05.27
функия GetModuleUsage


2-1178622434
npu3pak
2007-05-08 15:07
2007.05.27
Блокировка клавиатуры, мышки и их комбинаций


2-1178504800
Konus
2007-05-07 06:26
2007.05.27
работа со string ом