Autor Thema: %Include  (Gelesen 2122 mal)

Offline Johnson

  • Senior Mitglied
  • ****
  • Beiträge: 258
  • Geschlecht: Männlich
%Include
« am: 15.11.05 - 14:46:54 »
Hallöchen,

unter http://atnotes.de/index.php?topic=16387.0 wird ja schon einiges über dieses Thema gesagt.

Ich stehe jetzt vor folgendem Problem:
Können LS-Libraries auf diese Weise plattformabhängig eingebunden werden?
Ich denke da an %If WIN32 ...

Hintergrund:
Einige Prozeduren einer Library verwenden die ODBC-Klassen von LS.
Diese LS-Library sollte auch in einem Agenten eingebunden werden, verwendet allerdings die ODBC-Prozeduren nicht. Die Zeile Uselsx "*LSXODBC" wirft wärend der Laufzeit auf dem Server einen Fehler.
Jetzt dachte ich mir, erstelle einfach eine LSS-Datei, binde die "nlsxodbc.dll" je nach Plattform ein (mit %If WIN32 soll das ja möglich sein) und binde dann die LSS-Datei mit %INCLUDE ein.
=> "Error loading USE or USELSX module: *LSXODBC"
Gruß
Johnson

Offline mrtachles

  • Frischling
  • *
  • Beiträge: 34
  • Geschlecht: Männlich
    • Die ECOBoys
Re: %Include
« Antwort #1 am: 15.11.05 - 15:18:57 »
Hi,

ich habe für solche Zwecke ein Lib, die eine Funktion zum dynamischen Einbinden von anderen Libs bietet. Brauche ich nun die entspr. Funktionen, die in einer Lib drin sind, nur unter Windows, rufe ich die Funktion ggf. auf und binde die Win-Spezifische Lib ein.

Function UseLib ( Byval argClassName As String ) As Variant
        If Not Iselement ( factories ( argClassName ) ) Then
                Dim script As String
                script = | Use "| & argClassName & |"
          Sub Initialize
               Set newObj_Factory = New | & argClassName & |Factory
          End Sub
          |
                Execute ( script )
                Set factories ( argClassName ) = newObj_Factory
        End If
        Set newObj = factories ( argClassName ).produce
End Function

Offline Johnson

  • Senior Mitglied
  • ****
  • Beiträge: 258
  • Geschlecht: Männlich
Re: %Include
« Antwort #2 am: 15.11.05 - 15:33:46 »
Super!! Danke!! Es funkt.

Mein Fehler bei dieser Methode war immer, daß ich die Variablen nicht global Deklariert habe.
Somit wurden Objekte nach dem Execute terminiert.

Es tut, es tut, es tut, es tut  ;D
Gruß
Johnson

Offline Johnson

  • Senior Mitglied
  • ****
  • Beiträge: 258
  • Geschlecht: Männlich
Re: %Include
« Antwort #3 am: 15.11.05 - 15:41:17 »
Allerdings tut´s ohne Syntaxüberprüfung beim Compilieren, da die Objekte in einem Variant zurückgegeben werden.  :-\
Das kann u.U. zu Fehlerquellen führen.

Aber den Tod sterbe ich gern.
Gruß
Johnson

Offline mrtachles

  • Frischling
  • *
  • Beiträge: 34
  • Geschlecht: Männlich
    • Die ECOBoys
Re: %Include
« Antwort #4 am: 15.11.05 - 16:10:27 »
prima.
Aber wer arbeitet schon mit Syntaxprüfung  ;D.
Dann macht das Testen ja nur halb so viel Spaß

Gruss
Thomas

Offline Johnson

  • Senior Mitglied
  • ****
  • Beiträge: 258
  • Geschlecht: Männlich
Re: %Include
« Antwort #5 am: 16.11.05 - 10:17:03 »
Es geht auch einfacher.

Das Uselsx Statement kann mit dem optionalen Prefix "?" eine DLL zu dem Zeitpunkt laden, an dem sie benötigt wird. z.B. Uselsx "?*LSXODBC".
Sofern man keine Funktionen aufruft, die die ODBCConnection & Consorten verwenden, kann ein Agent auf dem Server laufen.

s. Notes Designer Help zu Uselsx.


Zurück zum Thema: Welchen Zweck hat %Include eigentlich. Worin bestehen hier nun die Vor- und Nachteile?
Schließlich muss man in einem Entwicklerteam dafür sorgen, daß jeder der den Code compiliert die entsprechenden LSS-Dateien auf dem Filesystem hat. Die Designelemente, in denen eine LSS-Datei mittels %Include eingebunden wird, vergrößern sich ebenfalls, da der Code an dieser Stelle eingefügt wird. Folglich vergrößert sich das Design der ganzen DB, wenn man diese Technik exzessiv nutzt.

Was ist eure Meinung bzw. was sind eure Erfahrungen?
Gruß
Johnson

 

Impressum Atnotes.de  -  Powered by Syslords Solutions  -  Datenschutz