0 Members and 1 Guest are viewing this topic.
<!DOCTYPE html><head> <script> function test() { var text = document.getElementById('text').value; var i = 0; var line = 0; for (var x = 0; x < text.length; x++) { var substring = text.substring(x).toLowerCase(); if (text.charAt(x) == "\n") { line++; while(text.charAt(x+1) == ' '){ text = text.slice(0,x+1) + text.slice(x+2); } substring = text.substring(x).toLowerCase(); if(substring.substring(1).startsWith("end")) {i--;}var count=i;if(substring.substring (1).startsWith("else")) {count--;} for (var insert = 0; insert < count; insert++) { text=text.slice(0,x+1)+" "+text.slice(x+1); } document.getElementById('text').value = text; } if (substring.startsWith("for")) { i++; } if (substring.startsWith("then")) { i++; } if (substring.startsWith("while")) { i++; } if (substring.startsWith("repeat")) { i++; } if (i == -1) { alert("To many 'end's!\n" + "Line: " + line); setCaretPosition("text", x); insertAtCaret("text", "REMOVE thiS->") break; } // alert(i); } if (i > 0) { alert("Missing an End!!!") } } function setCaretPosition(elemId, caretPos) { var elem = document.getElementById(elemId); if (elem != null) { if (elem.createTextRange) { var range = elem.createTextRange(); range.move('character', caretPos); range.select(); } else { if (elem.selectionStart) { elem.focus(); elem.setSelectionRange(caretPos, caretPos); } else elem.focus(); } } } function insertAtCaret(areaId, text) { var txtarea = document.getElementById(areaId); var scrollPos = txtarea.scrollTop; var caretPos = txtarea.selectionStart; var front = (txtarea.value).substring(0, caretPos); var back = (txtarea.value).substring(txtarea.selectionEnd, txtarea.value.length); txtarea.value = front + text + back; caretPos = caretPos + text.length; txtarea.selectionStart = caretPos; txtarea.selectionEnd = caretPos; txtarea.focus(); txtarea.scrollTop = scrollPos; } </script></head><body> <textarea rows="40" cols="50" id="text">type here</textarea> <button type="button" onClick="test()">Count!</button></body></html>
The best way to count missing ends is to indent your code, but sadly that is not possible when programming on-calc (it would actually make it harder to read the code, because the screen is so small, plus it would take too much RAM space). I think that such tool was suggested long ago, but I don't remember if it was ever implemented. The only closest thing I can remember was a variable usage detection program, which told you if a variable was in use in your BASIC program.Also, sometimes loops will not stop prematurely due to missing End instructions, but rather due to a conditional error, such as the > and < signs being inverted as a typo, or variable conflicts.
Nah using : instead of a linebreak actually takes the same amount of space. I don't know if it slows execution down, but it considerably speeds up the time it takes to scroll through the code on color models.
If A=1ThenBlahBlahReturnEndIf A=2ThenBlahBlahReturnEndIf A=3ThenBlahBlahReturnEnd
If A=1:Then:Blah:Blah:Return:End:If A=2:Then:Blah:Blah:Return:End:If A=3:Then:Blah:Blah:Return:End
Really? I never noticed that before. I thought that : only failed with the Lbl command... Is that a newly introduced OS bug? Can anyone else reproduce? You should make a screenshot
By the way @c4ooo I tried the second link and it still does nothing.