我是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。
谢谢
答案 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