Domino 9 und frühere Versionen > ND6: Entwicklung

!!HELP!! - BUG gefunden ?

<< < (2/4) > >>

eknori:
der Wurm steckt in der function SPOOFMESSAGEWITHITEM in der lib.appl.functions.
Fälschlicherweise wird in der Fehlermeldung "SpoofMessage" als Thread ausgegeben ( Thomas hatte das im ERRHANDLE hardcoded )

Ich habe das ERRHANDLE jetzt mal ein wenig umgeschrieben

EXITPOINT:
   Exit Function
ERRHANDLE:
   SpoofMessagewithitem = False
   If UseOpenLog Then
      Call LogError
   End If
   Print Getthreadinfo(LSI_THREAD_PROC) & ": " &Trim$(Str$(Err)) & " on line " & Cstr(Erl) & ": " & Error$
   Resume EXITPOINT

Die Funktion GetThreadInfo() sollte man sich mal in der Designer Hilfe ansehen; außerdem habe ich den Support für Julian Robichaux's OpenLog eingebaut.  (http://www.openntf.org/Projects/pmt.nsf/ProjectHome?ReadForm&Query=OpenLog )

Wenn du Lust hast, kannst du ja mal die besagte Funktion debuggen; ich habe heute irgendwie keine grosse Lust dazu; muss wohl am Wetter liegen  ;D

eknori:
ersetze mal die Funktion SPOOFMESSAGEWITHITEM durch folgeneden Code ( experimentell)

Function SpoofMessagewithitem( sendas As String, sendto As Variant, CopyTo As Variant, subject As String, message As String , itembody As notesrichtextitem) As Integer
   On Error Goto ERRHANDLE
   Dim session As New NotesSession
   Dim item As NotesItem
   Dim mailbox As New NotesDatabase("","")
   Dim current As NotesDatabase
   Dim maildoc As NotesDocument
   Dim rtitem As  NotesRichTextItem
   Dim me_item As NotesItem
   Dim ok As Integer
   SpoofMessagewithitem = True
   Set current = session.CurrentDatabase
   Call  mailbox.Open( current.server, "mail.box" )
   Set maildoc = mailbox.CreateDocument
   Set item =  maildoc.ReplaceItemValue("Form","Memo")
   Set item =  maildoc.ReplaceItemValue("From", sendas)
   Set item =  maildoc.ReplaceItemValue("Subject", subject)
   Set item =  maildoc.ReplaceItemValue("SendFrom", sendas)
   Set item =  maildoc.ReplaceItemValue("SendTo", sendto)
   Set item =  maildoc.ReplaceItemValue("CopyTo", copyto)
   Set item =  maildoc.ReplaceItemValue("Recipients", sendto)
   Set rtitem = maildoc.CreateRichTextItem( "Body" )
   If message <> "" Then
      Call rtitem.AppendText( message )
   End If
   Call rtitem.appendrtitem(itembody)
   Set item =  maildoc.ReplaceItemValue("PostedDate", Now())   
   Set item =  maildoc.ReplaceItemValue("ComposedDate", Now())
   Set item =  maildoc.ReplaceItemValue("DeliveredDate", Now())
   Set item =  maildoc.ReplaceItemValue("Principal", sendas)   '
   'maildoc.EncryptOnSend = False
   Call maildoc.Save( True, False )
   
EXITPOINT:
   Exit Function
ERRHANDLE:
   SpoofMessagewithitem = False
   'If UseOpenLog Then
      'Call LogError
   'End If
   Print Getthreadinfo(LSI_THREAD_PROC) & ": " &Trim$(Str$(Err)) & " on line " & Cstr(Erl) & ": " & Error$
   Resume EXITPOINT
End Function
´

ich weiss, der doclink zur Antwort fehlt noch ... liefere ich nach sobald die Sonne weg ist  ;D

oh, dumme Frage, hast du eigentlich Designer Rechte ??

Alessandro:
Hi Ulrich, Hi Thomas,

das Exportieren der Sprachen funktioniert nicht. Hier kommt die Meldung "Ungültiger Funktionsaufruf". Ist aber nur ein kleiner Bug.

Im Script "lib.appl.functions" steht "Const maxlength = 50" eingetragen, jedoch verwendet ihr im Dokument "SCRIPTMESSAGES" mehr als 50 Zeichen, daher die Fehlermeldung.

eknori:
Danke für den Hinweis; da bin ich schon einmal drüber gestolpert. Hmm, da muss ich mir mal was anderes einfallen lassen

eknori:
Habe dir Routine noch einmal überarbeitet und ein Errorhandling eingefügt; jetzt ist sie zumindest ein wenig geschwätziger ...

Sub ExportLanguageFile
%REM
###################################################################################
Goal:
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Arguments: Description:
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Return:
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Example:
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
VERSION / WHEN / WHO / CHANGES
'###################################################################################
%END REM         
   On Error Goto ERRHANDLE
   Dim s As New NotesSession
   Dim key As String
   Dim fg As New FileGuard
   Dim fn As String
   Dim outfile As Integer
   Set db = s.CurrentDatabase
   key = Ucase(Inputbox$("Enter Language"))
   If key ="" Then Exit Sub
   
   Set v = db.GetView("LanguageDocs")
   Set col = v.GetAllDocumentsByKey(key)
   If col.Count = 0 Then
      Msgbox "Language not available"
      Exit Sub
   End If
   fn = GetPath +"\Language_"+ key +".lng"
   outfile = fg.handle
   Open fn For Output As outfile   
   Dim pb As New LNProgressBar(False) ' // init progressbar
   Call pb.SetText("Exporting ...","")
   Call pb.SetProgressRange(col.Count)
   Call pb.SetProgressPos(1)
   For i = 1 To col.Count
      Call pb.SetProgressPos( Clng( i ) )
      Set doc = col.GetNthDocument(i)
      Set item = doc.GetFirstItem("Type")
      Print #outfile, ";" + Ucase(item.Text)
      Set item = doc.GetFirstItem("Typestring")
      Forall x In  item.Values
         If Not  x = "" Then
            key = atword(Cstr(x),cSep,1)
            Print #outfile, key + cSep + Space(maxlength - Len(key))  + Trim(atword(Cstr(x),cSep,2))
         End If
      End Forall
      Print #outfile, " "
   Next
   Close outfile
   Delete pb
EXITPOINT:
   Exit Sub
ERRHANDLE:
   If UseOpenLog Then
      Call LogError
   End If
   Print Getthreadinfo(LSI_THREAD_PROC) & ": " &Trim$(Str$(Err)) & " on line " & Cstr(Erl) & ": " & Error$ & " Key: " & key & " exceeds maxlength " & maxlength &" / " & Len(key)
   Resume EXITPOINT   
End Sub


Wenn du jetzt noch maxlength auf 60 setzt, ist erst einmal Ruhe

Navigation

[0] Themen-Index

[#] Nächste Seite

[*] Vorherige Sete

Zur normalen Ansicht wechseln