Autor Thema: Name der aktuellen Scriptbibliothek auslesen  (Gelesen 2734 mal)

Offline Legolas

  • Senior Mitglied
  • ****
  • Beiträge: 446
  • Geschlecht: Männlich
Name der aktuellen Scriptbibliothek auslesen
« am: 03.04.17 - 11:43:16 »
Hallo Zusammen,

gibt es die Möglichkeit in Notes-Script den Namen der aktuellen Script-Bibliothek auszulesen in der evtl. ein Fehler aufgetreten ist?
Über GetThreadInfo() komme ich nicht so recht weiter.

Die Funktion in der ein Fehler auftritt,  bekomme ich über den Stack zurück.
stackTrace = LSI_Info(14)

Es müsste dann doch aus Dokumentationsgründen möglich sein, den Namen der Script-Bibliothek zu bekommen in welcher die Funktion die den Fehler geworfen hat läuft.

Grüße
Bernd
Arbeite klug, nicht hart.

Offline Frank_B

  • Senior Mitglied
  • ****
  • Beiträge: 275
  • Geschlecht: Männlich
Re: Name der aktuellen Scriptbibliothek auslesen
« Antwort #1 am: 03.04.17 - 12:07:34 »
Evtl. in die Richtung:

Dim cdb As NotesDatabase
Dim nc As NotesNoteCollection
Dim ncdoc As NotesDocument

Set nc = cdb.Createnotecollection(False)
nc.SelectScriptLibraries = True
Call nc.BuildCollection
[...]
strNoteId = nc.Getfirstnoteid()   
Set ncdoc = cdb.GetDocumentByID(strNoteId)
[...]
strTitel = ncdoc.getItemValue("$Title")(0)
strKommentar = ncdoc.getItemValue("$Comment")(0)
[...]
« Letzte Änderung: 03.04.17 - 12:09:39 von Frank_B »
Gruß Frank

Offline eknori

  • @Notes Preisträger
  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 11.728
  • Geschlecht: Männlich
Egal wie tief man die Messlatte für den menschlichen Verstand auch ansetzt: jeden Tag kommt jemand und marschiert erhobenen Hauptes drunter her!

Offline Legolas

  • Senior Mitglied
  • ****
  • Beiträge: 446
  • Geschlecht: Männlich
Re: Name der aktuellen Scriptbibliothek auslesen
« Antwort #3 am: 03.04.17 - 13:32:44 »
Hallo Ulrich,

habe ich schon probiert.
Die Funktion liefert mir aber z.b. folgendes Ergebnis zurück:  *BB16918
Mein Ziel ist es aber, den Scriptbibliotheksnamen zu erhalten.
Oder gibt es hier eine Referenz bzw. Konfiguration?

Gruß
Bernd
Arbeite klug, nicht hart.

Offline Andrew Harder

  • Senior Mitglied
  • ****
  • Beiträge: 295
  • Geschlecht: Männlich
Re: Name der aktuellen Scriptbibliothek auslesen
« Antwort #4 am: 03.04.17 - 14:42:02 »
Evtl. in die Richtung:

Dim cdb As NotesDatabase
...
strKommentar = ncdoc.getItemValue("$Comment")(0)
[...]
Leider nein.

UNID:   620F37C3286D8819C12580F7003BD8E1
NoteID: 1203E
LSI_THREAD_MODULE:      *D5DDE18

Der Stern erinnert mich an einen Pointer ;)


[EDIT]
Butter bei de Fische: Manuell ist das Ganze kein Problem:
Code
Private g_nameScriptLib As String
...
g_nameScriptLib = "Name der Lib"
Nicht schön, aber ein Workarround, den ich schon oft gesehen habe.

Bei Agents hättest Du ja agent.name.
So ein session.CurrentLibrary.Name wäre hier echt eine Hilfe gewesen.
« Letzte Änderung: 03.04.17 - 15:11:28 von Andrew Harder »
Andy

Offline eknori

  • @Notes Preisträger
  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 11.728
  • Geschlecht: Männlich
Re: Name der aktuellen Scriptbibliothek auslesen
« Antwort #5 am: 04.04.17 - 09:38:26 »
Der Rückgabe wert ist in der Tat ein Pointer. Mit ein bisschen API Magic kommt man dann auch an den Namen der ScriptLib. Ist sicher nicht alltagstauglich. Ich verwende daher auch eine (private) Konstante in meinen Libs

Code
Option Public
Option Declare

Const APIModule = "NNOTES" 
Declare Private Sub Peek Lib APIModule Alias "Cmovmem"(  ByVal P As Long, D As Any, ByVal N As Long)
Declare Private Sub PeekString Lib APIModule Alias "Cmovmem"(  ByVal P As Long, ByVal D As String, ByVal N As Long)

Sub Terminate
	
End Sub


Public Sub sayHello()
	MsgBox getModuleName
End Sub

Function getModuleName ()As String
	Dim t As long
	Dim p As Long
	Dim s As String
	Dim a As String
	Dim b As String
	Dim z As Integer

	t& = CLng("&H" & Mid$(GetThreadInfo(2), 2))
	Peek t& + 166, p&, 4 ' 166 For 9.0.1

	If Abs(t& - p&) > 1E6 Then Exit Function

	s$ = Space(32)

	PeekString p&, s$, 32
	z% = InStr(s$, Chr$(0))
	a$ = Left$(s$, z% - 1)
	s$ = Mid$(s$, z% + 1)
	z% = InStr(s$, Chr$(0))
	b$ = Left$(s$, z% - 1)
	If b$ = "" Then getModuleName = a$ Else getModuleName = b$ & " - " & a$
End Function
Egal wie tief man die Messlatte für den menschlichen Verstand auch ansetzt: jeden Tag kommt jemand und marschiert erhobenen Hauptes drunter her!

Offline Thomas Heinecke

  • Frischling
  • *
  • Beiträge: 5
  • Geschlecht: Männlich
  • Thomas Heinecke
    • th softwaretechnik
Re: Name der aktuellen Scriptbibliothek auslesen
« Antwort #6 am: 07.04.17 - 11:28:47 »
Ich habe mir angewöhnt, die Einstellungen der Templates für Code und Comment im Domino Designer zu verwenden.
So kann ich bei neuen Funktionen immer mit einmal Cut und Paste den korrekten Namen des Design-Element im Code hinterlegen.

--------------------------------------------------------------------------------------------
Unter "Preferences\Domino Designer\ LotusScript Editor \Code Templates" hinterlege ich den Vorgabe-Code für Functions und Subs:
      

   Dim strFunctionName As String      

   On Error Goto ProcessError        

   strFunctionName = "<element> - <function>"    // ist nur eine Dummy Anweisung, die später ersetzt wird.
   ' = False
   
   

   ' = True
   Exit Function

ProcessError:
   Msgbox "Error (" & Cstr(Err) & " ) -> " & Error$(Err) & " in line " & Erl & Chr(13) & Error() , 16, strFunctionName
   Exit Function
--------------------------------------------------------------------------------------------   

Unter "Preferences\Domino Designer\ LotusScript Editor \Comment Templates" hinterlege ich das Vorgabe-Kommentar und
die Platzhalter für den Namen des aktuellen Design-Elements und der Funktion:   

--------------------------------------------------------------------------------------------
%REM
   ${element_type} ${element_name}
   Description: Comments for ${element_type}
   @param:  
   @return: ${element_returntype}  
   @date:   ${date}
   @autor:  ${user} (th softwaretechnik)
%END REM
' strFunctionName = "${designelement_type}: ${designelement_name} - ${element_name}"      // Hier wird der Name des Design-Elements gezogen. Funktioniert leider nur im Comment- und nicht im Code-Template.
--------------------------------------------------------------------------------------------

Die  auskommentierte Variablenzuweisung aus dem Kommentar kopiere ich dann einfach in den Funktions-Code.

Da wir alle unsere Funktionen immer sauber kommentieren, fällt es später auf, falls man
die Zuweisung des Funktionsnamens einmal vergessen zu kopieren und diese immer noch im Kommentar steht. ;-)
« Letzte Änderung: 07.04.17 - 11:30:57 von Thomas Heinecke »

 

Impressum Atnotes.de  -  Powered by Syslords Solutions  -  Datenschutz