Delete lines from log window by line numbers
From NSIS Wiki
| Author: Afrow UK (talk, contrib) |
Contents |
[edit] Description
Here are two functions to delete selective lines from the installer log window.
[edit] Usage1
[edit] Before
DetailPrint "line1 from top" DetailPrint "line2 from top" DetailPrint "line3 from top" DetailPrint "line4 from top" Push "1,4" Call DeleteFromTop
[edit] After
DetailPrint "line2 from top" DetailPrint "line3 from top"
[edit] Usage2
[edit] Before
DetailPrint "line4 from end" DetailPrint "line3 from end" DetailPrint "line2 from end" DetailPrint "line1 from end" Push "2" Call DeleteFromEnd
[edit] After
DetailPrint "line4 from end" DetailPrint "line3 from end" DetailPrint "line1 from end"
[edit] The Functions
Function DeleteFromTop Exch $R0 Push $R1 Push $R2 StrCpy $R2 0 loop: IntOp $R2 $R2 - 1 StrCpy $R1 $R0 1 $R2 StrCmp $R1 "" +2 StrCmp $R1 , 0 loop IntOp $R2 $R2 + 1 StrCpy $R1 $R0 "" $R2 IntOp $R2 $R2 - 1 StrCpy $R0 $R0 $R2 IntOp $R1 $R1 - 1 FindWindow $R2 "#32770" "" $HWNDPARENT GetDlgItem $R2 $R2 0x3F8 SendMessage $R2 0x1008 $R1 0 StrCmp $R0 "" exit StrCpy $R2 0 Goto loop exit: Pop $R2 Pop $R1 Pop $R0 FunctionEnd
Function DeleteFromEnd Exch $R0 Push $R1 Push $R2 Push $R3 Push $R4 FindWindow $R3 "#32770" "" $HWNDPARENT GetDlgItem $R3 $R3 0x3F8 SendMessage $R3 0x1004 0 0 $R3 StrCpy $R2 0 StrCpy $R4 -1 loop: IntOp $R2 $R2 - 1 StrCpy $R1 $R0 1 $R2 StrCmp $R1 "" +2 StrCmp $R1 , 0 loop IntOp $R2 $R2 + 1 StrCpy $R1 $R0 "" $R2 IntOp $R2 $R2 - 1 StrCpy $R0 $R0 $R2 IntOp $R1 $R3 - $R1 IntOp $R4 $R4 + 1 IntOp $R1 $R1 - $R4 FindWindow $R2 "#32770" "" $HWNDPARENT GetDlgItem $R2 $R2 0x3F8 SendMessage $R2 0x1008 $R1 0 StrCmp $R0 "" exit StrCpy $R2 0 Goto loop exit: Pop $R4 Pop $R3 Pop $R2 Pop $R1 Pop $R0 FunctionEnd
Functions created after this topic.
-Stu (Afrow UK)

