Page 1 sur 1

lsi_info

MessagePublié: 30 Mai 2006 à 20:15
par oguruma
on voit souvent dans certains codes des procédures de gestion de messages d'erreur où il est noté en dur le nom de la fonction ou de sub qui s'est plantée
or bien souvent quand on est amené à renommer la fonction on oublie de renommer celle-ci dans le paragraphe de gestion d'erreur

or il y a un moyen très simple pour éviter de renommer à chaque fois... c'est d'utiliser lsi_info(2) comme par exemple
msgbox "Erreur n° " & err & " : " & error$ & " à la ligne " & erl,16, lsi_info(2)

ainsi on ne soucie plus du nom de la fonction ou de la sub

lsi_info disposent d'autres paramètres :

Lsi_info(1) ' Current line number (in the LS source)
Lsi_info(2) ' The current function or sub
Lsi_Info(3) ' The current module
Lsi_Info(6) ' The version of LotusScript running
Lsi_Info(9) ' Current language (en for english)
Lsi_Info(12) ' The name of the function that called this one, "the caller"
Lsi_info(50) ' LotusScript Memory Allocated
Lsi_info(51) ' LotusScript Memory Allocated from OS
Lsi_info(52) ' LotusScript Blocks Used

MessagePublié: 31 Mai 2006 à 09:15
par Stephane Maillard
Salut,

Tout simplement excellent encore une fonction non documentée chez Lotus.

MessagePublié: 02 Juin 2006 à 20:26
par oguruma
tu ne connaissais pas ? oh ?

MessagePublié: 05 Juin 2006 à 18:11
par JYR
En fait , c'est la fonction getThreadInfo sous R6. Je l'ai utilisé et ça fonctionne tempête!



GetThreadInfo (Dim InfoID as Integer)
Elements
InfoID
Information to be returned
Return values
Data
A variant containing the information to be returned.
Usage
Pass any of the LSI_ constants from the table below to GetThreadInfo to have it return the current value of that constant.
Code Meaning
LSI_THREAD_LINE Current Line Number
LSI_THREAD_PROC Name of current procedure
LSI_THREAD_MODULE Name of current module
LSI_THREAD_VERSION LotusScript version number
LSI_THREAD_LANGUAGE (Human) language setting
LSI_THREAD_COUNTRY Country or region setting
LSI_THREAD_TICKS Get current clock ticks
LSI_THREAD_TICKS_PER_SEC Get clock ticks per second (supported only on platforms that support parallel processing primitives)
LSI_THREAD_PROCESS_ID Get current process ID (supported only on platforms that support parallel processing primitives)
LSI_THREAD_TASK_ID Get current task ID (supported only on platforms that support parallel processing primitives)
LSI_THREAD_CALLPROC Get the name of the calling procedure
LSI_THREAD_CALLMODULE Get the name of the calling module


JYR

MessagePublié: 05 Juin 2006 à 20:26
par oguruma
oui en effet... j'avais vu... mais quand on a ses habitudes...
lsi_info est utilisable depuis la V4..
pourquoi ne l'on-t-il pas mise sous sa forme originale.... :?

MessagePublié: 07 Juin 2006 à 15:32
par Thothem
Lsi_info(14)

Retourne la pile des appels de procedures

A ma connaissance, il n'y a pas d'équivalent dans Getthreadinfo
Packagé dans une chtite classe (je finalise), ça permet de créer des belles StackTrace à la Java.

MessagePublié: 07 Juin 2006 à 20:19
par oguruma
J'ai un dév en cours... ça m'intéresserait ta classe...
je termine celle sur le parsing text c'est en cours de test.. ça fonctionne déjà pas mal

MessagePublié: 23 Nov 2006 à 09:21
par abertisch
J'avais développer une gestion d'erreur en utilisant Lsi_info(2)

A mettre tout en haut de votre code:

Code : Tout sélectionner
On Error Goto HandleError


A mettre tout à la fin:

Code : Tout sélectionner
Exit Sub
HandleError:   
   Call ShowError(Lsi_info(2))
   Resume ExitHandleError
ExitHandleError:   
End Sub


A mettre dans la librairie de script:

Code : Tout sélectionner
Sub ShowError(Lsi12 As String)
   
   Dim fromerror As String
   Dim sessionidname As New NotesSession
   Dim agent As notesagent
   Set agent = sessionidname.CurrentAgent
   
   If Not agent Is Nothing Then
      ' C'est une erreur dans un agent
      fromerror =" agent '"& sessionidname.CurrentAgent.name+"'"
   Else
      Dim wks As New NotesUIWorkspace
      ' c'est une erreure dans un document
      If Not wks.currentdocument Is Nothing Then
         fromerror=" form '"+wks.CurrentDocument.Document.form(0)+"'"
      Else
         fromerror=" view '"+wks.CurrentView.ViewName+"'"
      End If   
   End If
   Dim caller As String
   caller = ""
   If Lcase(Lsi_info(12))<>Lcase(Lsi12) Then
      caller = " (Called by: " & Lsi12 &") in "
   End If
   
   Msgbox("Function " & Lsi_info(12) & _
   caller+fromerror+" generated [" &  Error$& "] in line: " & Erl )
End Sub


Code : Tout sélectionner
Sub validation(value As Variant,ErrorMessage)
   
   If value Is Nothing Then
      Error 5000,ErrorMessage
   End If
   
   
End Sub

MessagePublié: 20 Avr 2007 à 16:00
par afournery
comment avoir le nom du module LSI_THREAD_CALLMODULE

il me retourne une valeur Hex

MessagePublié: 20 Avr 2007 à 16:21
par JYR
Moi, j'utilise ceci:

http://www.openntf.org/Projects/pmt.nsf ... up/OpenLog

une base centrale à déployer

Par la suite, une bibliothèque de scripts dans les bases à gérer et les appels à cet bibliothèque pour notifier des erreurs ou des événements.

JYR