رضا عربلو
دوشنبه 25 اسفند 1382, 12:31 عصر
با سلام.
حتماً اساتید گرامی تا به حال با pack کردن بانک های پارادکس خود با الگوریتمی شبیه به زیر پرداخته اند.
(می بخشید من سیستم نامگذاری دراز اما کارای خودم را دارم)
procedure Procedure_ParadoxPack(Table_Paradox : TTable);
var
CRTblDesc_TBDesc : CRTblDesc; // Uses BDE
hDbiDb_hDb : hDbiDb; // Uses BDE
CharArray_TablePath : array[0..DBIMAXPATHLEN] of char;
begin
FillChar(CRTblDesc_TBDesc, SizeOf(CRTblDesc_TBDesc), 0);
with CRTblDesc_TBDesc do
begin
StrPCopy(szTblName, Table_Paradox.TableName);
StrPCopy(szTblType, szPARADOX);
bPack := True;
end;
Table_Paradox.Open;
hDbiDb_hDb := nil;
Check(DbiGetDirectory(Table_Paradox.DBHandle, True, CharArray_TablePath));
Table_Paradox.Close;
Check(DbiOpenDatabase(nil, 'STANDARD', dbiREADWRITE, dbiOPENEXCL, nil, 0, nil, nil, hDbiDb_hDb));
Check(DbiSetDirectory(hDbiDb_hDb, CharArray_TablePath));
Check(DbiDoRestructure(hDbiDb_hDb, 1, @CRTblDesc_TBDesc, nil, nil, nil, False));
Table_Paradox.Open;
Table_Paradox.Close; {// I added}
end;
حال سوال های من به قرار زیر است.
1 - چگونه می توانم در حین انجام pack برای اینکه کاربر حوصله اش سر نرود و در ضمن از مدت زمان لازم برای انجام این دستور و میزان ÷یشرفت دقیق این عمل اگاه شود position یک progressbar را مقدار داد.
2 - وقتیکه دستور فوق را به یک بانک پارادکس بزرگ می زنم. برنامه بسیار کند می شود چگونه می توانم. بلافاصله بعد از دستور فوق دوباره درایورهای بانک الاعاتی را در حافظه لود کنم تا سرعت برنامه از دست نرود.
حتماً اساتید گرامی تا به حال با pack کردن بانک های پارادکس خود با الگوریتمی شبیه به زیر پرداخته اند.
(می بخشید من سیستم نامگذاری دراز اما کارای خودم را دارم)
procedure Procedure_ParadoxPack(Table_Paradox : TTable);
var
CRTblDesc_TBDesc : CRTblDesc; // Uses BDE
hDbiDb_hDb : hDbiDb; // Uses BDE
CharArray_TablePath : array[0..DBIMAXPATHLEN] of char;
begin
FillChar(CRTblDesc_TBDesc, SizeOf(CRTblDesc_TBDesc), 0);
with CRTblDesc_TBDesc do
begin
StrPCopy(szTblName, Table_Paradox.TableName);
StrPCopy(szTblType, szPARADOX);
bPack := True;
end;
Table_Paradox.Open;
hDbiDb_hDb := nil;
Check(DbiGetDirectory(Table_Paradox.DBHandle, True, CharArray_TablePath));
Table_Paradox.Close;
Check(DbiOpenDatabase(nil, 'STANDARD', dbiREADWRITE, dbiOPENEXCL, nil, 0, nil, nil, hDbiDb_hDb));
Check(DbiSetDirectory(hDbiDb_hDb, CharArray_TablePath));
Check(DbiDoRestructure(hDbiDb_hDb, 1, @CRTblDesc_TBDesc, nil, nil, nil, False));
Table_Paradox.Open;
Table_Paradox.Close; {// I added}
end;
حال سوال های من به قرار زیر است.
1 - چگونه می توانم در حین انجام pack برای اینکه کاربر حوصله اش سر نرود و در ضمن از مدت زمان لازم برای انجام این دستور و میزان ÷یشرفت دقیق این عمل اگاه شود position یک progressbar را مقدار داد.
2 - وقتیکه دستور فوق را به یک بانک پارادکس بزرگ می زنم. برنامه بسیار کند می شود چگونه می توانم. بلافاصله بعد از دستور فوق دوباره درایورهای بانک الاعاتی را در حافظه لود کنم تا سرعت برنامه از دست نرود.