Share via


Microsoft Small Basic v1.0: Known Issues

This article organizes known issues about Small Basic v1.0.  These issues happen both in local (under IDE environment) and remote (under smallbasic.com with web browser and Silverlight).  Differences between in local and remote are listed here.


Known Issues

  1. Shapes.GetOpacity() causes cast error and program end.  (detail)
    • FIXED (1.2)
    • PRI 3
    • STATUS: Fixed for v 1.2
  2. Turtle.Show() doesn't show Turtle after GraphicsWindow.Clear() or Turtle.Hide(). See FLR412. (detail)
    • FIXED (1.2)
    • PRI 1
    • STATUS: Fixed for v 1.2
  3. Various Math object errors cause unhandled exceptions. See ZXF613 and MVJ631. Needs better error handling.
    • FIXED (1.2)
    • PRI 3
    • STATUS: Fixed for v 1.2
  4. GraphicsWindow.GetPixel doesn't work for background layer. See MXG391.
    • PRI 3
    • STATUS: In Review
  5. Shapes.AddText() at the top of program shows exception thrown by target.
    • FIXED (1.2)
    • PRI 2
    • STATUS: Fixed for v 1.2
  6. Event subroutines should be after they are registered. (detail)
    • PRI 3
    • STATUS: In Review; Limitation in Framework
  7. MDI children can be resized such that their "Close" button cannot be clicked (details).
    • CAN'T FIX
    • Repro Steps:
      1. Click and drag the top edge (or a top corner) of an editor MDI window with your mouse.
      2. Drag it up, over the menu of the SB IDE to resize the MDI window.
      3. Then you can't move or close the MDI window anymore.
    • Need to re-triage, based on repro steps.
    • STATUS: Can't fix; As Designed per Windows API. Limitation is related to Bug #8.
  8. When GW.canResize = "False", NO MINIMIZE BUTTON (See CPT410). 
    • CAN'T FIX
    • UPDATED INFO: See sample program FKJ066. In Windows 8.1, values GW.Width and GW.Height are changed after changing GW.CanResize.  Also values GW.Top and GW.Left are kept but the GW position is changed after changing GW.CanResize.  In old Windows, window frame width has been changed when resizing was inhibited.  This problems may come from Windows behaviour. Snipping Tool seems to check whether the window can resize or not for [Window Snip] in [New] menu.  Non resizable window is snipped smaller by Snipping Tool in Windows 8.1 (same in Windows Vista).  But by Alt+[Print Screen] and paste to Paint, we can get the whole non-resizable window.
    • STATUS: Can't fix. This is a Windows limitation. If you disable Resize, then you disable Min/Max. Source. Need to test on Windows 10.
  9. A dependent GW.Width & GW.Height is made incorrect by GW.CanResize (by Jibba Jabba).
    • CAN'T FIX
    • UPDATED INFO: See info for #8.
    • STATUS: Can't fix. This is a Windows limitation. If you disable Resize, then you disable Min/Max. Source.
  10. The remote/online environment does not have parity with the local run-time environment. See Small Basic: Difference Between Local and Remote.
    • PRI 3
    • STATUS: In Review
  11. Shapes.Animate(sth,x,y,500)  y=y-50 and if y=y-50 then y=y+50 it doesn't move but there is a delay. See XDX644
    • FIXED (1.2)
    • UPDATED INFO: The sample XDX644 may have a bug in line 14.  Shapes.Move(sth,x,y) may not be needed.  This bug was reported by ProfessionalOfSmallBasic.  The status from the Small Basic Community Council is currently CAN NOT REPRO.
    • STATUS: Can't Repro. Fixed for 1.2.
  12. Dictionary object sometimes doesn't work from June 2014 (detail).
    • FIXED (1.2)
    • PRI 1
    • STATUS: Fixed for v 1.2
  13. Graduating MD Arrays to VB doesn't work. (detail)
    • PRI 4
    • STATUS: In Review
  14. GraphicsWindow.GetPixel crashes if coordinates are outside window e.g. x < 0.
    • FIXED (1.2)
    • PRI 1
    • STATUS: Fixed for v 1.2
  15. Hiding and showing a TextWindow crashes 8.1 and deletes content in Windows 7  (details).
    • FIXED (1.2)
    • PRI 2
    • STATUS: Fixed for v 1.2
  16. A shape moving over a stationary mouse causes MouseMove event.  This issue occurs only in local.  See GSX344.
    • PRI 1
    • STATUS: In Review. Reproduced.
  17. Flickr object doesn't work from June 2014 (requires https:\ in place of http:\) 
    • FIXED (1.1)
    • STATUS: Fixed for v 1.1
  18. Outline of Shapes Rectangle and Ellipse are smaller. (detail)
    • PRI 4
    • UPDATED INFO: Fixing this issue has two complications.  One is that compatibility for the current program will be lost (all previous programs built with it won't work; they'd have to be re-written).  Another one is that collision detection between Shapes may become complicated.
    • STATUS: In Review. Big impact in breaking programs if this gets fixed. 
  19. Set Mouse.MouseY then GraphicsWindow.MouseY returns incorrect value. (Detail)
    • PRI 2

    • UPDATED INFO: This issue comes from DPI.  In Windows 8.1, change DPI while following these instructions:

      1. Open Control Panel.

      2. Click [Adjust screen resolution] in [Appearance and Personalization].

      3. Click [Make text and other items larger on smaller].

      4. Check [Let me choose one scaling level for all my displays].

      5. Select [Medium - 125%].

      6. Click [Apply] button.

      7. Sign out then Sign in.

      Details about DPI are described in the following thread by litdev:

      https://social.msdn.microsoft.com/Forums/en-US/e17c679d-6750-4efc-a5bc-35656e7f7643/mouse-object-bug?forum=smallbasic

    • STATUS: In Review. Need to test on Windows 10.

  20. Increasing an index and assignment to it's array in event handler sometimes doesn't complete before reading the array from main. (detail
    • PRI 1
    • STATUS: In Review.
  21. The Small Basic environment hangs up (shows "Not Responding") when pushing arrow keys while text finding. This issue occurs often while in coding.  Find some text and move your cursor with the arrow keys to change something. The IDE hangs up and can't recover the edited source code... Workarounds: (1) Save before you use "Find" or (2) Wait until "Find" is done completely before pressing keys.
    • FIXED (1.1)

    • Current condition to repro #21 with SB 1.0:

      • Open at least two source edit windows

      • Run at least one program and close

      • After that, repeat find string "endif" with F3 and hit down arrow key.

    • STATUS: Fixed for 1.1. Can't repro in 1.1.

  22. Small Basic incorrectly handles divide-by-zero (produces the result 0 instead of an error).
    • FIXED (1.2)
    • PRI 3
    • STATUS: Fixed for 1.2
  23. TextWindow does not support Unicode characters (Ex: Hebrew)
    • CAN'T FIX  
    • STATUS: Can't Fix due to platform limitations.
  24. Shapes.Add creates screen flicker. Limits some programs to a "tinnie" finish. Details.
    • PRI 2
    • STATUS: In Review.
  25. Strings without a closing double-quote character (when stored in a variable) are accepted as being valid. Details.
  26. Graduate causes an error with latest Visual Studio 2013.
    • CAN'T REPRO
    • STATUS: can't be reproduced now.  Once experienced both in VS 2013+Windows 10+SB 1.0 and VS 2013+Windows 10+SB 1.2.  But now in Windows 10+VS Community 2013 (reinstalled)+SB 1.2 it doesn't show the error (VB was not found) above.
  27. IME (Input Method Editor) sometimes be disabled in the IDE editor. Details.
  28. The cursor (caret) in the IDE editor sometimes doesn't move correctly in programs that have double byte characters.
  29. Decimal + "" becomes 0 when the decimal has a decimal point set as "," in Control Panel.  This issue still remains from SB 1.0 to SB 1.3. Details
  30. Turtle.MoveTo operation sometimes cause error with decimal fraction coordinates.  Details
  31. Shapes.Rotate operation rotates a wide line not from the center of the line.  At 90 degree rotation, the center is 1/4 of the line width higher and 1/4 more right.  At 180 degree rotation, the center is 1/2 more right.  At 270 degree rotation, the center is 1/4 lower and 1/4 more right.  Sample program is MBL863.
  32. Turtle.MoveTo after Turtle.Hide causes Exception has been thrown error.

Documentation Issues

  1. Description about return values for File.GetDirectories and File.GetFiles are wrong (SUCCESS) in some localized versions such as Arabic, Italian, and Japanese.

    • Japanese:  CURRENT:

      戻り値

      操作が成功した場合は、 "SUCCESS" を返します。それ以外の場合には "FAILED" を返します。

      CHANGE TO (for File.GetDirecrories):

      戻り値

      操作が成功した場合は、ディレクトリの配列を返します。それ以外の場合には "FAILED" を返します。

      CHANGE TO (for File.GetFiles):

      戻り値

      操作が成功した場合は、ファイルの配列を返します。それ以外の場合には "FAILED" を返します。

    • Need language specifics for Arabic and Italian.

    • STATUS: Languages are being reviewed individually by file. Japanese Fixed for 1.2. 

  2. There are incorrect sentences in the description of TextWindow.Write() .  Correct: Help in IDE, doc.smallbasic.com .  Incorrect: smallbasic.com/doc.aspx . 

  3. Hebrew translation errors (detail).

    • STATUS: Fixed for v 1.2
  4. Clarify Math.Floor and Math.Ceiling - presumably Math.Floor should specify it returns "the *largest* integer that is less than or equal to the argument" (i.e. returns the "rounded down" integer value).  Currently it specifies it returns "an integer that is less than or equal to the argument", which implies it could be any integer smaller than the argument, not the next smallest integer.  Similar for Math.Ceiling. SB.exe (SmallBasicLibrary*.xml - for all languages) should be fixed.

  5. Description about stackName for each Stack.PushValue, Stack.GetCount and Stack.PopValue in French is wrong - "La valeur à empiler."   The description should be "Le nom de la pile."

    • STATUS: Fixed for v 1.2
  6. French description of "GraphicsWindow.Top" is wrong - "Obtient ou définit la position droite de la fenêtre graphique.". Should be "Obtient ou définit la position du haut de la fenêtre graphique.".

    • STATUS: Fixed for v 1.2   
  7. French description of "Text.GetSubTextToEnd()" is wrong - "Obtient une partie d'un texte en partant de la fin.". Should be "Obtient une partie d'un texte depuis une position donnée jusqu'à la fin du texte.".

    • STATUS: Fixed for v 1.2
  8. The description of Controls.Add*() methods (AddButton, AddTextBox, AddMultiLineTextBox) is wrong - ending by "... with the specified width and height.". Should be "... at the specified position.". It's wrong in english, french, español, so apparently it's wrong on all languages.

  9. Network object should not be a private helper but just a helper.

  10. Full spelling of an abbreviation MML is wrong in Sound.PlayMusic().  Music Markup Language is wrong.  Music Macro Language is correct.

  11. smallbasic.com reference for Array class is outdated: The methods SetValue/GetValue/RemoveValue no longer exist in Small Basic.

  12. Following translation to Japanese in Text.Append() is not correct: unknown text in variables.

    • STATUS:  Fixed for v 1.2.

    • CURRENT:

      不明なテキスト

      CHANGE TO:

      変数の中の不明なテキスト

  13. Following translation to Japanese in Math.Celling() is not correct: celling value.

    • STATUS: Fixed for v 1.2.

    • CURRENT:

      上限値

      CHANGE TO:

      切り上げ

  14. Following translation to Japanese in Math.Floor() is not correct: floor value.

    • STATUS: Fixed for v 1.2.

    • CURRENT:

      下限値

      CHANGE TO:

      切り下げ

  15. Following translation to Japanese in Math.Power() is not correct: Raises the baseNumber to the specified power.

    • STATUS: Fixed for v 1.2.

    • CURRENT:

      指定されたべき乗の基数を上昇させます。

      CHANGE TO:

      基数を指定された指数に累乗します。

  16. Following translation to Japanese in Math.Power() about baseNumber is not correct: The number to be raised to the exponent power.

    • STATUS: Fixed for v 1.2.

    • CURRENT:

      上昇させるべき乗の指数の値。

      CHANGE TO:

      指数に累乗される数。

  17. Following translation to Japanese in Math.Power() about exponent is not correct: The power to raise the base number.

    • STATUS: Fixed for v 1.2.

    • CURRENT:

      基数を上昇させるべき乗。

      CHANGE TO:

      基数を累乗する指数。

  18. Following translation to Japanese in Math.Power() about Returns is not correct: The baseNumber raised to the specified exponent.

    • STATUS: Fixed for v 1.2

    • CURRENT:

      指定された指数を上昇させる基数。

      CHANGE TO:

      指定された指数に累乗された基数。

  19. There are redundant space characters according to following instruction in Japanese Style Guide:

    Exceptionally, do not insert a space in the following cases:

    ・Between ideographic full stop (。)/ideographic comma (、) and a half-width character

    • STATUS: Fixed for v 1.2

    • For example:

      CURRENT:

      タイマーを休止します。 Tick イベントは発生しません。

      CHANGE TO:

      タイマーを休止します。Tick イベントは発生しません。

  20. There are redundant space characters before ( (full-width left paretheses) because there is no reason to insert a space between full-width characters in Japanese Style Guide.

    • For example:

      CURRENT:

      タイマーが Tick イベントを発生させる間隔 (ミリ秒単位)を設定または取得します。

      CHANGE TO:

      タイマーが Tick イベントを発生させる間隔(ミリ秒単位)を設定または取得します。

  21. Some space characters are lacked according to following instruction in Japanese Style Guide:

    Between characters, a space should be inserted as follows.

    1.Between full-width and half-width characters

       In principle, insert a half-width space.

    • STATUS: Fixed for v 1.2

    • For example:

      CURRENT:

      またはWMAファイル

      CHANGE TO:

      または WMA ファイル

  22. Following translation to Japanese in GraphicsWindow.Clear() should be corrected according to Microsoft Language Portal: Clear.

    • STATUS: Fixed for v 1.2

    • CURRENT:

      クリアにする。

      CHANGE TO:

      クリアする。

  23. Following translation to Japanese in SB.EXE about an argument error message of operation in object is not correct: Operation.

    • STATUS: Fixed for v 1.2

    • CURRENT:

      演算

      CHANGE TO:

      操作

  24. Following translation to Japanese in SB.EXE about an operation name error message is not correct: operation.

    • STATUS: Fixed for v 1.2

    • CURRENT:

      演算子

      CHANGE TO:

      操作

  25. Following translation to Japanese in SB.EXE about an error message is not correct: is expected a return value, but it doesn't return anything.

    • STATUS: Fixed for v 1.2

    • CURRENT:

      戻り値を返すはずですが、何も返しません。

      CHANGE TO:

      戻り値を期待されていますが、何も返しません。

  26. Following translation to Japanese in menu of SB.EXE should be corrected according to Microsoft Language Portal: Paste.

    • STATUS: Fixed for v 1.2

    • CURRENT:

      貼りつけ

      CHANGE TO:

      貼り付け

  27. Following translation to Japanese in menu of SB.EXE should be corrected according to Microsoft Language Portal: Undo.

    • STATUS: Fixed for v1.2

    • CURRENT:

      取り消し

      CHANGE TO:

      元に戻す

  28. Following translation to Japanese in dialog for [Publish] of SB.EXE should be corrected according to Microsoft Language Portal: Sample.

    • STATUS: Fixed for v 1.2

    • CURRENT:

      CHANGE TO:

      サンプル

    Especially this translation makes Japanese confused because Example is translated to 例 also.


Feature Ideas

  1. Debugger.
  2. Sample and template code in IDE.
  3. Replace as well as Find (i.e Find and Replace).
  4. Code suggestions in IDE (a bit like grammar in Word).
  5. Provide methods for determining the type of a value stored in a Primitive.
  6. Function parameters for subroutines.
  7. Multiple-file compilation.
  8. X.509 certificates for code signing and TLS.
  9. Something to limit or at least control of extensions - maliciosly used they can be extremely dangerous.  Thinking something in IDE that can turn off extensions use or highlight code using extension objects.
  10. High Contrast Settings for visibility impared users
  11. In-program language reference (i.e. search for function or reference outside of intellisense).
  12. Support plain PPM (Portable Pixmap) Image file.
  13. Collision detection for Shapes.  Including images that have transparent bits.
  14. Code folding (perhaps as an advanced setting).
  15. Refactoring (maybe with right-click only).
  16. Sandbox object. (detail)
  17. Shapes.AddSomething(img, "Hide") to avoid screen flicker. (detail)
  18. Compare with text. (If "Anton" < "Alice" Then)
  19. Video Enhancements - To allow quicker & more powerful video manipulation.
    1. Video Speed: It seems some of the existing video commands could do with speeding up, or alternative/faster versions added.
    2. Video Strength: A set of commands to increase the power of graphics/screen manipulation would be very useful. 
  20. Allow a simple sound command to synthesize sound effects rather than play back .WAVs.
    • Audio Versatility: A simple set of sound commands to allow programmers to create synthesized sounds rather than relying on using .WAVs.
    • ie: Create a sound event (getting back an id), and declare its waveform, pitch, volume, duration, which you can then further modify/control using the sound's id.
  21. Ability to drag and drop controls like VB 1.
  22. Easy way to find published IDs that are lost or forgotten. (Huge pain point for teachers)
    1. Example: A simple hashtag that is searchable.
    2. Example: A list of "My IDs" that's saved locally and accessible.
    3. Example: A way a teacher can save/access all the students' IDs in the class.
  23. Auto Save at Run Time (if program has already been saved) (Huge pain point for teachers)
    • Many students have frustrations because Small Basic locks up or their power cord was kicked out, and they lose an entire day's work. (Kids aren't used to saving constantly like adults are.)
  24. Let us be able to change the icon of the program and have a variety of windows mouse cursors
    *e.g GraphicsWindow.Icon(path\name.extension)
    *e.g Mouse.Cursor(Hand).
  25. Add more controls: ProgressBar, CheckBox, ComboBox, ListBox, CheckedListBox.
    *e.g Controls.AddProgrssBar(5, 5, 100, 25)
    *e.g Controls.AddCheckBox(110, 5, Checked)
    *e.g Controls.AddComboBox(5, 35, "Items, separated, with, comma")
    *e.g Controls.AddListBox(5, 60, "Items, separated, with, comma")
    *e.g Controls.AddCheckedListBox(5, 60, "Items, separated, with, comma")
  26. Add an OpenFileDialog(), SaveFileDialog, Font/ColorDialog.
    *e.g File.OpenFileDialog(returns: the file path and file name selected)
    *e.g File.SaveFileDialog(returns: the file path and file name selected)
    *e.g File.OpenFontDialog(returns: the settings selected)
    *e.g File.OpenColorDialog(returns: the settings selected)
  27. Add the potential of playing a video and controlling a video.
    *e.g Video.Play(path\name.extension)
    *e.g Video.Pause()
    *e.g Video.Stop()
    *e.g Video.Replay()
  28. Let us resize a shape precisely instead of zooming it since it creates a mesh when resizing a shape with Controls.SetSize().
    *e.g Shapes.SetSize(Rectangle, 120, 120)
  29. To be able to create virtual (non-displayed) windows, and to be able to manipulate these. So you could define what your current working windows is (the displayed one or any of your virtual ones).
    • A new ScreenRegionCopy method could then copy a region of any screen to any screen (virtual or displayed). This would, (a) allow screen region scrolling, and (b) allow a whole new screen to be created on a non-displayed screen, before it was then copied to the current screen. This would prevent flicker.
    • Being able to copy a region of a screen into an image to then be manipulated (rotated/resized). Then to allow sprites to be created along these lines too.
  30. Ctrl-D to Duplicate a line. I was wondering if you guys could implement the Ctrl-D function in the new version of SB. What it does is duplicate the line your cursor is on and place it one below. I use this a lot in programmers notepad. Also in Notepad++. Source
  31. Links in the UI. Example: So users can click a link for more reference info. Source

 


See Also


Additional Resources