使用nsdialog将文本文件读入文本框? NSIS

时间:2012-07-15 19:21:28

标签: nsis

我是NSIS脚本安装程序的新手。我需要在Custom页面中创建一个支持Multiline的TextBox。需要读取文本文件并将文本内容设置为TextBox。请在下面找到我的代码块:

StrCpy $3 ""
FileOpen $4 "C:\Users\Surya\Desktop\Installer\License.txt" r
loop:
FileRead $4 $1

StrCpy $3 "$3$1" ; append the line and copy it to another variable
IfErrors +1 loop   
FileClose $4

${NSD_SetText} $ctrlTextBox "$3"

以上代码只能读取8119个字符,但我的文件包含30,000多个字符。

请帮我阅读大文件并将内容设置为TextBox。

谢谢

1 个答案:

答案 0 :(得分:2)

如果您使用EM_SETSEL(两次)将插入符号移到最后,然后使用EM_REPLACESEL添加,则可以在当前(在循环内)使用一些文本填充文本框文本。

如果您可以使用丰富的编辑框,然后使用我很久以前写过的一些代码,您可以找到论坛帖子here ...

编辑:

只要文本框在您开始时为空,您就不必处理插入符号:

function custcreate
nsDialogs::Create 1018
Pop $0

nsDialogs::CreateControl ${__NSD_Text_CLASS} ${__NSD_Text_STYLE}|${ES_MULTILINE}|${WS_VSCROLL}|${ES_READONLY} ${__NSD_Text_EXSTYLE} 0 0 100% 50u ""
Pop $0

FileOpen $4 ${__FILE__}" r
loop:
    FileRead $4 $1
    SendMessage $0 ${EM_REPLACESEL} 0 "STR:$1"
    IfErrors +1 loop
FileClose $4

nsDialogs::Show
functionend