Macro to increment a value in the file by 1

Help with writing and playing macros

Macro to increment a value in the file by 1

Postby FLFireman » Fri Sep 04, 2009 2:03 pm

So I'm on the free trial of UE... fantastic editor! Even with the macro shortcomings.

The one main thing I needed to do to some huge files is increment some values, and with that functionality not there, I had to write a macro for it, before ever seeing the discussion forums here. I figured I'd share it since I couldn't find a more streamlined version here that didn't use something outside itself like the clipboard or calling another macro.

When the macro is executed, the cursor MUST be sitting before the LAST character in the number, and "Continue if a Find with Replace not found" MUST be checked. Depending on what the number is, the cursor can end up anywhere in the number or at the end. The macro understands decimal and comma but not leading zeroes.

The timing loop at the end may have to be adjusted to suit your system.

Code: Select all
InsertMode
ColumnModeOff
HexOff
UnixReOff
IfCharIs "0"
Key DEL
"1"
ExitMacro
EndIf
IfCharIs "1"
Key DEL
"2"
ExitMacro
EndIf
IfCharIs "2"
Key DEL
"3"
ExitMacro
EndIf
IfCharIs "3"
Key DEL
"4"
ExitMacro
EndIf
IfCharIs "4"
Key DEL
"5"
ExitMacro
EndIf
IfCharIs "5"
Key DEL
"6"
ExitMacro
EndIf
IfCharIs "6"
Key DEL
"7"
ExitMacro
EndIf
IfCharIs "7"
Key DEL
"8"
ExitMacro
EndIf
IfCharIs "8"
Key DEL
"9"
ExitMacro
EndIf
IfCharIs "9"
Key DEL
"0"
Key LEFT ARROW
EndIf
Loop
IfCharIs "0.,"
Key LEFT ARROW
EndLoop
EndIf
IfCharIs "123456789"
PlayMacro 1 "Increment"
Else
Key RIGHT ARROW
"1"
EndIf
Loop 100
EndLoop

/poke IDM "If this proves useful enough I wouldn't mind a complimentary UE license..... otherwise I'll just go back to the freeware editor I was using since my company's too cheap to buy anything worthwhile." :mrgreen:
FLFireman
Newbie
 
Posts: 2
Joined: Fri Sep 04, 2009 1:44 pm

Re: Macro to increment a value in the file by 1

Postby Mofi » Sat Sep 05, 2009 4:57 am

I think, Sergey Pavlovich Korolyov (or Sergei Pavlovich Korolev or German Sergei Pawlowitsch Koroljow) said once as asked why the Russian Buran looks like US Space Shuttle: "Similar problems result in similar solutions."

Your macro is similar to my CountUp macro which I have written years ago for having an incrementing integer variable in macros. Your macro is for incrementing positive values (float and integer).

It's quite good, but has some weaknesses. It deletes the character to increment instead of simply overwriting it in overstrike mode causing an additional unnecessary undo step. And it fails when the number 9 (or 99 or 9.99, ...) is at start of a line because then "1" is inserted at end of the line above or causes the number at end of the line above to be also increased, except configuration setting Disable left cursor from going to previous line is used. Also the recursive call of the macro is not really necessary and therefore the timing loop is not necessary.

There are 2 other famous quotations from Sergey Korolyov (freely translated from German Wikipedia page):

The genius of a construction proves to be in its simplicity - making something complex can everybody.
Let us find a compromise solution - let us do it as I say.

Here is my macro for increment a value by 1. This macro also requires that the cursor is left the digit which should be increased first which is normally the most left one, except you want to increase a number by 10, 100, 1.00, 0.1, etc.

Code: Select all
OverStrikeMode
ColumnModeOff
HexOff
Loop
IfCharIs "0"
"1"
ExitLoop
EndIf
IfCharIs "1"
"2"
ExitLoop
EndIf
IfCharIs "2"
"3"
ExitLoop
EndIf
IfCharIs "3"
"4"
ExitLoop
EndIf
IfCharIs "4"
"5"
ExitLoop
EndIf
IfCharIs "5"
"6"
ExitLoop
EndIf
IfCharIs "6"
"7"
ExitLoop
EndIf
IfCharIs "7"
"8"
ExitLoop
EndIf
IfCharIs "8"
"9"
ExitLoop
EndIf
IfCharIs ",."
IfColNum 1
InsertMode
"1"
ExitLoop
Else
Key LEFT ARROW
EndIf
Else
IfCharIs "9"
"0"
Key LEFT ARROW
IfColNum 1
InsertMode
"1"
ExitLoop
EndIf
Key LEFT ARROW
IfCharIs ",.0123456789"
Else
Key RIGHT ARROW
InsertMode
"1"
ExitLoop
EndIf
EndIf
EndIf
EndLoop
InsertMode

Same as above UEM with indentations:

Code: Select all
OverStrikeMode
ColumnModeOff
HexOff
UnixReOff
Loop
    IfCharIs "0"
        "1"
        ExitLoop
    EndIf
    IfCharIs "1"
        "2"
        ExitLoop
    EndIf
    IfCharIs "2"
        "3"
        ExitLoop
    EndIf
    IfCharIs "3"
        "4"
        ExitLoop
    EndIf
    IfCharIs "4"
        "5"
        ExitLoop
    EndIf
    IfCharIs "5"
        "6"
        ExitLoop
    EndIf
    IfCharIs "6"
        "7"
        ExitLoop
    EndIf
    IfCharIs "7"
        "8"
        ExitLoop
    EndIf
    IfCharIs "8"
        "9"
        ExitLoop
    EndIf
    IfCharIs ",."
        IfColNum 1
            InsertMode
            "1"
            ExitLoop
        Else
            Key LEFT ARROW
        EndIf
    Else
        IfCharIs "9"
            "0"
            Key LEFT ARROW
            IfColNum 1
                InsertMode
                "1"
                ExitLoop
            EndIf
            Key LEFT ARROW
            IfCharIs ",.0123456789"
            Else
                Key RIGHT ARROW
                InsertMode
                "1"
                ExitLoop
            EndIf
        EndIf
    EndIf
EndLoop
InsertMode

PS: If somebody finds the original quotations from Sergey Korolyov in English which I translated here from German, please post the link to the source for me. Thanks.
User avatar
Mofi
Grand Master
Grand Master
 
Posts: 4054
Joined: Thu Jul 29, 2004 11:00 pm
Location: Vienna

Re: Macro to increment a value in the file by 1

Postby FLFireman » Sat Sep 05, 2009 12:26 pm

Hmmm I wish I would have found yours first... would have saved me an hour!
FLFireman
Newbie
 
Posts: 2
Joined: Fri Sep 04, 2009 1:44 pm


Return to Macros