BDE: Paradox - Language Driver

8 отговора 251 прегледа
#1

BDE: Paradox - Language Driver

Тука възникна следното питане - как може програмно :-) да се промени настройката на LANGDRIVER в BDE Administrator | Configuration | Drivers | Native | Paradox


...a shell surrounding emptiness and loneliness, a core of pain...
Отговор
в отговор на Vladi #2

Re: BDE: Paradox - Language Driver

Ako iskash da syzdadesh tablica s lang. driver ANSI_Cyrillic, sled CreateTable pishesh

SetParadoxTableLanguage(Tablica, 'ANCYRR');

Shte ti trqbwa tozi unit:

unit pdxtable;

interface

uses
DBTables, SYSUtils;

function SetParadoxTableVersion(TablePathName : String; Version : Integer) : Boolean;
function SetParadoxTableBlockSize(TablePathName : String; BlockSize : Integer) : Boolean;
function SetParadoxTableLanguage(TablePathName, LangDriver : String) : Boolean;
function SetParadoxTableStrictIntegrity(TablePathName : String; StrictIntegrity : Boolean) : Boolean;

implementation

uses
DB, BDE;

function RestructureParadoxTable(Table : TTable; Option, OptData: String) : Boolean;
var
hDb: hDBIDb;
Res : DBIResult;
TableDesc : CRTblDesc;
FieldDesc : FLDDesc;
begin
If (Table.Active and Not Table.Exclusive) Then Table.Close;
If (Not Table.Exclusive) Then Table.Exclusive := True;
If (Not Table.Active) Then Table.Open;

Check(DbiGetObjFromObj(hDBIObj(Table.Handle), objDATABASE, hDBIObj(hDb)));

Table.Close;

FillChar(TableDesc, SizeOf(TableDesc), 0);
StrPCopy(TableDesc.szTblName, Table.Tablename);
StrCopy(TableDesc.szTblType, szParadox);

FieldDesc.iOffset := 0;
FieldDesc.iLen := Length(OptData) + 1;
StrPCopy(FieldDesc.szName, Option);

TableDesc.iOptParams := 1;
TableDesc.pFldOptParams := @FieldDesc;
TableDesc.pOptData := @OptData[1];
try
Res := DbiDoRestructure(hDb, 1, @TableDesc, nil, nil, nil, False);
Result := (Res = DBIERR_NONE);
finally
Table.Open;
end;
end;

function SetParadoxTableVersion(TablePathName : String; Version : Integer) : Boolean;
var
MyTable : TTable;
begin
MyTable := TTable.Create(Nil);
MyTable.DatabaseName := ExtractFilePath(TablePathName);
MyTable.TableName := ExtractFileName(TablePathName);

Result := RestructureParadoxTable(MyTable, 'LEVEL', IntToStr(Version));

MyTable.Free;
end;

function SetParadoxTableBlockSize(TablePathName : String; BlockSize : Integer) : Boolean;
var
MyTable : TTable;
begin
MyTable := TTable.Create(Nil);
MyTable.DatabaseName := ExtractFilePath(TablePathName);
MyTable.TableName := ExtractFileName(TablePathName);

Result := RestructureParadoxTable(MyTable, 'BLOCK SIZE', IntToStr(BlockSize));

MyTable.Free;
end;

function SetParadoxTableStrictIntegrity(TablePathName : String; StrictIntegrity : Boolean) : Boolean;
var
MyTable : TTable;
begin
MyTable := TTable.Create(Nil);
MyTable.DatabaseName := ExtractFilePath(TablePathName);
MyTable.TableName := ExtractFileName(TablePathName);

If (StrictIntegrity) Then
Result := RestructureParadoxTable(MyTable, 'STRICTINTEGRTY', 'TRUE')
else
Result := RestructureParadoxTable(MyTable, 'STRICTINTEGRTY', 'FALSE');

MyTable.Free;
end;

function SetParadoxTableLanguage(TablePathName, LangDriver : String) : Boolean;
var
MyTable : TTable;
begin
MyTable := TTable.Create(Nil);
MyTable.DatabaseName := ExtractFilePath(TablePathName);
MyTable.TableName := ExtractFileName(TablePathName);

Result := RestructureParadoxTable(MyTable, 'LANGDRIVER', LangDriver);

MyTable.Free;
end;

end.

Отговор
в отговор на Vladi #3

Re: BDE: Paradox - Language Driver

Има един страхотен help - Kuliba.chm от Валентин Озеров.
Нещо като FAQ.
Та там има точно такъв въпрос и отговор.
Кодът не е много дълъг но не ми се поства тук.
Ако не намериш нищо в тази насока
остави един mail и ще ти изпратя кода или пък целия Help

Отговор
в отговор на val63 #4

Re: BDE: Paradox - Language Driver

Има ли линк някъде към хелпа - или ако може да го пратиш ggg@biochim.com

Отговор
в отговор на gydi #5

Re: BDE: Paradox - Language Driver

gudi !
Или този мейл е невалиден, или
има ограничение за големина на файла.
Не знам какъв е проблема, но ми върна съобщението.
Ако е от големината ще ти го раздробя, ако не SORRY !

Отговор
в отговор на val63 #6

Re: BDE: Paradox - Language Driver

има ограничение 5 МБ

Отговор
в отговор на gydi #7

Re: BDE: Paradox - Language Driver

gudi !
Какво става ?
Пролучи ли нещо ?

Отговор
в отговор на val63 #8

Re: BDE: Paradox - Language Driver

получих, тенкс

Отговор
в отговор на Vladi #9

Благодаря

за тоз unit, ще свърши работа за един Data Checker :-)
Тези функциики обаче ще трябва да поправят мазалото при таблици, създадени с грешен LANGDRIVER. Идеята беше преди създаването на таблицата (с простото TTable.CreateTable, а не с dbiCreateTable) вече да бъде сложен LANGDRIVER=Pdox ANSI Bulgaria, щото иначе сортирането по текстово поле става мазало. Та тая настройка я открих в registry:
HKEY_LOCAL_MACHINE\Software\Borland\Database Engine\Settings\DRIVERS\PARADOX\INIT
"LANGDRIVER"="BGPD1251" - тва съответства на Pdox ANSI Bulgaria, по подразбиране седи DBWINUS0 ('ascii' ANSI)


...a shell surrounding emptiness and loneliness, a core of pain...
Отговор