Domino 9 und frühere Versionen > ND6: Entwicklung
!!HELP!! - BUG gefunden ?
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