Hallo Leute
ich habe ein Problem bei der Belegung der Properties einer Session in einer aufgerufenen DLL.<br>
Dies beginnt bereits damit, dass die Hints des Debugger die Eigenschaften der EXE-Session anzeigen, z.B. Active = True, dennoch wird die Anweisung für Active = False durchlaufen.
Die Ausgabe der Propery-Belegung über OutputDebugString im Ereignisprotokoll gibt hier Klarheit (siehe Beispiel).<p>
Ich habe die Property NetfileDir in der Exe sowie in der DLL auf das gleiche Verzeichnis gesetzt. Den Sessionname habe ich mal identisch mal abweichend zur Exe belegt. In der Exe ist Session.Active = True. Wird in der DLL die Property PrivatDir belegt, erhalte ich beim Aufruf von qry.Open die Fehlermeldung: <I>Tabellen geöffnet - Diese Operation ist aktuell nicht durchführbar</I>. Unterlasse ich die Belegung funktioniert alles wie gewünscht. Die Exe hat die Tabelle <b> nicht </b> im Zugriff!<P>
<p><b>
Frage: Was gilt hier nun oder - wo liegen nun die Sperrdateien der DLL?
</b><p>
<p>
Beispiel: Initialisierung der DLL-Session
<PRE>
//Achtung Debugger lügt, zeigt Session der Exe
if not Session.Active then
begin
OutputDebugString(PChar('Active = True'));
OutputDebugString(PChar('SessionName (vor): ' + Session.SessionName);
Session.SessionName := 'DLLSESSION'; //Alternative 'EXESESSION'
OutputDebugString(PChar('SessionName (nach): ' + Session.SessionName);
OutputDebugString(PChar(NetFileDir (vor): ' + Session.NetFileDir);
Session.NetFileDir := 'Datenverz';
OutputDebugString(PChar(NetFileDir (nach): ' + Session.NetFileDir);
OutputDebugString(PChar(PrivateDir (vor): ' + Session.PrivateDir);
Session.PrivateDir := 'C:\Temp\MyDir\';<br>
OutputDebugString(PChar(PrivateDir (nach): ' + Session.PrivateDir);
end else
OutputDebugString(PChar('Active = False'));
</PRE>
MFG Uwe
ich habe ein Problem bei der Belegung der Properties einer Session in einer aufgerufenen DLL.<br>
Dies beginnt bereits damit, dass die Hints des Debugger die Eigenschaften der EXE-Session anzeigen, z.B. Active = True, dennoch wird die Anweisung für Active = False durchlaufen.
Die Ausgabe der Propery-Belegung über OutputDebugString im Ereignisprotokoll gibt hier Klarheit (siehe Beispiel).<p>
Ich habe die Property NetfileDir in der Exe sowie in der DLL auf das gleiche Verzeichnis gesetzt. Den Sessionname habe ich mal identisch mal abweichend zur Exe belegt. In der Exe ist Session.Active = True. Wird in der DLL die Property PrivatDir belegt, erhalte ich beim Aufruf von qry.Open die Fehlermeldung: <I>Tabellen geöffnet - Diese Operation ist aktuell nicht durchführbar</I>. Unterlasse ich die Belegung funktioniert alles wie gewünscht. Die Exe hat die Tabelle <b> nicht </b> im Zugriff!<P>
<p><b>
Frage: Was gilt hier nun oder - wo liegen nun die Sperrdateien der DLL?
</b><p>
<p>
Beispiel: Initialisierung der DLL-Session
<PRE>
//Achtung Debugger lügt, zeigt Session der Exe
if not Session.Active then
begin
OutputDebugString(PChar('Active = True'));
OutputDebugString(PChar('SessionName (vor): ' + Session.SessionName);
Session.SessionName := 'DLLSESSION'; //Alternative 'EXESESSION'
OutputDebugString(PChar('SessionName (nach): ' + Session.SessionName);
OutputDebugString(PChar(NetFileDir (vor): ' + Session.NetFileDir);
Session.NetFileDir := 'Datenverz';
OutputDebugString(PChar(NetFileDir (nach): ' + Session.NetFileDir);
OutputDebugString(PChar(PrivateDir (vor): ' + Session.PrivateDir);
Session.PrivateDir := 'C:\Temp\MyDir\';<br>
OutputDebugString(PChar(PrivateDir (nach): ' + Session.PrivateDir);
end else
OutputDebugString(PChar('Active = False'));
</PRE>
MFG Uwe