Per the manual, je devrais être en mesure d'obtenir le texte d'un contrôle de texte avec le code comme ceci:
${NSD_GetText} $TextBox $0
MessageBox MB_OK "You typed:$\n$\n$0"
Je reçois toujours la chaîne vide de cet appel. Dans le code ci-dessous, la zone de texte affiche "correct" mais les détails indiquent toujours Contents:
; si je commente l'appel à ${NSD_GetText}
, j'obtiens Contents: wrong
.
!include nsDialogs.nsh
!include LogicLib.nsh
Var Dialog
Var TextBox
Page custom nsDialogsPage nsDialogsPageLeave
Page instfiles
Function nsDialogsPage
StrCpy $0 "wrong"
nsDialogs::Create 1018
Pop $Dialog
${If} $Dialog == error
Abort
${EndIf}
${NSD_CreateText} 0 12u 93% 12u "correct"
Pop $TextBox
nsDialogs::Show
FunctionEnd
Function nsDialogsPageLeave
FunctionEnd
Section
${NSD_GetText} $TextBox $0
DetailPrint "Contents: $0"
SectionEnd
Je pensais que le contrôle n'existait pas quand je tentais d'imprimer son contenu, et avons essayé de mettre à jour le texte tel qu'il a été tapé dans le contrôle; ça n'a pas aidé. Il est invraisemblable que NSIS soit brisé de cette façon, donc qu'est-ce que je fais de mal?
!include nsDialogs.nsh
!include LogicLib.nsh
Var Dialog
Var TextBox
Var Text
Page custom nsDialogsPage nsDialogsPageLeave
Page instfiles
Function nsDialogsPage
StrCpy $0 "wrong"
nsDialogs::Create 1018
Pop $Dialog
${If} $Dialog == error
Abort
${EndIf}
${NSD_CreateText} 0 12u 93% 12u "correct"
Pop $TextBox
${NSD_OnChange} $TextBox UpdateText
nsDialogs::Show
FunctionEnd
Function nsDialogsPageLeave
FunctionEnd
Function UpdateText
${NSD_GetText} $TextBox $Text
FunctionEnd
Section
DetailPrint "Contents: $Text"
SectionEnd
Dang, j'oublié de terminer ce test. Maintenant, j'ai deux autres raisons de me sentir bête. Merci pour l'aide. – Grault