![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Проблема с кодировкой [D6]
Шурик Ш © (2002-10-18 16:07:00)Как открыть таблицу DBF c кодировкой ""ascii" ANCI", а то она у меня в ДБ-гриде открывается нак набор закорючек.
Anatoly Podgoretsky (2002-10-19 19:25:00) [1]NewDriverParams.Add("LANGDRIVER = db866ru0");
Если у тебя это, то это никак не ANSI ascii
Кроме прочего учти, что ANSI ascii это не русский, а обощенное имя локализации системе, то есть на машине с французкой локалью это будет французкий.
Но все это ерунда, все будет зависить а что реально у тебя в таблице и где ты будешь это использовать, используется ли перекодировка полей, какие шрифты используются для показа, какой у них указан скрипт (charset)
lejik (2002-10-19 18:59:00) [2]Я делал так:
procedure TForm1.FormCreate(Sender: TObject);
var MyList:TStrings;
begin
MyList:=TStringList.Create;
MyList.Clear;
Session.Close;
try
MyList.Add("LANGDRIVER=""""acsii""ANSI""");
Session.ModifyDriver("Microsoft FoxPro VFP Driver (*.",MyList);
Session.Open;
except
on E: Exception do
MessageBox(Handle,PChar(E.Message), ("Error"), MB_ICONERROR+MB_OK);
end;
Session.SaveConfigFile;
dm2.Table1.Active:=true;
Reindeer Moss Eater (2002-10-18 18:55:00) [3]Посмотри в какой реально кодировке данные в таблице. Например с помощью вьюера в FAR
Шурик Ш (2002-10-18 18:29:00) [4]Вместо алеаса пишу просто путь к БД. В этом случае, что писать вместо алеаса в вызове GetConfigParams?
Reindeer Moss Eater (2002-10-18 17:45:00) [5]Посмотри в какой реально кодировке данные в таблице. Например с помощью вьюера в FAR
Шурик Ш (2002-10-18 17:41:00) [6]Да, действительно, там уже и так db866ru0, а почему ж он тагда все криво отображает?
Reindeer Moss Eater (2002-10-18 17:26:00) [7]В предпоследней строке конечно же не cList, а NewDriverParams
Reindeer Moss Eater (2002-10-18 17:25:00) [8]1. Создать список параметров
2. Получить в него параметры по умолчанию
Session.GetConfigParams("\DRIVERS\%s\INIT","DBASE",NewDriverParams);
Session.GetConfigParams("\DRIVERS\%s\TABLE CREATE","DBASE",NewDriverParams);
3. Изменить параметр языка
cList.Values["LANGDRIVER"]:="db866ru0";
4.Session.ModifyDriver
Шурик Ш (2002-10-18 17:14:00) [9]Что я деляю неправильно?
NewDriverParams:=TStringList.Create;
NewDriverParams.Add("LANGDRIVER = db866ru0");
Session.ModifyDriver("DBASE", NewDriverParams);
Reindeer Moss Eater (2002-10-18 16:51:00) [10]Session - глобальный экземпляр класса TSession, автоматически создаваемый Delphi - 1 шт.
Шурик Ш (2002-10-18 16:46:00) [11]Ничего не понимаю! Кошмар, какой-то!
Еще раз...
У меня:
Query - 1 шт.
DataSource - 1 шт.
DBGrid - 1 шт.
А что такое Session?
Reindeer Moss Eater (2002-10-18 16:37:00) [12]Session.ModifyDriver(....)
Но не все так просто. В заголовке DBase может быть указано, что язык таблицы ANSI, а реально содержатся данные в сp866
Шурик Ш (2002-10-18 16:36:00) [13]Типа, Up!
Шурик Ш (2002-10-18 16:24:00) [14]А как его настроить програмно?
Мне присылают файлы в таком формате, поэтому для каждого из них заниматься таким гемороем тяжело. Куда проще заложить это в саму прогу!
Reindeer Moss Eater (2002-10-18 16:21:00) [15]Тогда настрой параметр LANGDRIVER для DBase и все
Шурик Ш (2002-10-18 16:20:00) [16]Под словом "открыть" я подразумеваю "открыть в читабельном виде".
Reindeer Moss Eater (2002-10-18 16:18:00) [17]TTable.Open;
TTable.Active:=True;