Недавно добавленные исходники

•  DeLiKaTeS Tetris (Тетрис)  171

•  TDictionary Custom Sort  3 343

•  Fast Watermark Sources  3 095

•  3D Designer  4 852

•  Sik Screen Capture  3 350

•  Patch Maker  3 556

•  Айболит (remote control)  3 665

•  ListBox Drag & Drop  3 018

•  Доска для игры Реверси  81 737

•  Графические эффекты  3 948

•  Рисование по маске  3 253

•  Перетаскивание изображений  2 633

•  Canvas Drawing  2 761

•  Рисование Луны  2 586

•  Поворот изображения  2 195

•  Рисование стержней  2 171

•  Paint on Shape  1 569

•  Генератор кроссвордов  2 240

•  Головоломка Paletto  1 769

•  Теорема Монжа об окружностях  2 237

•  Пазл Numbrix  1 685

•  Заборы и коммивояжеры  2 059

•  Игра HIP  1 282

•  Игра Go (Го)  1 230

•  Симулятор лифта  1 476

•  Программа укладки плитки  1 219

•  Генератор лабиринта  1 548

•  Проверка числового ввода  1 367

•  HEX View  1 497

•  Физический маятник  1 359

 
скрыть


Delphi FAQ - Часто задаваемые вопросы

| Базы данных | Графика и Игры | Интернет и Сети | Компоненты и Классы | Мультимедиа |
| ОС и Железо | Программа и Интерфейс | Рабочий стол | Синтаксис | Технологии | Файловая система |



Delphi Sources

Как программно изменить LangDriver для таблиц dBase и Paradox



Автор: Nomadic

Откpываешь help и смотpишь:


.......
var List:TStrings;
.......
BEGIN
.......
List.Add ( 'LANGDRIVER=db866ru0 ');
.......
Session.ModifyDriver( 'DBASE', List );
.......
END;

Это действие я пpовожy пеpед откpытием таблицы

Автор: Ivan Sboev

Это о "русификации" таблицы. В таблицах dBase и Paradox имеется байт, который определяет CodePage содержимого таблицы. Раньше он не использовался и был зарезервирован. Тебе нужно его правильно установить. Это делается через DBD Restructure table. Если хочешь программно, можешь воспользоваться следующей процедурой:


uses DbiTypes, DbiProcs, DbiErrs, DB, WinProcs, SysUtils;

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( 'DBDEMOS', 'EMPLOYEE', 'ancyrr' );
ChangeLangDriver( 'DBDEMOS', 'EMPLOYEE.DB', 'ancyrr' );
ChangeLangDriver( 'C:\DELPHI\DEMOS\DATA', 'CLIENTS.DBF', 'db866ru0' ); 

LDName:
для D1 - имя .LD файла в каталоге IDAPI\LANGDRV;
для D2 и CB - из BDECFG32.HLP поле Short name в табличке по указателю language drivers, dBASE или поле Internal в табличке по указателю language drivers, Paradox;
для D3 и выше - не знаю так как у меня её нет, но думаю, что также, как и в D2.





Похожие по теме исходники

Нейросеть для распознавания образов

Механизм станка качалки для нефти

Весы для взвешивания

Кувшины для воды

 

Доска для игры Реверси

Создание таблиц в Paradox

Таблица совместимости продуктов питания




Copyright © 2004-2024 "Delphi Sources" by BrokenByte Software. Delphi World FAQ

Группа ВКонтакте