所以,我对LiveCode非常陌生,我在.livecode文件所在的目录中有一个名为' words.txt'的外部文件,带有英文单词,每个都在一个新行上。我计划将此文件读入变量,然后从该变量中选择一个随机单词。但是,我很难过如何找到文件路径并将其插入到我执行此操作所需的语法中。我的代码如下:
put url ("binfile:" & filePathGoesHere) into dictionary
replace crlf with lf in dictionary
replace numToChar(13) with lf in dictionary
put any line of dictionary into randomword
文件路径应该插入filePathGoesHere
的代码中。编译程序后,我将把它和它的资源移动一点(从计算机到计算机),因此,除了文本文件与编译程序保持在同一文件夹之外,文件路径也会改变。如果已编译的程序和txt文件所在的文件夹被称为" MyProgram"?
非常感谢帮助,如果需要进一步说明,我可以提供。我还有一个名为" resources"的文件夹。如果移动它可以帮助。
答案 0 :(得分:2)
如果您正在构建的堆栈是供您自己使用的,您可以将外部文件放在任何位置,但如果您要将堆栈交付给其他用户,则需要计划外部文件的放置位置,以及如何。
确定位于堆栈外部的文件路径的简单方法是使用堆栈的文件名:
put the fileName of this stack into theFilePath
set the itemDel to "/"
put "words.txt" into the last item of theFilePath
现在,theFilePath变量将是对外部文件的绝对路径引用。如果文件放在文件夹“TextFiles”中,您可以这样做:
put the fileName of this stack into theFilePath
set the itemDel to "/"
put "TextFiles/words.txt" into the last item of theFilePath
如果要将堆栈交付给其他人,则应将外部文件写入公共系统文件夹,或者需要使用安装程序来定义文件/文件夹的放置位置。使用specialFolderPath函数找到公共文件夹路径:
put specialFolderPath("Documents") into the theFolderPath
LiveCode最近增加了一个“资源”文件夹 - specialFolderPath(“资源”) - 它可以方便地在桌面和移动平台上交付。另外,请记住,出于安全原因,这些文件夹中很少允许写入包含在其中的现有文件。 “首选项”和“文档”是文件夹的两个示例,您可以在其中更改文件的内容。
LC字典包含每个文件夹的详细信息。
答案 1 :(得分:0)
如果您使用file:scheme而不是bindle:LiveCode会自动将行尾字符转换为LF,因此可能不需要该步骤。 (虽然如果您正在阅读在Mac上以本机Windows编码生成的文本文件,则可能需要它。)您甚至不需要将其读入变量。你可以这样做:
put any line of URL ("file:" & specialFolderPath("resources") & "/words.txt") \
into tRandomWord