Hallo,
ich möchte während eines längeren AddIndex auf einer Paradox-Tabelle gerne den Fortschritt anzeigen. Ist das mit einer BDE-Callbackfunktion überhaupt möglich?
Ich habe die Callbackfunktion erstellt und mittels DBIRegisterCallback angemeldet. Die Funktion wird jedoch nie aufgerufen.
Liegt das daran, dass evtl. AddIndex nicht über eine Callbackfunktion beobachtet werden kann oder könnte es daran liegen, dass ich nicht die Standard-Session sondern eine separate TSession-Komponente verwende?
Ich habe auch versucht, erst nach dem Erstellen der neuen TSession und Zuweisen der Session an meine TTable-Komponente das Handle der TTable als ersten Parameter an DBIRegisterCallback zu übergeben:
<pre>
function ProgressCallBack(ecbType:CBType; cliData:Longint; CBInfo:Pointer):CBRType stdcall;
begin
if progr.iPercentDone > 0 then
IndexForm.ProgressBar2.Position := progr.iPercentDone
else
IndexForm.BDECallbackText.Caption := progr.szMsg;
ProgressCallBack:=cbrContinue;
Application.ProcessMessages;
end;
</pre>
und dann später:
<pre>
...
Sessionr.SessionName:='SR';
Sessionr.open;
with Table1 do
begin
SessionName:='SR';
TableName:='Adressen.db';
IndexName:='';
// CallBackfunktion einrichten
Res := DbiRegisterCallBack(Table1.Handle, cbGenProgress, 0,sizeof(progr),@progr,ProgressCallBack);
...
</pre>
Leider blieb auch das ohne Erfolg.
Danke für jeden Tipp, auch wenn's nur die Bestätigung sein sollte, dass ich nicht weiter suchen muss, weil AddIndex nicht über Callback beobachtet werden kann.
Siegbert
ich möchte während eines längeren AddIndex auf einer Paradox-Tabelle gerne den Fortschritt anzeigen. Ist das mit einer BDE-Callbackfunktion überhaupt möglich?
Ich habe die Callbackfunktion erstellt und mittels DBIRegisterCallback angemeldet. Die Funktion wird jedoch nie aufgerufen.
Liegt das daran, dass evtl. AddIndex nicht über eine Callbackfunktion beobachtet werden kann oder könnte es daran liegen, dass ich nicht die Standard-Session sondern eine separate TSession-Komponente verwende?
Ich habe auch versucht, erst nach dem Erstellen der neuen TSession und Zuweisen der Session an meine TTable-Komponente das Handle der TTable als ersten Parameter an DBIRegisterCallback zu übergeben:
<pre>
function ProgressCallBack(ecbType:CBType; cliData:Longint; CBInfo:Pointer):CBRType stdcall;
begin
if progr.iPercentDone > 0 then
IndexForm.ProgressBar2.Position := progr.iPercentDone
else
IndexForm.BDECallbackText.Caption := progr.szMsg;
ProgressCallBack:=cbrContinue;
Application.ProcessMessages;
end;
</pre>
und dann später:
<pre>
...
Sessionr.SessionName:='SR';
Sessionr.open;
with Table1 do
begin
SessionName:='SR';
TableName:='Adressen.db';
IndexName:='';
// CallBackfunktion einrichten
Res := DbiRegisterCallBack(Table1.Handle, cbGenProgress, 0,sizeof(progr),@progr,ProgressCallBack);
...
</pre>
Leider blieb auch das ohne Erfolg.
Danke für jeden Tipp, auch wenn's nur die Bestätigung sein sollte, dass ich nicht weiter suchen muss, weil AddIndex nicht über Callback beobachtet werden kann.
Siegbert