2012-07-15 55 views
0

我是NSIS腳本安裝程序的新手。我需要在自定義頁面中創建一個帶Multiline支持的TextBox。需要讀取文本文件並將文本內容設置爲TextBox。請在下面找到我的代碼塊:使用nsdialog將文本文件讀入文本框? NSIS

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。

謝謝

回答

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 
+0

TextBox有一些限制 - 文本的長度。我建議使用Rich Edit Box。此外,NSIS變量的大小有限 - 我認爲它是1024個字符。 – Slappy 2012-07-17 05:31:16

+0

您有EM_LIMITTEXT來擴展文本框總數限制。 1024是ANSI版本的默認變量大小,但他可能使用不同的版本... – Anders 2012-07-17 06:06:02

+0

感謝安德斯, 豐富的編輯控件解決了我的問題 ; === TextBox1(type:TextMultiline)=== nsDialogs :: CreateControl RichEdit20A $ {WS_VISIBLE} | $ {WS_CHILD} | $ {WS_TABSTOP} | $ {WS_VSCROLL} | $ {ES_READONLY} | $ {ES_MULTIline} | $ { ES_WANTRETURN} $ {__ NSD_Text_EXSTYLE} 8 120 440 104「」 Pop $ txtLicenseControl nsRichEdit :: Load $ txtLicenseControl「C:\ Users \ Surya \ Desktop \ Installer \ License.txt」 – 2012-08-02 08:39:57