Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

русский язык [D5, dBase, FoxPro, Paradox]


windows ©   (2004-05-12 18:22:00) 

есть таблица table.dbf. При её просмотре в DBGrid вместо русских букв - '#'. Манипуляции с BDE не помогают, русский шрифт появляется только после изменения Table Language через Database Desktop. Как программно установить русский язык в таблице?


LaidBack   (2004-05-12 19:44:00) [1]

А подобрать правильную кодировку визуально поможет Abidesktop:
http://www.degisy.com/download.php


sniknik   (2004-05-12 18:59:00) [2]

эту я когдато сам писал, (переписывал) в основном выдрав из хелпа борланда (похоже не только я так ;о) если оно узнаваемо).
у меня и сейчас работает.


windows   (2004-05-12 18:49:00) [3]

это процедура из советов Озерова? Она у меня отлично вешает программу, но язык при этом не меняет


sniknik   (2004-05-12 18:45:00) [4]

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(понятно, понятно, 'cyrr'{db866ru0});


windows   (2004-05-12 18:40:00) [5]

ну так я ttable и использую


KillOfCats   (2004-05-12 18:35:00) [6]

Попробуй таблицу подключить через компонент Table


KillOfCats   (2004-05-12 18:31:00) [7]

К ТАБЛИЦЕ


KillOfCats   (2004-05-12 18:29:00) [8]

Через какой компонент ты осуществляешь доступ к странице?


Наверх

Титульная страница Поиск, карта сайта Написать письмо