forum.vdsworld.com Forum Index forum.vdsworld.com
Visit VDSWORLD.com
 
 FAQFAQ   SearchSearch   MemberlistMemberlist   UsergroupsUsergroups   RegisterRegister 
 ProfileProfile   Log in to check your private messagesLog in to check your private messages   Log inLog in 


Code checker (IF, REPEAT, WHILE, brackets, and vars)

 
Post new topic   Reply to topic    forum.vdsworld.com Forum Index -> Visual DialogScript 3 Source Code
View previous topic :: View next topic  
Author Message
Mac
Professional Member
Professional Member


Joined: 08 Jul 2000
Posts: 1585
Location: Oklahoma USA

PostPosted: Mon Mar 17, 2003 5:08 pm    Post subject: Code checker (IF, REPEAT, WHILE, brackets, and vars) Reply with quote

Added mismatched bracket and quote marks checking, and find
vars routine (the find vars routine is faster than my old variable
finder program).

Tip - if you compile this and put it in your VDS tools folder, it will
be added to your VDS IDE Tools menu.

- Checks IF/END, REPEAT/UNTIL, WHILE/WEND commands, checks for
mismatched brackets (parenthesis, braces, square brackets), checks
for mismatched quotes, and finds variables.
- Shows number of brackets missing, what line, and whether LEFT or
RIGHT.
- Finds largest nesting depth of IF, REPEAT, WHILE, and GOSUB
commands (traces subroutines for nested depths).
- Portions of code may be copied from clipboard and checked.
- Displays IF/END, REPEAT/UNTIL, and WHILE/WEND in indented form.
- Results may be saved to file or copied to clipboard.
- Program window is resizable.

NOTES:
- Does not check brackets and vars between quotes, so make sure
quote marks match first.
- Nesting depth may not be 100% accurate in cases where
subroutines are exited on IF conditions.
- If your program uses a variable in a GOTO command (such as
"goto %e" etc.), the code checker will see this as an error because
it has no way of knowing the value of the variable.
____________________________________________________________________________________________________________________________________________________________________________________________________________________
Code:

rem -- VDS3 and VDS4 compatible --
OPTION SCALE, 96
OPTION DECIMALSEP, "."
%%width = @diff(@sysinfo(SCREENWIDTH), 10)
TITLE By Mac
DIALOG CREATE, "Mac's Code Syntax Checker",-1,0,%%width,300,RESIZABLE
  %%hwnd = @winexists("Mac's Code Syntax Checker")
  DIALOG ADD,STYLE,S1,MS Sans Serif,8,B
  DIALOG ADD,STYLE,S2,Courier new,9
  DIALOG ADD,MENU,&Source,&File|Ctrl+F,&Clipboard|Ctrl+V,-,E&xit|Alt+X
  DIALOG ADD,MENU,&Results,&Save Results|Ctrl+S,Copy Results|Ctrl+C
  DIALOG ADD,MENU,&Check,&Check Code Pairs,Check Pairs and &Trace,Check Brackets,Check Quotes,Find Variables
  DIALOG ADD,MENU,&Help,&Help

  DIALOG ADD,LIST,L1,0,0,@div(%%width, 2),280,,S2
  DIALOG ADD,LIST,L2,0,@div(%%width, 2),@div(%%width, 2),280,,S1,CLICK
  rem -- Add horizontal scroll to lists --
  %z = @sendmsg(@winexists(~L1),$0194,2000,0)
  %z = @sendmsg(@winexists(~L2),$0194,2000,0)
  DIALOG ADD,STATUS,Stat,"Ready...",S1
DIALOG SHOW

rem -- load from command line --
if @file(%1)
   LIST LOADFILE, L1, %1
   %f = %1
end

rem -- main code working list --
LIST CREATE, 1
rem -- results working list --
LIST CREATE, 2
rem -- store line number of subprocedures while tracing --
LIST CREATE, 3
rem -- sorted list (removes variable duplicates) --
LIST CREATE, 4, SORTED

rem -- possible variable chars --
%%vchars = "0123456789_abcdefghijklmnopqrstuvwxyz"

%e = @event()
:EVLOOP
  DIALOG SET, Stat, "Ready... "%f   @count(L1) lines
  WAIT EVENT
  PARSE "%e;%d", @event(d)
  goto %e

:RESIZE
  DIALOG SETPOS,L1,0,0,@div(@winpos(%%hwnd,W), 2),@diff(@winpos(%%hwnd,H), 66)
  DIALOG SETPOS,L2,0,@div(@winpos(%%hwnd,W), 2),@diff(@div(@winpos(%%hwnd,W), 2), 7),@diff(@winpos(%%hwnd,H), 66)
  goto EVLOOP

:L2CLICK
  OPTION FIELDSEP, "#"
  PARSE ";%l", @item(L2)
  if @both(@numeric(%l), @greater(@count(L1), @pred(%l)))
     LIST SEEK, L1, @pred(%l)
  end
  OPTION FIELDSEP, "|"
  goto EVLOOP

:FileMENU
  %f = @filedlg()
  if @file(%f)
     LIST LOADFILE, L1, %f
     LIST CLEAR, L2
  else
     INFO No valid file...@tab()
  end
  goto EVLOOP

:Check Pairs and TraceMENU
  %%trace = 1
:Check Code PairsMENU
  if @greater(1, @count(L1))
     %%trace = ""
     INFO Nothing loaded...@tab()
     goto EVLOOP
  end
  LIST ASSIGN, 1, L1
  LIST CLEAR, L2
  rem -- Loop straight thru first, counting all
  rem -- IF/ELSE/ELSIF/END, REPEAT/UNTIL, WHILE/WEND and GOSUBs.
  %%ifnum = 0
  %%elsenum = 0
  %%elsifnum = 0
  %%endnum = 0
  %%repeatnum = 0
  %%untilnum = 0
  %%whilenum = 0
  %%wendnum = 0
  %%gosubnum = 0
  %x = 0
  REPEAT
    DIALOG SET, Stat, Checking @succ(%x) of @count(1) lines...
    %s = @trim(@item(1, %x))
    if @equal(@substr(%s, 1,2), "IF")
       %%ifnum = @succ(%%ifnum)
    end
    if @equal(@substr(%s, 1,4), "ELSE")
       %%elsenum = @succ(%%elsenum)
    end
    if @equal(@substr(%s, 1,5), "ELSIF")
       %%elsifnum = @succ(%%elsifnum)
    end
    if @equal(@substr(%s, 1,3), "END")
       %%endnum = @succ(%%endnum)
    end
    if @equal(@substr(%s, 1,6), "REPEAT")
       %%repeatnum = @succ(%%repeatnum)
    end
    if @equal(@substr(%s, 1,5), "UNTIL")
       %%untilnum = @succ(%%untilnum)
    end
    if @equal(@substr(%s, 1,5), "WHILE")
       %%whilenum = @succ(%%whilenum)
    end
    if @equal(@substr(%s, 1,4), "WEND")
       %%wendnum = @succ(%%wendnum)
    end
    if @equal(@substr(%s, 1,5), "GOSUB")
       %%gosubnum = @succ(%%gosubnum)
    end
    %x = @succ(%x)
  UNTIL @equal(%x, @count(1))

  if @not(%%trace)
     goto SkipTrace
  end

  rem -- Trace thru program following GOSUB commands --
  %%ifcount = 0
  %%ifmax = 0
  %%repeatcount = 0
  %%repeatmax = 0
  %%whilecount = 0
  %%whilemax = 0
  %%submax = 0
  %%indent = 0
  %%curpos = 0
  %%loop = 0
  REPEAT
    if @greater(@count(1), %%curpos)
       LIST SEEK, 1, %%curpos
    end
    %s = @trim(@item(1))
    GOSUB CheckCommands
    %%curpos = @succ(%%curpos)
    %%loop = @succ(%%loop)
    DIALOG SET, Stat, Tracing line @succ(@index(1)) of @count(1) lines...
  UNTIL @greater(%%loop, @count(1)) @event()
  :SkipTrace
  LIST ASSIGN, L2, 2
  LIST ADD, L2, "______________________________________"
  LIST ADD, L2, ""
  LIST ADD, L2, "IF/END/ELSE/ELSIF:"
  if @not(@equal(%%ifnum, %%endnum))
     LIST ADD, L2, "   *** ERROR - Mismatched IF/END ***"
  end
  LIST ADD, L2, "   "IF: %%ifnum
  LIST ADD, L2, "   "END: %%endnum
  LIST ADD, L2, "   "ELSE: %%elsenum
  LIST ADD, L2, "   "ELSIF: %%elsifnum
  if %%trace
     LIST ADD, L2, "   "Deepest nest: %%ifmax
  end
  LIST ADD, L2, ""
  LIST ADD, L2, "REPEAT/UNTIL:"
  if @not(@equal(%%repeatnum, %%untilnum))
     LIST ADD, L2, "   *** ERROR - Mismatched REPEAT/UNTIL ***"
  end
  LIST ADD, L2, "   "REPEAT: %%repeatnum
  LIST ADD, L2, "   "UNTIL: %%untilnum
  if %%trace
     LIST ADD, L2, "   "Deepest nest: %%repeatmax
  end
  LIST ADD, L2, ""
  LIST ADD, L2, "WHILE/WEND:"
  if @not(@equal(%%whilenum, %%wendnum))
     LIST ADD, L2, "   *** ERROR - Mismatched WHILE/WEND ***"
  end
  LIST ADD, L2, "   "WHILE: %%whilenum
  LIST ADD, L2, "   "WEND: %%wendnum
  if %%trace
     LIST ADD, L2, "   "Deepest nest: %%whilemax
  end
  LIST ADD, L2, ""
  LIST ADD, L2, "SUBPROCEDURES:"
  LIST ADD, L2, "   "GOSUB: %%gosubnum
  if %%trace
     LIST ADD, L2, "   "Deepest nest: %%submax
  end
  LIST ADD, L2, ""
  LIST CLEAR, 1
  LIST CLEAR, 2
  LIST CLEAR, 3
  %%trace = ""
  goto EVLOOP

:Check BracketsMENU
  if @greater(1, @count(L1))
     INFO Nothing loaded...@tab()
     goto EVLOOP
  end
  LIST ASSIGN, 1, L1
  LIST CLEAR, L2
  %x = 0
  REPEAT
    DIALOG SET, Stat, Checking @succ(%x) of @count(1) lines...
    rem -- count left and right brackets --
    if @greater(@len(@item(1, %x)), 0)
       rem -- parenthesis --
       %%left_parenth = 0
       %%right_parenth = 0
       rem -- braces { } --
       %%left_brace = 0
       %%right_brace = 0
       rem -- square brackets --
       %%left_bracket = 0
       %%right_bracket = 0
       %y = 1
       REPEAT
         rem -- skip quoted strings --
         if @equal(@substr(@item(1, %x), %y), @chr(34))
            REPEAT
              %y = @succ(%y)
            UNTIL @greater(%y, @len(@item(1, %x)))@equal(@substr(@item(1, %x), %y), @chr(34))
         end
         if @equal(@substr(@item(1, %x), %y), "(")
            %%left_parenth = @succ(%%left_parenth)
         end
         if @equal(@substr(@item(1, %x), %y), ")")
            %%right_parenth = @succ(%%right_parenth)
         end
         if @equal(@substr(@item(1, %x), %y), "{")
            %%left_brace = @succ(%%left_brace)
         end
         if @equal(@substr(@item(1, %x), %y), "}")
            %%right_brace = @succ(%%right_brace)
         end
         if @equal(@substr(@item(1, %x), %y), "[")
            %%left_bracket = @succ(%%left_bracket)
         end
         if @equal(@substr(@item(1, %x), %y), "]")
            %%right_bracket = @succ(%%right_bracket)
         end
         %y = @succ(%y)
       UNTIL @greater(%y, @len(@item(1, %x)))
       if @not(@equal(%%left_parenth, %%right_parenth))
          if @greater(%%left_parenth, %%right_parenth)
             LIST ADD, L2, @diff(%%left_parenth, %%right_parenth)" missing RIGHT parenthesis ')' line # "@succ(%x)
          else
             LIST ADD, L2, @diff(%%right_parenth, %%left_parenth)" missing LEFT parenthesis '(' line # "@succ(%x)
          end
       end
       if @not(@equal(%%left_brace, %%right_brace))
          if @greater(%%left_brace, %%right_brace)
             LIST ADD, L2, @diff(%%left_brace, %%right_brace)" missing RIGHT braces '}' line # "@succ(%x)
          else
             LIST ADD, L2, @diff(%%right_brace, %%left_brace)" missing LEFT braces '{' line # "@succ(%x)
          end
       end
       if @not(@equal(%%left_bracket, %%right_bracket))
          if @greater(%%left_bracket, %%right_bracket)
             LIST ADD, L2, @diff(%%left_bracket, %%right_bracket)" missing RIGHT square brackets ']' line # "@succ(%x)
          else
             LIST ADD, L2, @diff(%%right_bracket, %%left_bracket)" missing LEFT square brackets '[' line # "@succ(%x)
          end
       end
    end
    %x = @succ(%x)
  UNTIL @greater(%x, @pred(@count(1)))
  if @greater(1, @count(L2))
     LIST ADD, L2, "No mismatched brackets found"
  end
  goto EVLOOP

:Check QuotesMENU
  if @greater(1, @count(L1))
     INFO Nothing loaded...@tab()
     goto EVLOOP
  end
  LIST ASSIGN, 1, L1
  LIST CLEAR, L2
  %x = 0
  REPEAT
    DIALOG SET, Stat, Checking @succ(%x) of @count(1) lines...
    rem -- count quotes and divide by 2 --
    if @greater(@len(@item(1, %x)), 0)
       %s = @trim(@item(1, %x))
       %%quotes = 0
       rem -- skip first char to allow for LOADTEXT --
       %y = 2
       REPEAT
         if @equal(@substr(%s, %y), @chr(34))
            %%quotes = @succ(%%quotes)
         end
         %y = @succ(%y)
       UNTIL @greater(%y, @len(%s))
       if @greater(@mod(%%quotes, 2), 0)
          LIST ADD, L2, "Mismatched quotation marks line # "@succ(%x)
       end
    end
    %x = @succ(%x)
  UNTIL @greater(%x, @pred(@count(1)))
  if @greater(1, @count(L2))
     LIST ADD, L2, "No mismatched quotation marks found"
  end
  goto EVLOOP

:Find VariablesMENU
  if @greater(1, @count(L1))
     INFO Nothing loaded...@tab()
     goto EVLOOP
  end
  LIST ASSIGN, 1, L1
  LIST CLEAR, L2
  LIST CLEAR, 4
  %x = 0
  REPEAT
    DIALOG SET, Stat, Checking @succ(%x) of @count(1) lines...
    rem -- find vars --
    if @greater(@len(@item(1, %x)), 0)
       %%var = ""
       %y = 1
       REPEAT
         rem -- skip quoted strings --
         if @equal(@substr(@item(1, %x), %y), @chr(34))
            REPEAT
              %y = @succ(%y)
            UNTIL @greater(%y, @len(@item(1, %x)))@equal(@substr(@item(1, %x), %y), @chr(34))
         end
         if @equal(@substr(@item(1, %x), %y), "%")
            rem -- user defined --
            if @equal(@substr(@item(1, %x), @succ(%y)), "%")
               %%var = %%var@substr(@item(1, %x), %y)
               %y = @succ(%y)
               REPEAT
                 %%var = %%var@substr(@item(1, %x), %y)
                 %y = @succ(%y)
               UNTIL @greater(%y, @len(@item(1, %x)))@equal(@pos(@substr(@item(1, %x), %y), %%vchars), 0)
               if @equal(@substr(@item(1, %x), %y), "%")
                  %y = @pred(%y)
               end
            else
               rem -- check for standard vars a-z --
               if @greater(@pos(@substr(@item(1, %x), @succ(%y)), %%vchars), 0)
                  %%var = %%var@substr(@item(1, %x), %y)@substr(@item(1, %x), @succ(%y))
                  %y = @succ(%y)
               end
            end
            if @greater(@len(%%var), 1)
               LIST ADD, 4, %%var
               %%var = ""
            end
         end
         %y = @succ(%y)
       UNTIL @greater(%y, @len(@item(1, %x)))
    end
    %x = @succ(%x)
  UNTIL @greater(%x, @pred(@count(1)))
  if @greater(1, @count(4))
     LIST ADD, 4, "No variables found"
  else
     LIST ADD, 4, "--" @count(4)" variables found --"
  end
  LIST ASSIGN, L2, 4
  LIST CLEAR, 4
  goto EVLOOP

:ClipboardMENU
  LIST PASTE, L1
  LIST CLEAR, L2
  if @greater(@count(L1), 0)
     INFO Code loaded from clipboard...@tab()
  else
     INFO Clipboard is empty...@tab()
  end
  goto EVLOOP

:Save ResultsMENU
  %g = @filedlg(,,,SAVE)
  if @file(%g)
     LIST SAVEFILE, L2, %g
  end
  goto EVLOOP

:Copy ResultsMENU
  if @greater(@count(L2), 0)
     LIST COPY, L2
     INFO Results copied to clipboard...@tab()
  else
     INFO Nothing to copy...@tab()
  end
  goto EVLOOP

:HelpMenu
  if @winexists("Code Checker by Mac")
     goto EVLOOP
  end
  %h = " Features:"@cr()
  %h = %h"  - Checks IF/END, REPEAT/UNTIL, WHILE/WEND commands, checks for"@cr()
  %h = %h"    mismatched brackets, mismatched quotes, and finds variables."@cr()
  %h = %h"  - Finds largest nesting depth of IF, REPEAT, WHILE, and GOSUB"@cr()
  %h = %h"    commands (traces subroutines for nested depths)."@cr()
  %h = %h"  - Portions of code may be copied from clipboard and checked."@cr()
  %h = %h"  - Displays IF/END, REPEAT/UNTIL, and WHILE/WEND in indented form."@cr()
  %h = %h"  - Results may be saved to file or copied to clipboard."@cr()
  %h = %h"  - Program window is resizable."@cr()@cr()
  %h = %h" Instructions:"@cr()
  %h = %h"  - To load VDS source code: select "@chr(34)Source@chr(34)" menu, then choose "@cr()
  %h = %h"    "@chr(34)File@chr(34)" or "@chr(34)Clipboard@chr(34).@cr()
  %h = %h"  - To check code: select "@chr(34)Check@chr(34)" menu, then choose "@chr(34)Check Code Pairs@chr(34)@cr()
  %h = %h"    to count code pairs (IF/END etc.) or "@chr(34)Check Pairs and Trace@chr(34) to@cr()
  %h = %h"    count code pairs AND trace thru code to check nesting depth."@cr()
  %h = %h"  - To save/copy results: select "@chr(34)Results@chr(34)" menu, then choose "@cr()
  %h = %h"    "@chr(34)Save Results@chr(34)" or "@chr(34)Copy Results@chr(34).@cr()@cr()
  %h = %h" Notes:"@cr()
  %h = %h"  - Source code is shown on the left, results on the right."@cr()
  %h = %h"  - Unmatched IF/END, REPEAT/UNTIL, or WHILE/WEND routines may"@cr()
  %h = %h"    cause faulty nesting info, so correct these errors first."@cr()
  %h = %h"  - When showing largest nesting depth, the first one is shown"@cr()
  %h = %h"    if more than one are that size."@cr()
  %h = %h"  - Program does NOT indicate location of missing IF/END,"@cr()
  %h = %h"    REPEAT/UNTIL, or WHILE/WEND commands."@cr()
  DIALOG CREATE,"Code Checker by Mac",-1,0,580,440,NOMIN
  DIALOG ADD,STYLE,StyleC1,Courier New,10,B,YELLOW
  DIALOG ADD,TEXT,Help,0,0,580,440,,StyleC1
  DIALOG SHOW
  DIALOG SET, Help, %h
  %h = ""
  DIALOG SELECT, 0
  goto EVLOOP

:ExitMENU
:CLOSE
  if @greater(%d, 0)
     DIALOG SELECT, %d
     DIALOG CLOSE
     rem -- Kill any extra events -
     %e = @event()
     goto EVLOOP
  end
  EXIT

rem ---------- SUB ------------

:CheckCommands
  if @greater(@count(2), 0)
     LIST SEEK, 2, 0
     if @match(2, "line # "@succ(@index(1)))
        exit
     end
  end
  %%pad = ""
  if @equal(@substr(%s, 1,5), "GOSUB")
     %%indent = @succ(%%indent)
     GOSUB Pad
     LIST ADD, 2, %%pad"GOSUB - line # "@succ(@index(1))
     rem -- Line we return to --
     LIST ADD, 3, %%curpos
     rem -- Count largest subproc nesting --
     if @greater(@count(3), %%submax)
        %%submax = @count(3) - line # @succ(@item(3, 0))
     end
     %%sub = ":"@trim(@substr(%s, 6, @len(%s)))
     GOSUB SeekSub
  end
  rem -- Check for subroutine exit --
  if @both(@greater(@count(3), 0), @equal(@substr(%s, 1,4), "EXIT"))
     LIST SEEK, 3, @pred(@count(3))
     %%curpos = @item(3)
     %%loop = %%curpos
     LIST DELETE, 3
     GOSUB Pad
     LIST ADD, 2, %%pad"EXIT = "@succ(@index(1))
     if @greater(%%indent, 0)
        %%indent = @pred(%%indent)
     end
  end
  if @equal(@substr(%s, 1, 2), "IF")
     %%ifcount = @succ(%%ifcount)
     %%indent = @succ(%%indent)
     if @greater(%%ifcount, %%ifmax)
        %%ifmax = %%ifcount - line # @succ(@index(1))
     end
     GOSUB Pad
     LIST ADD, 2, %%pad"IF - line # "@succ(@index(1))
  end
  if @equal(@substr(%s, 1, 4), "ELSE")
     GOSUB Pad
     LIST ADD, 2, %%pad"ELSE - line # "@succ(@index(1))
  end
  if @equal(@substr(%s, 1, 5), "ELSIF")
     GOSUB Pad
     LIST ADD, 2, %%pad"ELSIF - line # "@succ(@index(1))
  end
  if @equal(@substr(%s, 1, 3), "END")
     if @greater(%%ifcount, 0)
        %%ifcount = @pred(%%ifcount)
     end
     GOSUB Pad
     LIST ADD, 2, %%pad"END - line # "@succ(@index(1))
     if @greater(%%indent, 0)
        %%indent = @pred(%%indent)
     end
  end
  if @equal(@substr(%s, 1, 6), "REPEAT")
     %%repeatcount = @succ(%%repeatcount)
     %%indent = @succ(%%indent)
     if @greater(%%repeatcount, %%repeatmax)
        %%repeatmax = %%repeatcount - line # @succ(@index(1))
     end
     GOSUB Pad
     LIST ADD, 2, %%pad"REPEAT - line # "@succ(@index(1))
  end
  if @equal(@substr(%s, 1, 5), "UNTIL")
     if @greater(%%repeatcount, 0)
        %%repeatcount = @pred(%%repeatcount)
     end
     GOSUB Pad
     LIST ADD, 2, %%pad"UNTIL - line # "@succ(@index(1))
     if @greater(%%indent, 0)
        %%indent = @pred(%%indent)
     end
  end
  if @equal(@substr(%s, 1, 5), "WHILE")
     %%whilecount = @succ(%%whilecount)
     %%indent = @succ(%%indent)
     if @greater(%%while, %%whilemax)
        %%whilemax = %%while - line # @succ(@index(1))
     end
     GOSUB Pad
     LIST ADD, 2, %%pad"REPEAT - line # "@succ(@index(1))
  end
  if @equal(@substr(%s, 1, 4), "WEND")
     if @greater(%%whilecount, 0)
        %%whilecount = @pred(%%whilecount)
     end
     GOSUB Pad
     LIST ADD, 2, %%pad"WEND - line # "@succ(@index(1))
     if @greater(%%indent, 0)
        %%indent = @pred(%%indent)
     end
  end
  exit

:SeekSub
  %%found = ""
  %x = 0
  REPEAT
    if @greater(@pos(%%sub, @item(1, %x)), 0)
       if @equal(@trim(@item(1)), %%sub)
          %%curpos = @index(1)
          %%found = 1
       end
    end
    %x = @succ(%x)
  UNTIL %%found @equal(%x, @count(1))
  if @not(%%found)
     WARN CODE ERROR - Cannot find label @chr(34)%%sub@chr(34)@tab()
  end
  exit

:Pad
  if @greater(%%indent, 1)
     REPEAT
       %%pad = %%pad"     "
     UNTIL @equal(@len(%%pad), @diff(@prod(%%indent, 5), 5))@greater(@len(%%pad), @prod(%%indent, 5))
  end
  exit

EDIT1 - Repaired bug in find vars routine that wouldn't separate vars
crammed together together - such as %a%b%c.
EDIT2 - Added command line file loading - it now loads the DSC file in
the VDS IDE when opened from the IDE Tools menu.
EDIT3 - Added code to show command line filename in status bar.
EDIT4 - OOPS - repaired bug when cramming user defined vars
together such as %%test1%%test2%%test3.
EDIT5 - Added code to make sure standard var is acceptable char.

Cheers, Mac

_________________
VDSug.dll does file IO, check/disable menu items,
non-VDS dlls, draw functions and more...
Free download (30k dll size) at:
http://www.vdsworld.com/download.php?id=361


Last edited by Mac on Tue Mar 18, 2003 1:31 am; edited 5 times in total
Back to top
View user's profile Send private message Send e-mail
Mac
Professional Member
Professional Member


Joined: 08 Jul 2000
Posts: 1585
Location: Oklahoma USA

PostPosted: Mon Mar 17, 2003 7:30 pm    Post subject: Reply with quote

Added some more stuff:

Checks for all mismatched brackets (parenthesis, braces, and square
brackets), and tells ya the line number, number of brackets missing,
and if they're LEFT or RIGHT brackets.

Checks for mismatched quotation marks (without tripping over LOADTEXT
commands).

Read the program description and notes for more info. Wink

Cheers, Mac Smile

_________________
VDSug.dll does file IO, check/disable menu items,
non-VDS dlls, draw functions and more...
Free download (30k dll size) at:
http://www.vdsworld.com/download.php?id=361
Back to top
View user's profile Send private message Send e-mail
Mac
Professional Member
Professional Member


Joined: 08 Jul 2000
Posts: 1585
Location: Oklahoma USA

PostPosted: Mon Mar 17, 2003 10:52 pm    Post subject: Reply with quote

Repaired bug in find vars routine that wouldn't separate vars
crammed together together - such as %a%b%c, etc.

Cheers, Mac Smile

_________________
VDSug.dll does file IO, check/disable menu items,
non-VDS dlls, draw functions and more...
Free download (30k dll size) at:
http://www.vdsworld.com/download.php?id=361
Back to top
View user's profile Send private message Send e-mail
Mac
Professional Member
Professional Member


Joined: 08 Jul 2000
Posts: 1585
Location: Oklahoma USA

PostPosted: Mon Mar 17, 2003 11:24 pm    Post subject: Reply with quote

Added command line file loading - it now loads the DSC file in
the VDS IDE when opened from the IDE Tools menu.

Or ya can create a shortcut to the code checker in the "Send To"
folder.

BTW, ya might be surprised if ya run all your code thru this program.
The VDS run/debugger error check doesn't seem to catch all cases
of mismatched brackets, and some programs run with these errors...

Cheers, Mac Smile

_________________
VDSug.dll does file IO, check/disable menu items,
non-VDS dlls, draw functions and more...
Free download (30k dll size) at:
http://www.vdsworld.com/download.php?id=361
Back to top
View user's profile Send private message Send e-mail
Mac
Professional Member
Professional Member


Joined: 08 Jul 2000
Posts: 1585
Location: Oklahoma USA

PostPosted: Tue Mar 18, 2003 12:09 am    Post subject: Reply with quote

OOPS - repaired bug when cramming user defined vars
together such as %%test1%%test2%%test3. Forgot to
test for this earlier... Embarassed

_________________
VDSug.dll does file IO, check/disable menu items,
non-VDS dlls, draw functions and more...
Free download (30k dll size) at:
http://www.vdsworld.com/download.php?id=361
Back to top
View user's profile Send private message Send e-mail
Mac
Professional Member
Professional Member


Joined: 08 Jul 2000
Posts: 1585
Location: Oklahoma USA

PostPosted: Tue Mar 18, 2003 1:39 am    Post subject: Reply with quote

Added code to test that standard vars are valid chars - this prevents
mistaking invalid strings such as "%?" for vars.

For example:
Code:

if @ask(Is this the correct %?)
   goto nextProcedure
end


Cheers, Mac Smile

_________________
VDSug.dll does file IO, check/disable menu items,
non-VDS dlls, draw functions and more...
Free download (30k dll size) at:
http://www.vdsworld.com/download.php?id=361
Back to top
View user's profile Send private message Send e-mail
Display posts from previous:   
Post new topic   Reply to topic    forum.vdsworld.com Forum Index -> Visual DialogScript 3 Source Code All times are GMT
Page 1 of 1

 
Jump to:  
You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot vote in polls in this forum
You can attach files in this forum
You can download files in this forum

Twitter@vdsworld       RSS

Powered by phpBB © 2001, 2005 phpBB Group