简体   繁体   中英

Reading a text file into a text box using nsdialog? NSIS

I am new to NSIS scripting installer. I need to create a TextBox with Multiline support, in Custom page. Need to read a text file and set the text content to TextBox. Please find my code block below:

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"

The above code able to read only 8119 characters only, but my file contains 30,000+ characters.

Please help me to read the large file and set the content to TextBox.

Thank You

You can fill a textbox with a little bit of text at the time (inside your loop) if you use EM_SETSEL (twice) to move the caret to the end and then use EM_REPLACESEL to append text.

If you can use a rich edit box instead then use some code I wrote a long time ago, you can find the forum thread here ...

Edit:

As long as the textbox is empty when you begin you don't have to deal with the caret:

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

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM