Delete lines from log window by line numbers
From NSIS Wiki
Jump to navigationJump to search
Author: Afrow UK (talk, contrib) |
Description
Here are two functions to delete selective lines from the installer log window.
Usage1
Before
DetailPrint "line1 from top" DetailPrint "line2 from top" DetailPrint "line3 from top" DetailPrint "line4 from top" Push "1,4" Call DeleteFromTop
After
DetailPrint "line2 from top" DetailPrint "line3 from top"
Usage2
Before
DetailPrint "line4 from end" DetailPrint "line3 from end" DetailPrint "line2 from end" DetailPrint "line1 from end" Push "2" Call DeleteFromEnd
After
DetailPrint "line4 from end" DetailPrint "line3 from end" DetailPrint "line1 from end"
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)