home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
ftp.alaska-software.com
/
2014.06.ftp.alaska-software.com.tar
/
ftp.alaska-software.com
/
updates
/
xppw32e2.txt
< prev
next >
Wrap
Text File
|
1999-12-01
|
22KB
|
568 lines
/*
* XPPW32E2.TXT
*
* Service Level 2 notes for Xbase++ Version 1.20.178
* for Window NT and Windows 95/98 (WIN32T)
*
* International Edition
*
* Date: 10/27/1999
*
*/
____________________________________
0. Information for beta participants
In this section you find important information that applies to the
different beta builds of Xbase++ Service Level 2. You find latest
information at the top of this section. Note that this information
is cumulative, e.g. information for build 204 is also valid for
build 205.
----- information for build 212 ------
a) This patch can only be applied to Xbase++ version 1.20.178 which is
Service Level 1.
b) You can order a new product CD that includes a complete installation
version of Xbase++ Service Level 2 for a fee of US$ 25.- (DM 50.-)
c) There are new example programs in these directories:
..\SAMPLES\BASICS\PRESPARA
..\SAMPLES\BASICS\QBROWSE
----- information for build 210 ------
a) *** !!! V E R Y I M P O R T A N T !!! ***
You must rebuild your index files to make sure that your application
will not be affected by PDR 3342 that is closed with build 210. Under
certain circumstances the OrdCreate() function has created a corrupt
index file. You cannot be sure that your index files are free of
errors unless you rebuild all indexes from scratch.
b) The PagedDataStore class was renamed to DacPagedDataStore to reflect
its relation to the Data Access Chain. This breaks the code you
have written for XBpQuickBrowse. The former PagedDataStore class function
must be prefixed with DAC.
c) The XbpCrt class has got the following new methods
:currentPos() , :setPos()
:getFrameState(), :setFrameState()
:toBack() , :toFront()
:isVisible()
This caused these instance variables and methods to become obsolete:
:xPos, :xSize, :yPos, :ySize
:minimize(), :maximize()
For compatibility reasons, they are still supported but will
be dropped from a later Xbase++ release. Please make sure to
replace in your code:
:xPos and :yPos with :currentPos()
:xSize and :ySize with :currentSize()
:minimize() and :maximize() with :setFrameState()
d) In the XbpMenuBar class, changes are made on callback code blocks and
methods (this affects XbpMenu as well, since it is derived from
XbpMenuBar):
:activateItem is renamed to :itemSelected for consistency reasons.
The old name is still supported in order not to break code, but
you should rename :activateItem to :itemSelected to be prepared
when the iVar is dropped in a later release.
:itemMarked is new and indicates that a menu item is hilighted.
:beginMenu and :endMenu are new.
e) The methods :setColRepresentation() and :getColRepresentation()
of the XbpQuickBrowse and XbpMultiCellgroup classes are
changed. This allows for defining two different images to be
displayed for a given value. One image is used if a row is highlighted,
the other is used for normal display of rows in a browser column.
f) The presentation parameters of all Xbase Parts are revised. They
support foreground and background colors and react to changes made
in the system control panel due to their revised default color settings.
Refer to the new chapter "Presentation Parameters for Xbase Parts"
in the online documentation for details. You can link to it from
the "list of changes window"
The basic mechanism of presentation parameters is demonstrated in the
new example program \BASICS\XBPSTYLE\PRESPARA.PRG
To see an example of colored entry fields refer to the new example
program \BASICS\XBPSTYLE\SLESTYLE.PRG
g) There is a new example program \BASICS\GUIEVENT\SHUTDOWN.PRG that
demonstrates how to react to, or reject, a system shutdown.
h) Changes are made in the example directory \SOLUTION\XBPGET
:renamed
EDITCOL.PRG is renamed to GETCOL.PRG
:added
COMBOCOL.PRG = How to use a combobox for editing in a browser
SPINCOL.PRG = How to use a spinbutton for editing in a browser
MLECOL.PRG = How to use a multi line edit for text editing in a browser
COLTEST.PRG = Test program for the above
:changed
XBPGET.PRG = XbpGet has received an own context menu
i) The OrdKeyNo() function is no longer recommended to be used when
browsing indexed databases with XbpBrowse.
oXbpBrowse:posBlock := {|| OrdKeyNo() }
This approach results in a slow browser response, especially when
large databases are displayed. To speed the browser up, it has received
a new instance variable :goPosBlock so that a relative navigation
is possible when the vertical scrollbar is used for browsing.
This is the recommended replacement for OrdKeyNo():
oXbpBrowse:posBlock := {| | DbPosition() }
oXbpBrowse:goPosBlock := {|n| DbGoPosition(n) }
----- information for build 205 ------
a) Windows 98 is now an officially supported platform for Xbase++.
The (really hard to find) reason for the 0x0E exception causing
blue screens -especially when debugging an Xbase++ application-
has been identified, resolved, and proven to be gone with
beta build 204.
Alaska Software officially announces Xbase++ to work under
Windows 95, 98 and NT (Win2000 looks very promising so far).
b) CLOSEPDR.TXT is now divided into separate build sections so that
PDRs closed in a particular release can be identified more easily.
c) The "show stopping" PDRs in the area of database and index operations
that slipped into build 204 are closed. Please refer to the CLOSEPDR.TXT
file and test all related PDRs extensively.
d) The Caps-Lock PDR 3032 is closed. Since this dependends on the country
settings, please make sure that Caps-Lock works in your environment.
e) The management of presentation parameters is optimized. If you find
anomalies in this area, immediately report them in our beta news group.
f) The default presentation parameters of XbpQuickBrowse are changed so
that the browser looks more system compliant in its default appearance.
----- information for build 204 ------
a) This patch overwrites all files in the ..\XPPW32\SAMPLES directory tree,
except for the files located in the ..\XPPW32\SAMPLES\DATA directory.
If you have made changes in example source code files, you must copy
them into another directory if you want to keep the changes.
b) One #define constant of DMLB.CH to be used for the FieldInfo() function
changed its meaning. If you use the constant FLD_TYPE in your programs
and pass it to FieldInfo(), the function returns a character instead
of a numeric value. To get the numeric value, the new constant
FLD_TYPE_AS_NUMERIC must be used.
----- information for build 200 ------
a) Pbuild is fixed so that it recognizes the OBJ_DIR setting correctly.
However, this requires all file names listed in the section between
$START-AUTODEPEND and $STOP-AUTODEPEND not to include any path
information. Only the file names with extensions are allowed.
We recommend to run PBuild once using the -g switch, so that the
dependencies are correctly updated in a Project file.
----- information for earlier builds ------
a) Refer to the section #5B below
____________
1.0 Overview
This file contains important information about the installation
procedure of this Service Level beta version.
You can find a list of changes in the section "Important notes" below
and in the chapter "Changes" of the Xbase++ online documentation.
The list of the closed PDRs is found in CLOSEPDR.TXT
____________________________________
2.0 Check your existing installation
Please make sure you have the following product completely installed:
- Xbase++ 1.20.178 Intl.
If this is not the case, install Xbase++ completely new from your
CD-ROM and apply the Service Level 1, if necessary.
To display the current version number of your Xbase++ installation
type on the DOS prompt:
[C:\ALASKA\XPPW32]xppload version
Please see chapter 6 how to contact Alaska Software.
2.1 NOTE FOR BLINKER 5.x USERS
If you have copied the ..\LIB\OMF files into the ..\LIB directory,
you must copy the files from the directory ..\LIB\COFF back into
..\LIB before you proceed with the Service Level installation.
Due to some support issues we do not recommend any more to copy
the OMF libraries into the ..\LIB directory when Blinker is used.
Instead, we recommend to change the LIB environment variable so that
it points to the appropriate directory:
SET LIB=..\LIB\OMF
2.2 NOTE FOR limited beta participants
This patch cannot be applied to the intermediate beta release
versions of Xbase++ but only to version 1.20.178 (Service Level 1)
_______________________________
3.0 Copy the Service Level file
Download the appropriate file to your computer:
XPPW32E2.EXE - International
Now, copy the file XPPW32E2.EXE to the root path of your current
Xbase++ installation.
[C:\ALASKA\XPPW32]copy \<your download-dir>\XPPW32E2.EXE .\
_____________________
4.0 Apply the changes
The XPPW32E2.EXE is a self-extracting archive with an auto-start
feature. It unpacks the necessary files and applies all changes
automatically.
To install the Service Level 2, enter on the DOS prompt:
[C:\ALASKA\XPPW32]XPPW32E2.EXE
Pay attention if error messages are displayed during the installation
and/or check the SERVICE.LOG file for error messages.
The patch works incrementally. If you cancel the process or if an
error occurs which you are able to resolve, you can restart the
process at any time by entering on the DOS prompt:
[C:\ALASKA\XPPW32]SERVICE.EXE
To check a succesful patch, call on the DOS prompt:
[C:\ALASKA\XPPW32]XppLoad version
The resulting output should display the release number 1.30.212.
___________________
5.0 Important notes
A) Recompile and link everything
Before you run an executable with Service level 2 you must recompile
all your source code files, otherwise your application will fail!
Use "PBuild -a" to rebuild an entire project.
If something does not work after a first re-build, please make sure
that there are no binary "leftovers" from a previous Xbase++ version
somewhere on your system (OBJ, LIB, DLL files) that are "accidentially"
linked.
B) Changes since Xbase++ 1.20.178
1. Database performance
Database access speed improved drastically.
DatabaseEngines use now a dynamic approach for I/O caching.
This has reduced memory-consumption significantly. In fact,
DBEs consume up to 6 times less cache memory than in
Xbase++ 1.2.
The database-kernel of the Xbase++ runtime features now an
optimized merge/sort engine. This results in increased
performance of DbSort(), DbCreateIndex(), OrdCreate() operations.
Specifically long key-values or large data-sets will be
reindexed faster than with Xbase++ 1.2.
2. Code generation
The Xbase++ compiler optimizes operation execution for all LOCAL
variables which are not detached. This leads not only to a faster
code execution but also to a smaller code size and reduces linker
fixups.
A code block was formerly known as a sequence of pseudo codes,
which, in turn, were executed at runtime. In certain cases, the
compiler is now capable of generating native code linked to
the code block, but keeps the pseudeo code as well.
The macro-compiler optimizes simple expressions which results in a
significant speed improvement by the factor of 10 or more, depending
on the macro-expression.
A lot of string operations could be improved, which results in speed
gain and saved memory. You will discover the most extreme
acceleration when executing inline string concatenations like:
c := ""
FOR i:= 0 TO 100000
c += "Hi"
NEXT
3. Memory management and GUI resources
The memory manager is improved to arrange the memory blocks more
tightly and, thus, save memory against the operating system's
virtual memory manager. It also detects if there are pages
of unused memory over time and releases them back to the OS.
The boost methods for the garbage collector were changed to behave
properly for most of the application scenarios.
An internal cache/resource manager for GUI resources is added
which has reduced the consumption of GUI resources from the
operating system N times, depending on the application type. It
also provides automatic resource reuse strategies to avoid the
Windows 95/98 GUI resource problems which are intrinsic to these
operating-system family.
4. Compiling
The Xbase++ compiler accepts as command line parameters multiple
PRG file names or a script file containing a list of PRG files.
xpp file1.prg file2.prg /link
xpp @list.txt /link
Pbuild makes use of this feature already which decreases your
turn-around time up to 50%.
5. STD.CH
All database related commands are changed in order to perform
"early binding" when a macro expression is used as a command
parameter. This improves the speed of commands like
cFilter := "My Filter Expression"
SET FILTER TO &cFilter
6. DBESYS.PRG
In addition to DBFDBE and NTXDBE, the DatabaseEngines DELDBE and
SDFDBE are loaded as default DBEs.
7. Event handling
Callback methods are changed from "asynchronous" to "synchronous"
mode. That means: if you derive a class from an Xbase Part that has
a default event-handler and overload an event-handling method, the
corresponding default event-handling method is NOT executed unless
you call the same method in the super class.
We have included some PRGs to demonstrate this important change.
Have a look at the new example programs:
..\SAMPLES\BASICS\GUIEVENT\USERPBN.PRG
..\SAMPLES\BASICS\GUIEVENT\USERSLE.PRG
..\SAMPLES\SOLUTION\CALCSLE\CALCSLE.PRG
NOTE: The callback code blocks are treated as in the previous
version. I.e. an event is handled before the corresponding
code block is executed.
8. XPF and XFF files
The file format for XPF files (XFF files of the FormDesigner) is
changed. SL2 detects the old XPF format and converts it to the new
one, i.e. SL2 is downwards compatible and existing XPF and XFF files
can still be read. However, Xbase++ versions prior to SL2 cannot
read the new file format (SL1 cannot read XPF files created by SL2,
but SL2 can read XPF files created by SL1).
9. XbpGet class
We have refined the XbpGet class in terms of Pre and Post validation.
You can define Pre and Post validation rules for an XbpGet object,
no matter whether it resides in a modal or modeless window. However,
the "XbpGet is in a modeless window" situation required us to add
an XbpGetController class that handles focus changes between single
XbpGet objects. That means: you have to adjust your code that uses
the XbpGet class. An XbpGet object does not work without the aid of
an XbpGetController object.
Both classes, XbpGet and XbpGetController, are included in PRG
source code (see ..\SAMPLES\SOLUTION\XBPGET). If you are interested
in the Xbase++ internal works, take the chance and study the files
XBPGET.PRG and XBPGETC.PRG carefully. They demonstrate how you can
customize an entry field to the utmost extent using Xbase++ base
classes.
10. XbpBrowse is editable
You can build an editable browser with the XbpBrowse class since the
required methods are refined and documented now. However, the
editing issue does not affect the XbpBrowse but the XbpColumn class,
which has got methods required for editing a single cell of a
browser column (see the "Changes in documentation" online-help window).
We have included two new example programs which demonstrate how to
make an XbpBrowse() based browser editable.
The example PRGs implement an editable XbpGetColumn class that uses
XbpGet objects for editing within an XbpBrowse object. The
XbpGetColumn class is derived from the XbpColumn class (Xbase++ at
its best). We recommend to study carefully:
..\SAMPLES\SOLUTION\XBPGET\GETCOL.PRG
..\SAMPLES\SOLUTION\XBPGET\EDITBROW.PRG
11. XbpColumn components are doc'ed
The "secret" of the XbpColumn class is lifted: the XbpCellGroup
class is documented and available for you. Note that we consider
the XbpCellGroup class as a class providing services to other
classes. XbpCellGroup objects are useful as components of other
objects, but are almost useless on their own. However, embedding
three XbpCellGroup objects in an XbpStatic object makes up something
like an XbpColumn object. Now you can build the browser class you
always wanted to have.
12. The Quick Browser is there
A new browser class is available for quick browsing of (huge)
databases. It is named (guess what?) XbpQuickBrowse() and follows
a completely different approach than the XbpBrowse class, because it
uses an object as its data source. It does not operate directly on a
data base, or work area, but requires the services of the
new DacPagedDataStore() class.
Once you become familiar with the XbpQuickBrowse class you will
notice the trade-off when your goal is speed: there is less comfort
in customizing the browser compared to the XbpBrowse class. The
reason is that only one XbpMultiCellGroup() object displays all
data to be browsed. This requires much less GUI resources compared
to the XbpBrowse class, where one XbpColumn object is used for each
browser column. Using only one object for all browser data is a
major factor for speed gain and loss of comfort.
We recommend to use XbpBrowse for a customized browser and
XbpQuickBrowse for fast browsing, as it is required in a look-up
table, for example.
13. Online Help
The online help is further enhanced with a window displaying
functions and commands by the group they belong to. This offers you
another possibility to search for a particular function. The new
window is opened via the "See also" button in the main help window.
14. XbpCrt:configure()
A change made in the :configure()-method of XbpCrt objects now
causes the text screen buffer to be preserved by the operation. This
may cause problems in applications that assume that the window is
cleared after :configure(). To clear an XbpCrt window, CLS can be
used.
15. XbpWindow:setFontCompoundName()
The return value of the :setFontCompoundName() method now reflects
the font actually set. This may introduce problems for applications
that make assumption about the return value of this function, such
as expecting it to always return the same string as was passed to
the function.
16. GRA_CLR_BROWN + SetColor( "GR" )
The color produced when specifying GRA_CLR_BROWN was incompatible
in that it did not match the appropriate color in the standard VGA
palette. Furthermore, the color wasn't present in the system palette
(not a standard system color) causing GRA_CLR_BROWN to be mapped to
some shade of red on systems using 256 colors. This pertains to both
applications that used GRA_COLOR_BROWN for GRA output as well as to
text or hybrid mode applications that specified the respective color
via the SetColor() function.
This was changed to conform to the standard VGA palette. However,
since the correct color is slightly different from the color used
previously, this may cause problems for applications that rely on
that specific color.
_________________________________
6. How to contact Alaska Software
Please use the following news group to send your feedback
about this release to us:
news://news.alaska-software.com/alaska-software.news.xbase++
Thank you and enjoy SL2!
Your Alaska Xbase++ Team