14. oktober 2005 - 16:10Der er
5 kommentarer og 1 løsning
"Illegal function call" ved brug af Dir$
Jeg har lavet noget LotusScript kode som henter nogle filer fra filsystemet og herefter sender disse i en mail.
Mit kode kan godt hente filerne når jeg kører det lokalt på min maskine men når jeg kører det på serveren får jeg følgende fejlbesked: "Illegal function call".
Koden skal i første omgang hente alle folders/mapper i en bestemt sti. Fejlen kommer i dette statement:
filename$=Dir$(pathname$,16)
Jeg har ikke kaldt "Dir$" tidligere i mit kode så problemet er ikke at det er et nested kald.
Serveren kører på en windowsmaskine og stien jeg bruger har følgende udseende:
pathname$ = "\\server\mappe1\mappe2\*.*"
Er der nogen der kan fortælle mig hvad jeg laver forkert ?? Eller er der eventuelt nogle begrænsninger i "Dir" ??
Har du undersøgt om du må køre "Unrestricted" kode?
På serverdokumentet skal dit navn stå en en grupper eller angives direkte på sikkerhedsfanebladet i følgende felt:
Programmability Restrictions Who can - Run unrestricted methods and operations: <HERSKALDITNAVN ELLER EN AF DINE GRUPPER STÅ>
Dir er et operativsystemkald, som ikke alle må foretage. Personer der kan dette kan nemlig også slette filer eller formatere diskdrev ...
En anden mulighed er at Domino-serveren ikke kan tilgå den Fil-server som du prøver at få adgang til. Det kan være manglende rettigheder. Har du prøvet i en dos-boks at mappe et drevbogstav til den URI som du angav? Prøv evt. med at lave en permanent kobling mellem et drevbogstav og den valgte URI og prøv så at angive "pathname$=Z:\..."
R-drevet er nok ikke tilgængelig for Domino på agentens afviklingstidspunkt. Jeg ved ikke om det er muligt at angive en /PERSISTANT:YES ved anvendelse af Net Use ?
Jeg sidder just præcis med det samme og skulle lige til at svare dig at det nok var stier der mangler. LotusScript kan tilsyneladende ikke håndtere når "mappe1" ikke findes. Det er ligeså vigtig som at have adgang til drevet.
Jeg har fundet, og modificeret, denne function som kan oprette hele stien i modtætning til hvis man kun bruger mkdir:
Sub EnsureSubDir(filepath As String) 'this sub creates the the path on the harddrive 'MKdir can only create one subfolder, but this sub can create many subfolders
Dim separator As String
If Instr(filepath, "/") > 0 Then 'filepath is created with forward slash separator = "/" Else 'filepath is created with back slash separator = "\" End If
Dim p1 As Variant On Error Goto MkDirErr If Right(filepath, 1) <> separator Then filepath = filepath + separator p1 = 0 While Not p1 >= Len(filepath) p1 = Instr(p1 + 1, filepath, separator) If p1 = 0 Then p1 = Len(filepath) + 1 Mkdir Left(filepath, p1) Wend Exit Sub MkDirErr: Resume Next End Sub
Måske den kan hjælpe andre !!
Synes godt om
Ny brugerNybegynder
Din løsning...
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.