Table of contents
- Ring 1.7 documentation
- Applications developed in little hours
- Introduction
- Language Design
- What is new in Ring 1.7?
-
What is new in Ring 1.6?
- List of changes and new features
- Employee Application
- New Tool: Ring2EXE
- Better Ring For Android
- New Tool: Folder2qrc
- Better Scripts for building Ring
- RingConsoleColors Extension
- RingMurmurHash Extension
- Better Ring Notepad
- Better RingQt
- Better StdLib
- Better RingVM
- Better RingREPL
- Using Tab instead of char(9)
- Using CR as Carriage return
- Using the ! operator as not
- Using && and || operators
- Using ? to print expression then new line
-
What is new in Ring 1.5?
- List of changes and new features
- Video-Music-Player Application
- Windows StartUp Manager Application
- Calculator Application
- Better Ring Notepad
- Better StdLib
- Better WebLib
- Better RingQt
- Better Objects Library
- RingFreeGLUT Extension
- RingOpenGL Extension
- Better Code Generator for Extensions
- Better Documentation Generator for Extensions
- Ring VM - Tracing Functions
- Trace Library and Interactive Debugger
- More Syntax Flexibility
- Type Hints Library
- Better Quality
- What is new in Ring 1.5.1?
- What is new in Ring 1.5.2?
- What is new in Ring 1.5.3?
- What is new in Ring 1.5.4?
- What is new in Ring 1.4?
- What is new in Ring 1.3?
- What is new in Ring 1.2?
-
What is new in Ring 1.1?
- List of changes and new features
- Better Natural Language Programming Support
- Generate/Execute Ring Object Files (*.ringo)
- Syntax Flexibility and different styles for I/O and Control Structures
- New Functions and Changes
- StdLib functions and classes written in Ring
- RingLibSDL
- Demo Project - Game Engine for 2D Games
- RingSQLite
- Better Code Generator for Extensions
- Using Self.Attribute in the Class Region to define new attributes
- Using This.Attribute in nested Braces inside the Class Methods
- Better Documentation
- Building From Source Code
- How to contribute?
- Getting Started - First Style
- Getting Started - Second Style
- Getting Started - Third Style
-
Using Ring Notepad
- Ring Notepad - Main Window
- Creating and running your first Console Application
- Creating and running your first GUI/Mobile Application
- Creating and running your first Web Application
- Creating and running your first Desktop/Mobile Game
- The Main File in the Project
- The File Menu
- The Edit Menu
- The View Menu
- The Program Menu
- The Browser Menu
- The Tools Menu
- The Distribute Menu
- The Help Menu
- Using Other Code Editors
- Variables
- Operators
- Control Structures - First Style
- Control Structures - Second Style
- Control Structures - Third Style
- Getting Input
- Functions - First Style
- Functions - Second Style
- Functions - Third Style
- Program Structure
-
Lists
- Create Lists
- Add Items
- Get List Size
- Delete Item From List
- Get List Item
- Set List Item
- Search
- Sort
- Reverse
- Insert Items
- Nested Lists
- Copy Lists
- First-class lists
- Using Lists during definition
- Passing Lists to Functions
- Access List Items by String Index
- Passing Parameters or Argumnents Using List
- Passing Parameters or Argumnents Using List Array
- Creating a Multi-Dimensional Array using List
- Swap Items
-
Strings
- String Literals
- Get String Length
- Convert Letters Case
- Access String Letters
- Left() Function
- Right() Function
- Trim() Function
- Copy() Function
- Lines() Function
- Substr() Function
- Find substring
- Get substring from position to end
- Get Number of Characters From Position
- Transform Substring To Another Substring
- strcmp() Function
- str2list() and list2str() Functions
- Date and Time
-
Check Data Type and Conversion
- Check Data Type
- IsString() Function
- IsNumber() Function
- IsList() Function
- Type() Function
- IsNULL() Function
- Check Character
- IsAlNum() Function
- IsAlpha() Function
- IsCntrl() Function
- IsDigit() Function
- IsGraph() Function
- IsLower() Function
- IsPrint() Function
- IsPunct() Function
- IsSpace() Function
- IsUpper() Function
- IsXdigit() Function
- Conversion
- Number() Function
- String() Function
- Ascii() Function
- Char() Function
- Hex() Function
- Dec() Function
- Str2hex() Function
- Hex2str() Function
- Mathematical Functions
-
Files
- Read() Function
- Write() Function
- Dir() Function
- Rename() Function
- Remove() Function
- Fopen() Function
- Fclose() Function
- Fflush() Function
- Freopen() Function
- Tempfile() Function
- Tempname() Function
- Fseek() Function
- Ftell() Function
- Rewind() Function
- Fgetpos() Function
- Fsetpos() Function
- Clearerr() Function
- Feof() Function
- Ferror() Function
- Perror() Function
- Fgetc() Function
- Fgets() Function
- Fputc() Function
- Fputs() Function
- Ungetc() Function
- Fread() Function
- Fwrite() Function
- Fexists() Function
- Example
- Numbers and Bytes
-
System Functions
- System() Function
- SysGet() Function
- IsMSDOS() Function
- IsWindows() Function
- IsWindows64() Function
- IsUnix() Function
- IsMacOSX() Function
- IsLinux() Function
- IsFreeBSD() Function
- IsAndroid() Function
- Example
- Windowsnl() Function
- Get Command Line Arguments
- Get Active Source File Name
- PrevFileName() Function
- CurrentDir() Function
- ExeFileName() Function
- ChDir() Function
- ExeFolder() Function
- Version() Function
- Shutdown() Function
- Eval() and Debugging
- Demo Programs
-
ODBC Functions
- odbc_init() Function
- odbc_drivers() Function
- odbc_datasources() Function
- odbc_close() Function
- Print List of ODBC Drivers
- Print List of ODBC Data Sources
- odbc_connect() Function
- odbc_disconnect() Function
- Open and Close Connection
- odbc_execute() Function
- odbc_colcount() Function
- odbc_fetch() Function
- odbc_getdata() Function
- Execute Query and Print Result
- odbc_tables() Function
- odbc_columns() Function
- odbc_autocommit() Function
- odbc_commit() Function
- odbc_rollback() Function
- Transactions and Using Commit and Rollback
- Save and Restore images
-
MySQL Functions
- MySQL_Info() Function
- MySQL_Init() Function
- MySQL_Error() Function
- MySQL_Connect() Function
- MySQL_Close() Function
- MySQL_Query() Function
- Create Database
- Create Table and Insert Data
- MySQL_Insert_ID() Function
- MySQL_Result() Function
- MySQL_Next_Result() Function
- Print Query Result
- MySQL_Columns() Function
- MySQL_Result2() Function
- MySQL_Escape_String() Function
- Save Image inside the database
- Restore Image From The Database
- MySQL_AutoCommit() Function
- MySQL_Commit() Function
- MySQL_Rollback() Function
- Transaction Example
- SQLite Functions
- Security and Internet Functions
-
Object Oriented Programming (OOP)
- Classes and Objects
- Access Objects Using Braces
- Composition
- Setter and Getter
- Private Attributes and Methods
- Operator Overloading
- Inheritance
- Dynamic Attributes
- Packages
- Printing Objects
- Find() and List of Objects
- Sort() and list of objects
- Using Self.Attribute and Self.Method()
- Using This.Attribute and This.Method()
- Functional Programming (FP)
-
Reflection and Meta-programming
- locals() Function
- globals() Function
- functions() Function
- cfunctions() Function
- islocal() Function
- isglobal() Function
- isfunction() Function
- iscfunction() Function
- packages() Function
- ispackage() Function
- classes() Function
- isclass() Function
- packageclasses() Function
- ispackageclass() Function
- classname() Function
- objectid() Function
- isobject() Function
- attributes() Function
- methods() Function
- isattribute() Function
- isprivateattribute() Function
- ismethod() Function
- isprivatemethod() Function
- addattribute() Function
- addmethod() Function
- getattribute() function
- setattribute() function
- mergemethods() Function
- packagename() Function
-
Stdlib Functions
- Puts() function
- Print() function
- Print2Str() Function
- GetString() function
- GetNumber() function
- AppPath() function
- JustFilePath() function
- JustFileName() function
- Value() function
- Times() function
- Map() function
- Filter() function
- Split() function
- SplitMany() function
- NewList() function
- Capitalized() function
- IsSpecial() function
- IsVowel() function
- LineCount() function
- Factorial() function
- Fibonacci() function
- IsPrime() function
- Sign() function
- List2File() function
- File2List() function
- StartsWith() function
- EndsWith() function
- GCD() function
- LCM() function
- SumList() function
- ProdList() function
- EvenOrOdd() function
- Factors() function
- Palindrome() function
- IsLeapYear() function
- BinaryDigits() function
- MatrixMulti() function
- MatrixTrans() function
- DayOfWeek() function
- Permutation() function
- ReadLine() function
- SubString() function
- ChangeString() function
- Sleep() function
- IsMainSourceFile() function
- DirExists() function
- MakeDir() function
- Fsize() function
- TrimAll() function
- TrimLeft() function
- TrimRight() function
- EpochTime() function
- SystemCmd() Function
- ListAllFiles() Function
- SystemSilent() Function
- OSCreateOpenFolder() Function
- OSCopyFolder() Function
- OSDeleteFolder() Function
- OSCopyFile() Function
- OSDeleteFile() Function
- OSRenameFile() Function
- Stdlib Classes
- Declarative Programming using Nested Structures
- Natural language programming
- Using the Natural Library
-
Web Development (CGI Library)
- Configure the Apache web server
- Ring CGI Hello World Program
- Hello World Program using the Web Library
- Web Library Features
- HTTP Get Example
- HTTP POST Example
- Upload Files
- Cookies
- URL Encode
- Templates
- HTML Special Characters
- Hash Functions
- Random Image
- HTML Lists
- HTML Tables
- Gradient
- Generating Pages using Objects
- HtmlPage Class
- Using Bootstrap Library using Functions
- Using Bootstrap Library using Objects
- CRUD Example using MVC
- Users registration and Login
- Database, ModelBase & ControllerBase classes
- WebLib API
- Application Class
- Page Class
- ScriptFunctions Class
- StyleFunctions Class
- WebPage Class
- HtmlPage Class
- Using RingLibCurl
- Using RingZip
- Graphics and 2D Games programming using RingAllegro
- Using RingLibSDL
- Using Ringlibuv
-
Demo Project - Game Engine for 2D Games
- Project Layers
- Graphics Library bindings
- Interface to graphics library
- Game Engine Classes
- Games Layer
- Game Class
- GameObject Class
- Sprite Class
- Text Class
- Animate Class
- Sound Class
- Map Class
- Using the Game Engine - Creating the Game Window
- Using the Game Engine - Drawing Text
- Using the Game Engine - Moving Text
- Using the Game Engine - Playing Sound
- Using the Game Engine - Animation
- Using the Game Engine - Animation and Functions
- Using the Game Engine - Sprite - Automatic Movement using Keyboard
- Using the Game Engine - Sprite - Keypress event
- Using the Game Engine - Sprite - Mouse event
- Using the Game Engine - Sprite - State event
- Using the Game Engine - Animate - Events
- Using the Game Engine - Map
- Using the Game Engine - Map Events
- Using the Game Engine - Object and Drawing
- Stars Fighter Game
- Flappy Bird 3000 Game
- Super Man 2016 Game
- Building Games For Android
-
Using RingOpenGL and RingFreeGLUT for 3D Graphics
- Samples Source (Authors)
- What is RingOpenGL?
- What is RingFreeGLUT?
- The First Window using RingFreeGLUT
- Drawing using RingOpenGL
- The First Triangle
- Window Resize Event
- Triangle Rotation
- Keyboard Events and Colors
- The Camera
- Mouse Events
- Menu Events
- Using Fonts
- Frames Per Second
- Make a Cube using RingOpenGL and RingFreeGLUT
- Using RingOpenGL and RingAllegro for 3D Graphics
-
Desktop and Mobile development using RingQt
- The First GUI Application
- Using Layout
- Using the QTextEdit Class
- Using the QListWidget Class
- Using QTreeView and QFileSystemModel
- Using QTreeWidget and QTreeWidgetItem
- Using QComboBox Class
- Creating Menubar
- Context Menu
- Creating Toolbar
- Creating StatusBar
- Using QDockWidget
- Using QTabWidget
- Using QTableWidget
- Using QProgressBar
- Using QSpinBox
- Using QSlider
- Using QDateEdit
- Using QDial
- Using QWebView
- Using QCheckBox
- Using QRadioButton and QButtonGroup
- Adding Hyperlink to QLabel
- QVideoWidget and QMediaPlayer
- Using QFrame
- Display Image using QLabel
- Menubar and StyleSheet Example
- QLineEdit Events and QMessageBox
- Other Widgets Events
- Using the QTimer Class
- Using QProgressBar and Timer
- Display Scaled Image using QLabel
- Using the QFileDialog Class
- Drawing using QPainter
- Printing using QPrinter
- Creating More than one Window
- Playing Sound
- Using the QColorDialog Class
- Using qLCDNumber Class
- Movable Label Example
- QMessagebox Example
- Using QInputDialog Class
- Dialog Functions
- KeyPress and Mouse Move Events
- Moving Objects using the Mouse
- Inheritance from GUI Classes
- Using QDesktopWidget Class
- Rotate Text
- Change Focus
- Regular Expressions
- Simple Client and Server Example
- Dynamic Objects
- Weight History Application
- Notepad Application
- The Cards Game
- Classes and their Methods to use the default events
- Methods to use Events with Events Filter
- The Difference between Qt and RingQt
- RingQt Classes and their Qt Documentation
- New Classes names - Index Start from 1
- Creating Reports using the WebLib and the GUILib
- Building RingQt Applications for Mobile
- Objects Library for RingQt Application
- Using the Form Designer
-
Scope Rules for Variables and Attributes
- Three Scopes
- Defining Variables and Variables Access
- How Ring find the variable?
- Using Object.Attribute
- The Self Object
- How Ring Define Variables and Attributes
- Conflict between Global Variables and Class Attributes
- Conflict between Class Attributes and Local Variables
- Using Braces to access objects inside Class Methods
- Accessing the class attributes from braces inside class methods
- Creating a Class for each Window in GUI applications
- Conflict between self inside braces and self in the class region
- Using braces to escape from the current object scope
- Summary of Scope Rules
- Scope Rules for Functions and Methods
-
Syntax Flexibility
- Change Language Keywords
- Change Language Operators
- Load Syntax Files
- Using "()" around the function parameters
- Using Semi-colon after and between statements
- Using $ and @ in the start of the variable name
- Using the 'elseif' keyword as 'but' in if statement
- Using the 'else' keyword as 'other' in switch statement
- Using the 'end' keyword in different control structures
- Using braces to start and end different control structures
- Using 'put' and 'get' as 'see' and 'give'
- Using 'case' as 'on' in switch statements
- Using 'def' as 'func' in functions/methods definition
- Using braces { } in Packages/Classes/Functions
- Using 'end' keyword after Packages/Classes/Functions
- Using 'endpackage'/'endclass'/'endfunc' keywords after Packages/Classes/Functions
- The Type Hints Library
- Command Line Options
- Distributing Ring Applications
-
Distributing Ring Applications using Ring2EXE
- Using Ring2EXE
- How Ring2EXE works?
- Example
- Options
- Building standalone console application
- Distributing RingAllegro Applications
- Distributing RingQt Applications
- Distributing Applications for Mobile using RingQt
- Building the Cards Game for Mobile using RingQt
- Building the Weight History Application for Mobile using RingQt
- Building the Form Designer for Mobile using RingQt
- Creating the Qt resource file using Folder2qrc
- Important Information about Ring2EXE
-
Low Level Functions
- callgc() function
- varptr() function
- space() function
- nullpointer() function
- object2pointer() function
- pointer2object() function
- ptrcmp() function
- ringvm_cfunctionslist() function
- ringvm_functionslist() function
- ringvm_classeslist() function
- ringvm_packageslist() function
- ringvm_memorylist() function
- ringvm_calllist() function
- ringvm_fileslist() function
- ringvm_settrace()
- ringvm_tracedata()
- ringvm_traceevent()
- ringvm_tracefunc()
- ringvm_scopescount()
- ringvm_evalinscope()
- ringvm_passerror()
- ringvm_hideerrormsg()
- ringvm_callfunc()
- Example - Using the Trace Functions
- Example - The Trace Library
- ringvm_see() function
- ringvm_give() function
- The Trace Library and the Interactive Debugger
- Embedding Ring Language in Ring Programs
-
Extension using the C/C++ languages
- ring_ext.h
- ring_ext.c
- Module Organization
- Function Structure
- Check Parameters Count
- Display Error Message
- Check Parameters Type
- Get Parameters Values
- Return Value
- Function Prototype
- Sin() Function Implementation
- Fopen() and Fclose() Functions Implementation
- Ring API - List Functions
- Ring API - String Functions
- MySQL_Columns() Function Implementation
- Dynamic/Shared Libraries (DLL/So/Dylib) and LoadLib() function
- Embedding Ring Language in C/C++ Programs
-
Code Generator for wrapping C/C++ Libraries
- Using the tool
- Configuration file
- Using the function prototype
- Adding code to the generated code
- Prefix for Functions Names
- Generate function to wrap structures
- Determine Structure Members Types
- Defining Constants
- Register New Functions
- Writing comments in the configuration file
- Executing code during code generation
- Enum and Numbers
- Filtering using Expressions
- Constants Type
- Configuration file for the Allegro Library
- Threads Support
- Code Generator Rules for Wrapping C++ Classes
- Using configuration file that wrap C++ Library
- Configuration file for the Qt Framework
- Configuration Files Examples
- RingLibCurl Functions Reference
- RingLibZip Functions Reference
- RingConsoleColors Functions Reference
- RingMurmurHash Functions Reference
- RingAllegro Functions Reference
- RingLibSDL Functions Reference
- RingLibuv Functions Reference
- RingFreeGLUT Functions Reference
- RingOpenGL (OpenGL 1.1) Functions Reference
- RingOpenGL (OpenGL 1.2) Functions Reference
- RingOpenGL (OpenGL 1.3) Functions Reference
- RingOpenGL (OpenGL 1.4) Functions Reference
- RingOpenGL (OpenGL 1.5) Functions Reference
- RingOpenGL (OpenGL 2.0) Functions Reference
- RingOpenGL (OpenGL 2.1) Functions Reference
- RingOpenGL (OpenGL 3.0) Functions Reference
- RingOpenGL (OpenGL 3.1) Functions Reference
- RingOpenGL (OpenGL 3.2) Functions Reference
- RingOpenGL (OpenGL 3.3) Functions Reference
- RingOpenGL (OpenGL 4.0) Functions Reference
- RingOpenGL (OpenGL 4.1) Functions Reference
- RingOpenGL (OpenGL 4.2) Functions Reference
- RingOpenGL (OpenGL 4.3) Functions Reference
- RingOpenGL (OpenGL 4.4) Functions Reference
- RingOpenGL (OpenGL 4.5) Functions Reference
- RingOpenGL (OpenGL 4.6) Functions Reference
-
RingQt Classes and Methods Reference
- CodeEditor Class
- QAbstractButton Class
- QAbstractItemView Class
- QAbstractScrollArea Class
- QAbstractSlider Class
- QAbstractSocket Class
- QAbstractSpinBox Class
- QAction Class
- QAllEvents Class
- QApp Class
- QAxBase Class
- QAxObject Class
- QBitmap Class
- QBluetoothAddress Class
- QBluetoothDeviceDiscoveryAgent Class
- QBluetoothDeviceInfo Class
- QBluetoothHostInfo Class
- QBluetoothLocalDevice Class
- QBoxLayout Class
- QBrush Class
- QBuffer Class
- QButtonGroup Class
- QByteArray Class
- QCalendarWidget Class
- QCamera Class
- QCameraImageCapture Class
- QCameraViewfinder Class
- QCheckBox Class
- QColor Class
- QColorDialog Class
- QComboBox Class
- QCompleter Class
- QCompleter2 Class
- QCompleter3 Class
- QCoreApplication Class
- QCursor Class
- QDate Class
- QDateEdit Class
- QDateTime Class
- QDateTimeEdit Class
- QDesktopServices Class
- QDesktopWidget Class
- QDial Class
- QDialog Class
- QDir Class
- QDirModel Class
- QDockWidget Class
- QEvent Class
- QFileDialog Class
- QFileInfo Class
- QFileSystemModel Class
- QFont Class
- QFontDialog Class
- QFontMetrics Class
- QFrame Class
- QFrame2 Class
- QFrame3 Class
- QGradient Class
- QGraphicsVideoItem Class
- QGridLayout Class
- QGuiApplication Class
- QHBoxLayout Class
- QHeaderView Class
- QHostAddress Class
- QHostInfo Class
- QIODevice Class
- QIcon Class
- QImage Class
- QInputDialog Class
- QJsonArray Class
- QJsonDocument Class
- QJsonObject Class
- QJsonParseError Class
- QJsonValue Class
- QKeySequence Class
- QLCDNumber Class
- QLabel Class
- QLayout Class
- QLineEdit Class
- QLinearGradient Class
- QListView Class
- QListWidget Class
- QListWidgetItem Class
- QMainWindow Class
- QMatrix4x4 Class
- QMdiArea Class
- QMdiSubWindow Class
- QMediaObject Class
- QMediaPlayer Class
- QMediaPlaylist Class
- QMenu Class
- QMenuBar Class
- QMessageBox Class
- QMutex Class
- QMutexLocker Class
- QNetworkAccessManager Class
- QNetworkProxy Class
- QNetworkReply Class
- QNetworkRequest Class
- QObject Class
- QOpenGLBuffer Class
- QOpenGLContext Class
- QOpenGLDebugLogger Class
- QOpenGLFramebufferObject Class
- QOpenGLFunctions Class
- QOpenGLFunctions_3_2_Core Class
- QOpenGLPaintDevice Class
- QOpenGLShader Class
- QOpenGLShaderProgram Class
- QOpenGLTexture Class
- QOpenGLTimerQuery Class
- QOpenGLVersionProfile Class
- QOpenGLVertexArrayObject Class
- QOpenGLWidget Class
- QPaintDevice Class
- QPainter Class
- QPainter2 Class
- QPainterPath Class
- QPen Class
- QPicture Class
- QPixmap Class
- QPixmap2 Class
- QPlainTextEdit Class
- QPoint Class
- QPointF Class
- QPrinter Class
- QProcess Class
- QProgressBar Class
- QPushButton Class
- QQuaternion Class
- QRadioButton Class
- QRect Class
- QRegion Class
- QRegularExpression Class
- QRegularExpressionMatch Class
- QRegularExpressionMatchIterator Class
- QScreen Class
- QScrollArea Class
- QSerialPort Class
- QSerialPortInfo Class
- QSize Class
- QSlider Class
- QSpinBox Class
- QSplashScreen Class
- QSplitter Class
- QSqlDatabase Class
- QSqlDriver Class
- QSqlDriverCreatorBase Class
- QSqlError Class
- QSqlField Class
- QSqlIndex Class
- QSqlQuery Class
- QSqlRecord Class
- QStackedWidget Class
- QStatusBar Class
- QString2 Class
- QStringList Class
- QStringRef Class
- QSurfaceFormat Class
- QSystemTrayIcon Class
- QTabWidget Class
- QTableView Class
- QTableWidget Class
- QTableWidgetItem Class
- QTcpServer Class
- QTcpSocket Class
- QTest Class
- QTextBlock Class
- QTextBrowser Class
- QTextCharFormat Class
- QTextCodec Class
- QTextCursor Class
- QTextDocument Class
- QTextEdit Class
- QThread Class
- QThreadPool Class
- QTime Class
- QTimer Class
- QToolBar Class
- QToolButton Class
- QTreeView Class
- QTreeWidget Class
- QTreeWidgetItem Class
- QUrl Class
- QUuid Class
- QVBoxLayout Class
- QVariant Class
- QVector2D Class
- QVector3D Class
- QVector4D Class
- QVideoWidget Class
- QVideoWidgetControl Class
- QWebView Class
- QWidget Class
- QWindow Class
- QXmlStreamAttribute Class
- QXmlStreamAttributes Class
- QXmlStreamEntityDeclaration Class
- QXmlStreamEntityResolver Class
- QXmlStreamNamespaceDeclaration Class
- QXmlStreamNotationDeclaration Class
- QXmlStreamReader Class
- QXmlStreamWriter Class
- RingCodeHighlighter Class
-
Frequently Asked Questions (FAQ)
- Why do we need Yet Another Programming Language (YAPL)?
- Why is Ring weakly typed?
- What are the advantages to using Ring over Lisp or Smalltalk?
- Why is Ring largely focussed on UI creation?
- Is Ring some sort of an improvement of PHP?
- What are the advantages of using Ring over native C or C++?
- What is the difference between Ring and Python? And is Ring Open Source?
- What are the advantages to using Ring over Perl, PHP, Python or Ruby?
- What are the advantages to using Ring over Tcl or Lua?
- What are the advantages to using Ring over C# or Java?
- The documentation says functional programming is supported, but then this happens?
- Why the ability to define your own languages Instead of just handing over the syntax so you can parse it using whatever code you like?
- Why you can specify the number of loops you want to break out of?
- Why Ring uses 'See', 'Give', 'But' and 'Ok' Keywords?
- What is the philosophy behind data types in Ring?
- What about the Boolean values in Ring?
- What is the goal of including the "Main" function in Ring?
- Why the list index start from 1 in Ring?
- Why Ring is not case-sensitive?
- Why the Assignment operator uses Deep Copy?
- Is there constructor methods in Ring?
- What happens when we create a new object?
- Can we use the attributes by accessing the Getter and Setter methods?
- Why should a search of global names be made while defining the class attributes?
- Why Ring doesn't avoid the conflict between Global Variables and Class Attributes Names?
- Where can I write a program and execute it?
- How to get the file size using ftell() and fseek() functions?
- How to get the current source file path?
- What about predefined parameters or optional parameters in functions?
- How to print keys or values only in List/Dictionary?
- Why I get a strange result when printing nl with lists?
- Could you explain the output of the StrCmp() function?
- How to use many source code files in the project?
- Why this example use the GetChar() twice?
- How to use NULL and ISNULL() function?
- How to print lists that contains objects?
- How to insert an item to the first position in the list?
- How to print new lines and other characters?
- Why we don't use () after the qApp class name?
- Why the window title bar is going outside the screen?
- How to create an array of buttons in GUI applications?
- How to Close a window then displaying another one?
- How to create a Modal Window?
- How can I disable maximize button and resize window?
- How to use SQLite using ODBC?
- Can I connect to dbase/harbour database?
- Why setClickEvent() doesn't see the object methods directly?
- Why I get Calling Function without definition Error?
- Can Ring work on Windows XP?
- How to extend RingQt and add more classes?
- How to add Combobox and other elements to the cells of a QTableWidget?
- How to perform some manipulations on selected cells in QTableWidget?
- Which of 3 coding styles are commonly used or recommended by the community?
- Language Reference
- Resources