Misplaced Pages

Realbasic

Article snapshot taken from Wikipedia with creative commons attribution-sharealike license. Give it a read and then ask your questions in the chat. We can research this topic together.

This is an old revision of this page, as edited by 67.0.66.3 (talk) at 08:25, 19 March 2006 (Added 3rd party verfiable links to article providing proof of concerns forwarded by the abused user TruthInAdvertising. Please explain your Wiki administer abuse of this user!). The present address (URL) is a permanent link to this revision, which may differ significantly from the current revision.

Revision as of 08:25, 19 March 2006 by 67.0.66.3 (talk) (Added 3rd party verfiable links to article providing proof of concerns forwarded by the abused user TruthInAdvertising. Please explain your Wiki administer abuse of this user!)(diff) ← Previous revision | Latest revision (diff) | Newer revision → (diff)
REALbasic
REALbasic icon
REALbasic 2005 IDE
REALbasic 2005 IDE
The REALbasic 2005 IDE running on Mac OS X
Developer(s)REAL Software, Inc.
Stable release2006 R1 / January 11th, 2006
Operating systemMac OS X, Microsoft Windows, Linux
TypeProgramming
LicenseCommercial
WebsiteREAL Software, Inc

REALbasic (RB) is an object-oriented dialect of the BASIC programming language developed and commercially marketed by REAL Software, Inc in Austin, Texas for Mac OS X, Microsoft Windows, and Linux. Created by Andrew Barry, who has since moved on to creating ExtremeBasic, it was originally called CrossBasic due to its ability to compile the same programming code for Mac OS and Windows (although the IDE was Mac only). It was then redubbed REALbasic by REAL Software when they took over development in 1997. The IDE is now available for all three supported platforms (with exception, as of February 2006, of Intel Macs).

Language features

RB is a strongly typed language with minimal automatic type conversion, that supports single inheritance and multiple interfaces, class methods and class properties, reference counting (similar to Java), definition of customized arithmetic operators (similar to C++). It has a complete feature set supporting hash tables, threads, real-time 3D graphics, sound, XML parsing and generation (even through XSL), full Unicode support, API calls to compiled C libraries on all supported platforms, Visual Basic datatypes compatibility, regular expressions, QuickTime, serial, TCP/IP sockets, SSL, HTTP, POP3, SMTP, SOAP, scripting language support through RBScript, Apple events, Address book, Windows registry, system tray icons, ActiveX and OLE.

File Format

The source file format contains window and control placement data and is proprietary; however, XML import and export and Visual Basic import functionality is included. All source code can be contained in one project file, but it is also possible to have classes/modules in separate files in the same way as most other languages or dialects can. REALbasic compiles directly to machine language for each platform that it supports (Mac OS X, MS Windows, Linux).

Application Size

Historically each release of REALbasic has seen an increase in both the size of the REALbasic application and applications compiled by REALbasic. Since individual user projects vary as to content, a new blank desktop project with a single default window, no internal code, and no controls is a standard bench mark used for measuring compiled application sizes. In the following examples of various recent major versions of REALbasic the size of the REALbasic is listed first, followed by sizes of compiled applications for Windows (Windows 98, ME, NT (4.0 or higher), 2000, or XP ), Mac Classic (8.6 to 9.2.2), and Mac OS X (10.1 or later):

4.0 (Mac Classic) 10.1MB; Windows 792K (.773 MB); Mac Classic 1.3MB; Mac X 1.6MB

5.0 (Mac X) 14.8MB; Windows 1.7MB ; Mac Classic 1.3MB ; Mac X 1.5MB

5.5.5 (Mac X) 32.5MB ; Windows 1.7MB; Mac Classic 880KB (.859 MB); Mac X Mach-O 2.3MB; Mac X PEF 876KB (.855 MB)

RB2006 Build 1 (Mac X) 120.8MB; Windows 2.4MB; Mac Classic 1MB; Mac X Mach-O 2.8MB ; Mac X PEF 1MB

To duplicate the above file sizes download a copies of REALbasic from REAL Software's web site (older editions can be downloaded from REAL Software's ftp web site). In each edition open a new default desktop project with a single window; do not add any code or controls to the project, and compile applications for the various operating systems.


Current Editions of IDE

File:REALbasic 2006.png
A typical GUI building session in REALbasic

There are two versions of the IDE:

  • The professional edition can compile programs for Mac OS X, Linux and Microsoft Windows (plus Mac OS) from the same source code file; it can also access databases (Oracle, PostgreSQL, MySQL etc.) including the built-in single-user REAL SQL Database engine based on SQLite; it compiles console applications and has numerous other features.
  • The standard edition only compiles programs for the platform that the IDE is running on (either Windows, Linux or Mac), and does not allow access to databases other than the built-in REAL SQL Database.

Both versions of the IDE permit building the application GUI by dragging the controls from a palette to their parent window. Layout of the controls is helped by the IDE that permits aligning them (both horizontally and vertically), and which gives informations about the distance between controls, or between a control and the window borders.

RB IDE can use plugins that extend the language with classes or modules and which permit to develop multiplatform code more easily.

Prior IDE Version History

File:555IDEs.jpg

Versions of REALbasic prior to the introduction of RB2005 (5.5.5 and prior releases) involved the use of two primary IDE interfaces: (a) A Macintosh multi-window interface based upon on the Classic Macintosh operating system (the original operating system REALbasic was developed for); and (b) A Windows Multi Document Interface (MDI) which used a single parent window in which the various project window objects could be viewed by opening them into seperate child windows.

File:555Project.jpg

Individual project window objects could be viewed and edited within untabbed individual windows by simply double clicking the item within the project window, which would immediately open the double clicked item within a new window. If a newly opened window contained a end-user interface of a run time window its underlying code editor could be viewed by simply clicking anywhere inside the interface of the newly opened window.

File:555Controls.jpg


Prior IDE versions of REALbasic (5.5.5 and earlier) also featured a seperate control pallet window containing icons of controls (both built-in and plug-in derived controls) which could be dragged onto a project window to build end-user interfaces.

File:555Property.jpg

A seperate properties window which listed a object's properties when a object was selected with the host computer's mouse was also incorporated into REALbasic prior to the introduction of RB2005.

File:555Spliter.jpg File:555ColorPallet.jpg File:555Tips.jpg

Versions of REALbasic prior to RB2005 (5.5.5 and earlier) also featured a code spliter, a seperate color pallet window, the ability to export a project as an plain text file via a “Export Source” command of the “File” menuitem, a 16 X 12 pixel icon and mask within the icon build window for Classic MAC OS builds of projects, the ability to run remotely under the Classic Mac OS, a seperate tips windows, and the abilityto run under any Macintosh operating system from 8.6 to 10.2.6.

File:555LR.jpg

IDE versions of REAlbasic prior to RB2005 also featured a Language Reference in which users could quickly search for subject matter according to a alphabetical listing of all subjects (Alpha) or by category (Theme). Indivdual subjects could read in book fashion with an entire subject listed on one scrollable page.

A few sample sample 3rd party published images of previous IDE versions which verify the above images (including Microsoft and the Macintosh publication Macaddict):

http://www.projectomega.org/contents/en/html/tuts/dev/developing_images/realbasic.gif

http://www.microsoft.com/japan/mac/officex/excel/images/xl10_1.jpg

http://realgurus.com/graphics/REALbasic_UI.gif

http://www.medienwerkstatt-online.de/products/realbasic/macosxide.jpg

http://www.macaddict.com/issues/2005/1/reviews/realbasic/images/148

http://www.macsanomat.fi/kuva.php?id=46

Historical Long Term & Existing Bug History

Among the most noteable long terms bugs still present in the current version of REALbasic (RB2006), and which has existed since at least version 3.0, is the Windows help tag bug. In Windows builds of projects any existing helptags inside a compiled Windows application only intitally appear when a window opens, but once a control inside a window is used once (aside from the window's close, maximum, and minimize widgets) its help tag permantely disappears and cannot be used by the end-user of the application. To reproduce this bug simple add a helptag to a control within a project window, compile for Windows, and run the compiled program (after the control is used once its help tag disappears forever).

In this article from Real Software’s own question and aswer forums one of Real Software’s own cheif engineers whos listed within REALbasic’s About Window (Aaron Ballman) acknowledges that this bug exists and it has not been fixed.

http://forums.realbasic.com/viewtopic.php?t=535&highlight=helptag

The above article can be downloaded in the form of a pdf document, should Real Software decide to remove it for some reason, from this link:

http://acer-access.com/~placebo@acer-access.com/HelpTag.pdf

Another well know bug which existed since the inception of REALbasic is comonly referred to as "flicker". Flicker can best be described as the improper redrawing of a portion of an application's window, mostly commonly a single control or a group of controls, so as to cause a noticeable "animation" of the control which is contrary to the generally accepted guidelines established by the publisher of the operating system (such as Apple or Microsoft). Flicker caused by the improper coding of controls by a programmer is not considered a REALbasic bug as such results are initiated by the coder; however, REALBasic includes a number of bugs which are inherit within in built-in controls which the programmer has no control over and are the result of the controls being improperly implemented or emulated within REALbasic. Operating systems such as Macintosh OS X (10.1 and later) use "double buffering" to effectively hide the problem of flicker; however, Classic Mac OS and Windows based systems (including XP) do not utilize double-buffering so care must be taken to account for this lack of double buffering. In most cases a user can prevent their own code from causing flicker by manipulating graphics via "off screen" graphics and updating a window or control or via a paint event; however, there unfortunately is no way to overcome certain flicker related defects within the built-in controls. One easily reproduceable example of such a defect involves the listbox control. If, for example, a multi-column listbox control in populated with text and then text within the listbox is selected rapidly, flicker is caused to various degrees on different operating system; in Mac OS Classic 9.0 the entire listbox flickers, while on systems such as Window XP Home the text within the listbox's headers flicker. By examining listbox controls within applications built by the publishers of the operating systems on which compiled REALbasic applications run (such as Apple and Microsoft) one can easily determine that flicker is not present in such applications, but remain a problem in applications using particular REALbasic built-in controls which do not properly emulate industry standard controls for a given operating system. To duplicate this bug make a new project and add a listbox control with multiple columns to a window; then add code to populate the listbox with text; run the project or compile application; then select text within the listbox with the mouse and rapidly scroll the mouse upward and downward, continually selecting new rows, the entire listbox, or portions of, will flicker.

A few sample links to 3rd party published articles or products related to the problem of addressing flicker in Realbasic:

http://www.einhugur.com/Html/Grids.html (flicker free spreadsheets and listboxes)

http://www.macsos.com.au/shareware/graphpro/index.html (flicker free graphing classes)

http://www.macsos.com.au/freeware/rb_open_source.html (flicker free canvas class)

http://www.monkeybreadsoftware.de/listarchive-realbasic-nug.old/2004-07/thread-24_6.shtml

Search Real software’s own Realbasic Network Users Group for “flicker” for hundreds of articles on the subject of flicker (or search Google for futher articles):

http://support.realsoftware.com/listarchives/realbasic-nug/2005-09/index.html

More screenshots

File:RB2006 Code Editor.png
The code editor editing a window event code
File:RB2006 Language Reference.png
The Language References with a partial list of REALbasic classes
File:RB2006 Building Settings.png
The dialog box to set some application building options

Example code

Here's some sample code that computes the MD5 hash of a given string (using both the MD5() function and the MD5Digest class), and then shows both values in a dialog box:

Dim Hash As String
Dim Digest As New MD5Digest
Hash = MD5("Source String")
MsgBox(Hash)
Digest.Process("Source")
Digest.Process(" String")
MsgBox(Digest.Value)

This is an example of operator overloading for a hypothetical Complex class which permits to sum a real to a complex number, and to sum two complex numbers:

Function Operator_Add(rhs as Simple) As Complex
 Dim ret As New Complex
 ret.R = Self.R + rhs
 ret.I = Self.I
 Return ret
End Function
Function Operator_Add(rhs as Complex) As Complex
 Dim ret As New Complex
 ret.R = Self.R + rhs.R
 ret.I = Self.I + rhs.I
 Return ret
End Function

The same function can be defined to accept Double datatype values. This code shows how to use the Complex class to sum a real with a complex number:

Dim First As New Complex(0, 1)
Dim Second As New Complex(1, 1)
Dim Sum As Complex
Sum = First + 5.0 + Second
// Sum will be (6, 2)

External links

See also

Categories: