Virtual Pascal

Release date: 
Wednesday, 22 November, 2006



Authors/Port authors:

Virtual Pascal is the tool of choice for 32-bit cross-platform development using the Pascal language. It is compatibile with Borland Pascal and Delphi, including the Run-Time Library (RTL), an optimizing compiler, a powerful integrated debugger, and comprehensive online documentation. Software dismissed.

You can also use Free Pascal.

This software is distributed as compressed package. You have to download and manually install it; if prerequisites are required, you will have to manually install them too.

Manual installation

Program is distributed as ZIP package: download to temporary directory and unpack to destination folder. Run setupos2.exe. See below for download link(s).

Online documentation:

Following ones are the download links for manual installation:

Virtual Pascal v. 2.1 b279 (22/11/2006, Virtual Pascal, Allan Mertner) Readme/What's new
Virtual Pascal v2.1 Beta Build 279 London, May 2004 (C) Copyright 2004 This file is intended to give an overview of what has changed between Virtual Pascal v2.1 Beta build 243/270/274 and this build. Both bugfixes and new features are mentioned. Where a bug of a new feature has been assigned a reference number, the reference number is mentioned as well. Most changes are mentioned in this document. For a more detailed description of each issue, please refer to the VP Bug Database which can be found at Bug fixes in build 277 ---------------------- [98] Misc issues with SysCmdLn in Windows. [107] Readkey does not get all pasted text. [108] A number of character input issues in Windows, including use of AltGr/Right-Alt [110] Bug in record alignment in ShellApi.pas. [111] Bug in Turbo Vision open dialog (stddlg.pas) [125] HeapChk.pas did not work correctly. [134] Files created in Linux always got the Executable attribute. [147] WinDos.GetEnvVar always returned garbage in Windows. Bug fixes in build 274 ---------------------- [42] Fixed definition of DeviceCapabilities API in win32.def. It was listed as an API in winspool.dll - it actually exists in winspool.drv. [43] In Win32, several Ansi/Oem code page translation functions were used to handle character set translation for console applications. This has now been removed so the internals of VpSysW32 use Oem code page strings by default when used in a console application. As a result, file names with high-ascii characters in the name should work better than before. [74] The IDE and compiler now both load a localized string file if available. If the LANG environment variable contains both a language code and a country code, only the language code is used to identify the string file to use. [79] In build 270, a "bugfix" was added to the Delete function, allowing it to do something for values of Index <= 0. This has been reverted to be compatible with Turbo Pascal and Delphi, where Index <= 0 means the routine does nothing. [87] The Windos.FileSplit function did not handle files with more than one "dot" in the name. [94] In Linux, not all OS exceptions were correctly mapped to language exceptions, causing at least one of the test cases to fail. [98] The SysCmdLn function did not return the documented string in Win32. Specifically, the program and argument portions of the returned value were separated by a Space, not a #0 as it should be. [99] In Win32, the environment functions caused a memory leak because the FreeEnvironmentStrings API was not called. Added a new routine to VpSysLow, SysFreeEnvironment, which should be called to free the result of the SysGetEnvironment call. [101] The OS/2 PM IDE would hand and use 100% of the CPU. This was caused by two separate sets of code trying to handle dynamic resizing of the window. [103] If a source file was opened by typing in the file name in the Open dialog, and then saved, the file name case would change to what was typed in. This has been fixed so the IDE adopts the case of the filename on disk. [106] The Linux IDE was unable to navigate to directories less than 2 levels deep. This was caused by a bug in the Linux version of FindFirst. [na] Updated test cases to include tests for command line handling functions and OS-to-language exception mapping. [na] Fixed issue where the linker sometimes would complain about a missing entry point in the Strings unit (Win32 only). [na] Implemented SysCtrlGetModuleName for Index = 0 in Linux. [na] Added {&Delphi+} to Math.pas; this is required. The following is a list of what was new in VP v2.1 Build 270: New Features and Enhancements ----------------------------- * New Windows API Interface Units [77] Added opengl.pas, implementing an interface to the OpenGL API. This unit may also work in OS/2, although it has not been tested. [71] Added commctrl.pas, implementing API interfaces for Windows' Common Controls. [71] Added mmsystem.pas, implementing an interface to Windows Multi Media APIs. [15] A new unit (wincrypt.pas), which implements an interface to the Windows Crypto API has been added to source\w32. * New Examples [77] Three new OpenGL examples have been added and can be found in the \examples\w32\opengl directory. A common framework for the examples can be found in the shared subdirectory. The examples are originally written by Jan Horn. [35] Added a test framework suitable for testing the VP RTL and compiler. The code for the test framework can be found in \examples\tests and compiles for all platforms. (Note that there are not very many tests yet - please contribute some! :) [13] A basic Win32 GUI example has been included, for those that wish to do this kind of programming. The example can be found in \examples\w32\gui\hello.pas [na] The Touch example has been expanded to be useful: it allows files in subdirectories to be touched, and can be told to ignore locked files. * Run-Time Library enhancements [na] All of the new functions are documented in the online help accessible from within the IDE. [82] Added functions for retrieving and setting the FPU control word to the Math unit. [78] Several functions in the Math unit have been updated to be more precise (Min* and Max* constants, Tan, CoTan and ArcTanh functions), and several new functions have been added: - SinCosD and SinCosS for Double and Single arguments - New trig functions (Hav, ArcHav, Vers, CoVers, Chord, Secant, CoSecant) - New hyperbolic functions (Sech, CoSech, CoTanh, ArcCoTanh, rcSech, ArcCosech) - Cubic root function Cuberoot - Much faster IntPower routine [56] The Exp function in the System unit has been made as accurate as possible, to facilitate complex math problems. The previous one was much less accurate and failed several of the new test cases for Exp. [55] Several functions in the System unit have been made faster by using instructions that can be pipelined on modern CPUs. I have done the same to several PChar functions in the Strings unit, and the code is now a little bigger and 2-4 times faster than before. [33] Object Professional has been added to the installer with full source code, as a result of TurboPower releasing it as Open Source. [28] Added support for disks > 2GiB in the SysDiskFreeLong and SysDiskSizeLong functions in VpSysLow. [26] Added a missing ResetSemaphore function to VpSysLow. [na] The Linux interface units (Linux.pas, VpSysLnx, etc) have been expanded significantly. [na] Support for 32-bit DOS (DPMI32) has been added to the RTL. The new VpSysD32.pas and VpUsrD32.pas units implement this functionality. Note: to use this, you need to define a custom compiler target in the IDE and have a compatible DOS extender for running the programs. [na] The File Locking functions have been added to Os2Base.pas. A bug in the definition of the DosFSCtl API has been fixed. [na] A new unit for 64-bit calculations using the Comp type has been added as int64.pas. [na] A new unit for various String functions that don't fit anywhere else has been added: vpstring.pas * IDE enhancements An experimental Linux IDE has been included. This IDE is able to do everything you can do in Windows or OS/2 - except debug. The debugger does not yet work; with luck, it will soon. Note that Ctrl-, Shift- and Alt-keys may work strangely when operating on a non-local terminal (such as telnet or ssh). [74] The IDE now automatically loads a localized string file if it exists. If not, it defaults to the English vp.str file. To determine which file to load, VP looks for the VPLOCALE environment variable. If this is found, it looks for a file named 'vp-<lang>.str' in the Common directory and uses it if it is found. If VPLOCALE is not defined, or the file does not exist, VP uses the LANG environment variable for the same purpose. A German language file (vp-de.str) for the IDE has been included. [69] When using a Log Point in the debugger (i.e. a breakpoint that does not break, but instead logs something to the Log window), the TID of the current thread is added as well. This makes it much easier to track hard-to-find thread issues such as [20]. [38] The IDE now auto-detects UNIX text files. This works by checking the character before the first #10 in the file - if it's a #13, then it is a DOS file, otherwise it's a UNIX one. [36] The IDE's open dialog now accepts multiple wildcards. This allows the standard one to open pas, inc, dpr and pp files, which is convenient when browsing for different kinds of Pascal source files. [11] A build of VP now has more information about itself in the About Box, including build date and location. * Compiler enhancements [91] The compiler now implicitly adds the directory of the primary file to the end of the search path. This allows examples and other code to be compiled (even when it requires multiple files to be compiled) without changing the current directory. [72] The Real type is now defined as being identical to the 8-byte Double, and the slow 6-byte Real type is called Real48. If you need to store Reals in a file that is shared with Turbo Pascal, use Real48 - everyone else can use the new Real, which is much faster. [50] The compiler now recognizes Linux as a standard target. To use this target, use /CL on the command line. (Note that Linux support still is experimental - this simply makes it easier to experiment :) * Installer enhancements A new native installer for Linux is included, setuplnx. It works just like the Windows and OS/2 installers, with a few exceptions: - The drive selection dialog is not shown - The "case" dialog is not shown; everything is installed in lower case - The patch mechanism does not work as it relies on a Dos executable. [61] The installer has been changed to disallow custom selection of packages except when "Custom Setup" is chosen. Too many users chose "Everything that is Free" and then enabled non-Free packages. Bug fixes --------- [na] Using SetLength(<AnsiString>, N) with N < 0 led to unpredictable results. [92] Added several new Windows kernel32 functions to the import library. [83] The SameText function in SysUtils could sometimes search further than it should have. [79] The Delete procedure did not work correctly for an Index < 0. [71] Updated Windows.pas with several new constants introduced in Windows XP. [68] The SysCtrlCreateThread function in VpSysLow leaked thread handles in Windows. [63] The ExecDos command in OpDos.pas did not work in OS/2. [58] The OS/2 implementation of SysFileUNCExpand in VpSysLow returned incorrect values for non-LAN remote file systems. [48] The run-time location information (RTLI) lookup routine in System, GetLocationInfo, failed for code in DLLs. [46] The Eoln routine did not work if the CR-LF sequence was split into two different read buffers. [42] The DeviceCapabilities API (Windows) was incorrectly defined. When the API was called, the application would crash. [40] The installer now refers to disk space in SI units KiB and MiB instead of the imprecisely defined KB and MB. Please refer to this article if you are confused: [39] The SysGetDriveType function of VpSysLow would often recognize network drives as NTFS partitions instead. [32] TWindowsObject.GetChildren (an OWL unit) did not work if the window being restored had children because of a stack corruption. [31] When loading and unloading DLLs dynamically, the exit code for the unloaded (VP-produced) DLL would close the StdIn and StdOut handles in Windows. [30] Screen corruption could occur in the IDE (and other TV apps) when the screen mode was switched. [25] When no key was pressed in Windows, the value of SysShiftState was not updated. [22] ReAllocMem did not fill the newly allocated memory with 0s as indicated in the online help. It does now. [20] Applications using a lot of threads could crash in the _GetTlsVar routine of the System unit. This has been fixed, and the speed of the heap manager has been increased at the same time. Also fixed an issue in the TLS lookup code when accessing the first TLS variable of a module. [18] In some cases, "Not a Number" values (NaN) of floating point variables were not displayed correctly - they sometimes showed up as INF (Infinite) instead. [10] The stack guard page mechanism would not always work correctly in threaded OS/2 applications, and this could cause a crash. [3] The editor could sometimes hang if you pressed Ctrl-Y to delete the first line of a file.
Record updated last time on: 18/06/2019 - 04:31

Translate to...

Add new comment