Avatar billede palle1976 Nybegynder
14. oktober 2005 - 16:10 Der 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" ??
Avatar billede jogii Nybegynder
17. oktober 2005 - 11:00 #1
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:\..."
Avatar billede palle1976 Nybegynder
17. oktober 2005 - 15:02 #2
Agenten må godt køre "Unrestricted" kode, så jeg tror ikke at det er sikkerhedsopsætningen i serverdokumentet.

Men jeg har prøvet følgende ting:

pathname$ = C:\test\ - Denne sti peger på en folder lokalt på maskinen og her virker det.

pathname$ = "R:\mappe1\mappe2\*.*" - her får jeg fejlen "Path not found", selvom jeg har mappet den anden til den rigtige folder på den anden server.

pathname$ = "\\server\mappe1\mappe2\*.*" - giver stadig "Illegal function call"

Fortæller det dig hvad min fejl er ??

Den burde vil godt at kunne kigge i et mappet drev....??
Avatar billede jogii Nybegynder
17. oktober 2005 - 15:52 #3
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 ?
Avatar billede palle1976 Nybegynder
18. oktober 2005 - 15:07 #4
Jeg fandt ud af at der var noget rod med de stier jeg brugte...

Jeg synes dog at du kom med noget godt input og vil gerne give points hvis du smider et svar.
Avatar billede jogii Nybegynder
18. oktober 2005 - 15:24 #5
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.
Avatar billede palle1976 Nybegynder
18. oktober 2005 - 15:30 #6
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 !!
Avatar billede Ny bruger Nybegynder

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.

Loading billede Opret Preview
Kategori
Computerworld tilbyder specialiserede kurser i database-management

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester