Version 2.1.1
Copyright © 2006-2008 CFB Software
Portions Copyright © 1998-2007 Queensland University of Technology (QUT)
Last Updated 11 Jul 2008
| E-Mail: | info@cfbsoftware.com | |
| Website: | http://www.cfbsoftware.com/cpide |
CPIde is a lightweight integrated development environment for Windows which enables you to write software for the Microsoft Windows .NET platform. The programming language supported by CPIde is Component Pascal. If you don't have Visual Studio .NET, or find it too cumbersome to use, but don't like the idea of using command-line compilers with DOS batch files etc. CPIde is a useful alternative .NET development environment.
Component Pascal (CP), a small superset of Oberon-2, is a general-purpose, procedural and object-oriented, programming language. Oberon-2 is a refinement of Modula-2 which, in turn, was an improved version of Pascal. Programmers with experience of any of these languages will find many aspects of Component Pascal very familiar.
Component Pascal was developed by Oberon microsystems, Inc. who distribute a Win32 implementation of the language as part of the open-source BlackBox Component Builder.
The version of Component Pascal used by CPIde is Gardens Point Component Pascal (GPCP) - an implementation of the language which targets both the Microsoft .NET Framework and the Java Virtual Machine (JVM). The .NET version is available as a command-line compiler and as a beta version integrated into Visual Studio .NET. The .NET version of Component Pascal can be used to develop applications to run on the Windows desktop, webservers and Pocket PCs.
CPIde has the following features:
CPIde has been implemented in Component Pascal for .NET and C#. The C# contribution is less than 10% of the total lines of code and is mostly related to the printing functions. As such, it is a good indication of the kind of .NET WinForms application development that is possible using GPCP.
The prototype of CPIde was developed with just a text editor and GPCP. Once the prototype was operational, the remainder of CPIde was developed using CPIde itself.
A number of simple example programs are installed in your Documents\CPIde Projects\Examples directory when you install CPIde. These are primarily intended to help newcomers to Component Pascal to get started, but they should also be useful if you have limited experience developing software for the .NET framework.
The Console Applications display their output in a separate pane in the main CPIde Window where the compilation error messages are also displayed. The WinForms programs are executed as a separate Windows application.
Both types of programs can be run independently of CPIde, if preferred, without any modifications. The source files included are:
|
Simple Console Output Examples |
|
| Evens.cp |
FOR Loop Display the even numbers from 2 to 10. |
| Out.cp |
Console Output Functions Basic output library module used by some of the following programs. Useful if porting simple examples from an Oberon environment. |
| CountChars1.cp |
WHILE Loop Count, one by one, the number of characters in a string array. |
| CountChars2.cp |
ARRAY OF CHAR / Strings Count the number of characters in a string using the standard Component Pascal LEN function. |
| CountChars3.cp |
IF THEN ELSE Statement Count the number of letters and digits in a string using IF THEN ELSE statements. |
| CountChars4.cp |
IF THEN ELSIF Statement Count the number of occurrences of different categories of characters in a string using IF THEN ELSIF statements. |
| CountChars5.cp |
CASE Statement Count the number of occurrences of different categories of characters in a string using a CASE statement. |
| CountChars6.cp |
Performance Timing Count the number of occurrences of different categories of characters in a huge string (1 million characters) using two different techniques. One uses a CASE statement and the other uses IF THEN ELSE statements. To compare the relative efficiencies, the processing time of each technique is measured using .NET timing procedures which have microsecond resolution. |
| FileCountChars.cp |
Text File Input Count the number of occurrences of different categories of characters in a text file using a StreamReader, Command-line arguments and a CASE statement. |
| CopyText.cp |
Text File IO When you run the program it creates a duplicate (called Copy of CopyText.cp) of its source. Uses StreamReader and StreamWriter functions to copy an entire text file to / from a string. |
|
SplitText.cp SplitLines.txt |
Text File IO Uses StreamReader and StreamWriter functions to read the contents of the text file SplitText.txt line by line, creating a set of subfiles SplitLines.001, SplitLines.002 etc. each with a maximum of 100 lines. |
| MergeText.cp |
Text File IO Uses StreamReader and StreamWriter text file IO functions to join the set of files SplitLines.001, SplitLines.002 etc. into a single file MergeLines.txt |
| EnvironmentVars.cp |
Environment Variables Display the contents of the system's PATH and CPSYM environment variables. |
| Registry.cp |
Windows Registry Display the current values of the CPIde options' registry keys read from the Windows Registry. |
| Directory.cp |
Directory Listing Display the list of files and their attributes in the current directory. Uses the SET data type to conveniently process System.IO.AttributeFlags. |
|
WinFormsExamples |
|
| BouncingBall.cp |
Simple Animated Graphics A ball bouncing off the borders of a resizable form. |
| BouncingBalls.cp |
Simple Animated Graphics Two independent balls bouncing off the walls of a resizable form. It is designed to be easily modified to add extra balls of different size, colour and speed. |
| Graphics.cp |
Graphic Shapes, Text and Lines Draws squares, circles, text with different fonts and lines of different colours on a .NET PictureBox. |
| ImageFromFile.cp |
Display an Image Enter the filename of a jpg or bmp format file when prompted by a standard File Open dialog. The image is displayed on a resizable form. |
| MouseMove.cp |
Event Handling Move the mouse over the resizable form. The Mouse Move events are registered and the corresponding mouse co-ordinates are displayed in the Status Bar. |
| MenuStrip.cp |
MenuStrip Select a menu item and the menu caption is displayed on the StatusBar. Includes a function to strip non-alphabetic characters from a string using a StringBuilder. |
| SecondsTimer.cp |
Seconds Timer A minutes and seconds timer. Uses Timer control, Timer.Tick event and DateTime data type. |
| Countdown.cp |
Countdown Timer A minutes and seconds countdown timer. Uses NumericUpDown and Timer controls, Form.Activated and Timer.Tick events and DateTime data type. |
|
Mailer.cp |
Send an Email Functions of the System.Net.Mail assembly are used to create and send emails. Uses a MenuStrip, a Panel, Labels, TextBoxes and a RichTextBox control. |
|
Birthdays.cp birthdays.tsv |
Birthday Reminder Read a list of birthdays from a tab-separated (tsv) text file and display it in a DataGridView component. The fields, current age and date of next birthday, are read-only. They are automatically calculated from the date of birth. The display is sorted by 'Next Birthday, Last Name' so that, by default, the next occurring birthday is at the top of the list. |
|
Library Module Examples |
|
| NetLibs.cp |
Interface Definitions for Commonly Used .NET Modules Open this file in the Component Pascal IDE (CPIde version 2.0 or later) then double-click on the name of one of the listed imported modules in the CPI Imports Window to view the definition of the module's interface. |
|
Maths.cp TestMaths.cp |
Additional Maths Functions Sum, Mean, Variance, Standard Deviation and Random functions are implemented. |
|
Find.cp TestFind.cp |
A Non-modal FindText dialog Uses the following Windows Forms controls: CheckBoxes, Buttons, a Label, and a ComboBox. A multi-line TextBox is used to log any user actions. |
To use this version of CPIde you will need to have v1.3.9 of the Gardens Point Component Pascal (GPCP) for .NET compiler for .NET 2.0 installed on your system:
GPCP requirements include:
If you do not already have both of these, they can be downloaded from Microsoft's website:
If this URL has been superseded try the more general download link:
CPIde is distributed as a self-installing file CPISetup.exe
Install CPIde as follows:
The CPIde package installation program is a single file called CPISetup.exe
After running CPISetup the following files are created in the directory that you specified:
| CPIde.exe | Main program | |
| CPIde.chm | Help file | |
| ReadMe.htm | This file | |
| UnistallCPIde.exe | Uninstall program | |
| UnistallCPIde.log | Uninstall support file |
A subdirectory called CPIde/Examples is created in your Windows Documents directory. This contains the example Component Pascal source files supplied with CPIde.
v2.1.1
Enhancements
Problems fixed
v2.1.0
Enhancements
Problems fixed
v2.0.2
Enhancements
Problems fixed
v2.0.1
Problems fixed
v2.0.0
v1.1.0
Enhancements
You should carefully read the following terms and conditions before using this software. Your use of this software indicates your acceptance of this licence agreement and disclaimer
This version of the software is distributed, and may be used, free of charge. It may be given away to anyone, included on CD-ROM libraries, magazine cover CDs and DVDs, uploaded to websites, ftp sites and bulletin boards, etc. as long as:
a) It is distributed in its complete original unmodified form, including this 'readme' file.
b) No direct profit is made from its distribution.
DISCLAIMER
CPIde is used entirely at the risk of the user. Although great care has been taken
to eliminate defects during the development of CPIde, it is not claimed to be fault-free.
No claims are made regarding its correctness, reliability or fitness for any particular
purpose. The Author shall not be liable for errors contained herein or for incidental
or consequential damages, loss of data or personal injury in connection with furnishing,
performance, or use of this material.
Back to Contents