主题:  关于读取外部文件的奇怪问题?

night_5d

职务:普通成员
等级:2
金币:1.0
发贴:275
注册:2000/12/15 21:24:38
#12002/4/5 16:00:42
我将我的一个包含属性列表的线性列表存放在外部文件中,当在读回来时,字符串可以读到,但是一使用value()函数使字符串变成列表时就返回void,谁遇见过,怎么解决。很急。或者有什么别的办法。
以前我将类似变量保存在cast的field中,就可以读回来。并且我也试过将文件读入后先赋给一个field在读出来,但也不行。真得很奇怪。


[img]http://61.144.28.245/hjc/web/non-cgi//usravatars/paladin.gif[/img]
I thirst for freedom

donlee

职务:普通成员
等级:1
金币:1.0
发贴:271
注册:2000/12/8 8:52:18
#22002/4/6 9:31:12
可能是某个环节疏忽导致,仔细逐步跟踪调试一下吧。



night_5d

职务:普通成员
等级:2
金币:1.0
发贴:275
注册:2000/12/15 21:24:38
#32002/4/6 10:18:51
不是的,我都跟踪过好几便了也试了许多办法。到读取字符串时都是好的,但是一使用value()时就返回void。


[img]http://61.144.28.245/hjc/web/non-cgi//usravatars/paladin.gif[/img]
I thirst for freedom

night_5d

职务:普通成员
等级:2
金币:1.0
发贴:275
注册:2000/12/15 21:24:38
#42002/4/7 9:15:17
请高手们帮忙看一下


[img]http://61.144.28.245/hjc/web/non-cgi//usravatars/paladin.gif[/img]
I thirst for freedom

threem

职务:普通成员
等级:2
金币:1.0
发贴:338
注册:2001/6/14 13:52:15
#52002/4/7 10:02:51
估计你的列表有问题,是不是符合列表标准,对于出错的字符串列表,用value以后就是void

如 put value("[21,32,54,,,]")
-- void



night_5d

职务:普通成员
等级:2
金币:1.0
发贴:275
注册:2000/12/15 21:24:38
#62002/4/7 10:30:08
列表是:
[[#num: 1, #membername: "B_C_1", #memberloc: point(80, 50), #behavior: , #notetype: ], [#num: 2, #membername: "B_C_2", #memberloc: point(110, 50), #behavior: , #notetype: ], [#num: 3, #membername: "B_C_3", #memberloc: point(140, 50), #behavior: , #notetype: ], [#num: 4, #membername: "B_C_1", #memberloc: point(170, 50), #behavior: , #notetype: ], [#num: 5, #membername: "B_C_3", #memberloc: point(200, 50), #behavior: , #note[[#num: 1, #membername: "B_C_1", #memberloc: point(80, 50), #behavior: , #notetype: ], [#num: 10, #membername: "B_C_4", #memberloc: point(350, 50), #behavior: , #notetype: ], [#num: 11, #membername: "B_C_4", #memberloc: point(380, 50), #behavior: , #notetype: ], [#num: 807, #membername: "seq", #memberloc: point(182, 110), #behavior: , #notetype: ]]

应该没错吧,是从列表中赋值进取的


[img]http://61.144.28.245/hjc/web/non-cgi//usravatars/paladin.gif[/img]
I thirst for freedom

threem

职务:普通成员
等级:2
金币:1.0
发贴:338
注册:2001/6/14 13:52:15
#72002/4/7 10:45:14

Lingo Dictionary > S > setPref         

setPref

语法



setPref prefFileName, prefvalue

描述

这是一个命令, 用来书写一个纯文本文件到计算机的硬盘,该文件内容由prevalue来定义, 而文件名由PreName来指定。

PreName必须是合法的文件名, 为了使文件名在所有的操作平台上都合法,请使用不超过8个字符的文件名, 文件名只含数字和字母符号。

如果当前的电影是在浏览器的环境下播放, 使用这个命令后, 将会在Plug0In support文件夹下建立一个名字为Pref的子文件夹, 该命令只能书写文本文件到该文件夹。

如果当前的电影是在projector 或者Director的环境下播放, 使用这个命令后, 将会在Projector 或Director.exe所在的文件夹下建立一个名字为Pref的子文件夹。

不要使用这个命令来书写只读文件, 根据操作系统以及其版本的不同, 你也许会遇到出错信息,或其他的问题。

这个命令不会对字符串进行任何复杂的处理, 包括字符串的格式, 你只能在结合使用getPref()时对字符串进行操作, 该操作在内存里进行,完成后用setPref来重新覆盖原来的文件。

对于浏览器的情形,由setPref书写的数据不是保密的, 任何shockwave电影都可以读它并且上传该文件给服务器, 所以不要用setPref来保存任何需要保密的信息。

在Director的安装目录下, 有一个learning\Lingo Example文件夹, 其中的read and write text电影就是如何使用setPref的范例。

例子

下面的句柄将会保存文字域"Text Entry"的内容到指定的文件DayWare里。



on mouseUp me
    setPref "CurPrefs", member("Text Entry").text
end

参见

getPref()



threem

职务:普通成员
等级:2
金币:1.0
发贴:338
注册:2001/6/14 13:52:15
#82002/4/7 10:47:40
getPref()

语法:
getPref(prefFileName)
描述:
函数; 重新找回指定文件中的内容。
当你用这个函数时, 用由setPref 函数创建的文件名来代替prefFileName。如果无此文件存在getPref 返回 空(VOID)。


所用的文件名prefFileName 只需是一个有效的文件名,而不需完整路径;Director会补全路径。文件路径为 Director处理程序路径。此唯一有效的文件prefFileName是 .txt 和 .htm文件;任何其它存在的文件被拒绝。


不要用此命令访问只读文件或被锁定的媒体。

注意: 在浏览器中,用setPref 写的数据不是保密的。任何Shockwave 影片可以读取这个信息并可将其上载到一个服务器上。不应用setPref.存储秘密信息。


看看一个完整影片中使用getPref的例子,浏览Director应用文件夹中Examples文件夹中 Learning\Lingo读写文本影片的例子。

例如:

这个处理程序重新找到测试文件的内容并将其分配给Total Score域:

on mouseUp
    theText = getPref("Test")
    member("Total Score").text = theText
end

参见:

setPref



zhysea

职务:普通成员
等级:1
金币:0.0
发贴:76
注册:2001/2/8 20:11:01
#92002/4/17 14:11:00
存在外部文件中是不是txt阿?他会包含新行符的,要把这些不属于内容的东西删除的