在4D数据库上创建网络文档

时间:2015-01-07 04:26:44

标签: 4d-database

我想问一下4D是否可以在网络目录上创建文档。例如:

vIP:="\\100.100.100.100" // this is a hypothetical IP
vPath:=vIP+"\storage\"
vDoc:=Create document(vPath+"notes.txt")
If(OK=1)
    SEND PACKET(vDoc;"Hello World")
    CLOSE DOCUMENT(vDoc)
End if

3 个答案:

答案 0 :(得分:0)

这样做的一种方法是:

您可以将第二台计算机的驱动器映射到运行4d数据库的计算机。 然后这个驱动器就像一个本地驱动器。

例如: 我已经映射了一个名为" D"在远程机器上行驶,它变成了" W"在运行4D数据库的机器上运行。 那么你可以使用这段代码

c_Text(VPATH)

VPATH:=" W:\ VAR \ WWW ....." //临时路径.....

vDoc:=创建文档(vPath +" notes.txt")

如果(OK = 1)

SEND PACKET(vDoc;" Hello World")

关闭文件(vDoc)

如果

结束

答案 1 :(得分:0)

我知道这是一个老问题,但是我们这里没有太多的四维编码员,所以我会为后人回答这个问题!

是的,你可以像这样在网络共享上创建一个文档,假设你有相应的权限

在这种情况下,我认为你只需要小心你如何逃避道路。确保你的反斜杠加倍,以便代码块看起来像这样(注意IP地址和文件夹名称周围的额外反斜杠):

vIP:="\\\\100.100.100.100"  // this is a hypothetical IP
vPath:=vIP+"\\storage\\"
vDoc:=Create document(vPath+"notes.txt")
If (OK=1)
  SEND PACKET(vDoc;"Hello World")
  CLOSE DOCUMENT(vDoc)
End if 

希望这有帮助!

答案 2 :(得分:0)

是的,虽然没有文档,CREATE DOCUMENT命令可以与有效UNC path 一起使用,前提是您有足够的权限在给定的路径上创建文档。

但是,您的示例代码存在问题。您的问题归结为您使用反斜杠\字符。

反斜杠\字符用于4D中的escape sequences,因此用于转义许多其他字符,因此它也必须自行转义。只需将示例代码中的所有反斜杠加倍\\\即可纠正此问题。

您的示例代码:

vIP:="\\100.100.100.100" // this is a hypothetical IP
vPath:=vIP+"\storage\"
vDoc:=Create document(vPath+"notes.txt")
If(OK=1)
    SEND PACKET(vDoc;"Hello World")
    CLOSE DOCUMENT(vDoc)
End if

应该这样写:

vIP:="\\\\100.100.100.100" // this is a hypothetical IP
vPath:=vIP+"\\storage\\"
vDoc:=Create document(vPath+"notes.txt")
If(OK=1)
    SEND PACKET(vDoc;"Hello World")
    CLOSE DOCUMENT(vDoc)    
End if

使用Test Path Name确认路径有效,并且该文件不存在,可以进一步改进您的代码。然后,如果确实存在,您甚至可以使用Open DocumentSet Document Position附加到文档,如下所示:

vIP:="\\\\100.100.100.100"
vPath:=vIP+"\\storage\\"
vDocPath:=vPath+"notes.txt"
If (Test path name(vPath)=Is a folder)
  // is a valid path
  If (Not(Test path name(vDocPath)=Is a document))
    // document does not exist
    vDoc:=Create document(vDocPath)
    If (OK=1)
      SEND PACKET(vDoc;"Hello World")
      CLOSE DOCUMENT(vDoc)
    End if 
  Else 
    // file already exists at location!
    vDoc:=Open document(vDocPath)
    If (OK=1)
      SET DOCUMENT POSITION(vDoc;0;2)  // position 0 bytes from EOF
      SEND PACKET(vDoc;"\rHello Again World") // new line prior to Hello
      CLOSE DOCUMENT(vDoc)
    End if 
  End if 
Else 
  // path is not valid!
  ALERT(vPath+" is invalid")
End if