================================================= Clarion 5.5 'E' Release Changes and fixes ================================================= CONTENTS IDE Database Drivers Compilers / Linker / Debugger Runtime Libraries Templates Documenation & Help Utilities Known Issues To view just new features and enhancements see NewFeatures_5505.txt IDE ================================================= Application Generator ------------------------------------------------- FIXED: - GPFs would occur when choosing a procedure template from the Defaults tab which has no FROM statement in the #DEFAULT section - Now reports error if WINDOW or REPORT definition being imported from TXA is too long. - If Application template has no #PROGRAM section, GPF occurs on creating an application. - The AT attribute specified for INLINEd MULTI-prompts of FILE, FIELD and COMPONENT entry types causes displaying of the entry control with incorrect position and/or size. - Missed #ENDCASE statement caused a GPF at registration time - LINKNAME function returned incorrect result if procedure prototype has the NAME attribute - GPFs if error is encountered within #ATEND section - The QUOTE function erroneously doubles left angle (<) and curly ({) braces in strings like follows: '<13,10>' or 'A{10}' - Some lines in the debug log were too wide and not wrapped CHANGES: - FEATURE: Functions PATH, SHORTPATH and LONGPATH can be used in expressions evaluated by EVALUATE and in templates Screen Formatter ------------------------------------------------- FIXED: - Duplicated Ctrl+L accelerator - The Grid button is not synchronized with corresponding menu item (Snap To Grid) - Column toolbox state is not changing when activated by the button on the Command Toolbox - COLOR:Black set as a control text color in the control property dialog is processed incorrectly (as COLOR:None) CHANGES: - NEW FEATURE: Added support in the Listbox formatter for field numbers and per column/cell tooltips. Report Formatter ------------------------------------------------- FIXED: - Names of image files used in IMAGE controls were not being resolved via the redirection file by the formatter. - Column toolbox state was not changing when activated by the button on the Command Toolbox Property Inspectors (F12) ------------------------------------------------- FIXED: - Multi-selection using Ctrl-MouseLeft and Shift-MouseLeft was not working correctly DataBrowser ------------------------------------------------- FIXED: - The Data Browser did not determine the table name of the TPS file if it is declared in the dictionary with a variable filename - Resolved error reported on an attempt to convert files without Keys - Improved in-place data table conversion - GROUP fields were not considered when reporting number of fields in File Statistics - The Browser ignores fields of DECIMAL and PDECIMAL types in calculation of total record size - Improved support for browsing SQL tables - The TXD reader did not expect a fully-qualified name as a value of NAME() and OWNER() attributes or as a driver string. - Import of variables with custom type (TYPE) from TXD can work incorrectly - The Property Editor invoked by F12 displays values of "Require Unique Value" and "Case Sensitive" key attributes reversed to their actual value - EIP control in User Options list box is auto-accepted because of TIMER event for a window in another thread - User options of Boolean type can't be entered and were not saved - Potential memory leaks on reading TXD files. - Values of attributes that can contain multi-line text were putting to TXD file incorrectly during multi-file import - GPF in C55SRVX.EXE can occur at IDE closing time if Data Browser has been used CHANGES: - NEW FEATURE: User options of the integer type are added - NEW FEATURE: Values of user options of the string type extended up to 1024 characters Dictionary Editor ------------------------------------------------- FIXED: - Incorrect value of the OWNER attribute was written into a temporary TXD file during synchronization or multi-file import - GPF on attempt to import structure of the table for the driver if driver tracing is turned on. - Prefix of an imported table was calculating incorrectly if the table only contains MEMO fields. (no ordinal fields) - Miscellaneous memory leaks - Building of incorrect file structures if imported table had a prefix with an embedded colon character, e.g. ...,PRE(F:A),... - possible GPF after several consecutive multi-table imports from an SQL data source. Project system ------------------------------------------------- FIXED: - Project statistics now supports long names for source and object files - Long names of modules are written to the debug information. DATABASE DRIVERS ================================================= FIXED: - Some drivers GPF if parsing of Keys or Memos fails. - Regression: BUILD sets incorrect information about records in keys - Potential memory leak in xBase drivers. - SQL drivers potentially can step on the string stack. - Exit from the IDE after a synchronization with an SQL backend can cause GPF. - Drivers behave incorrectly if you ignore errorcode 47 returned from OPEN(File) - The loading of Oracle user-side DLL can fail in multi-dll applications and report the error: "Oracle not found" - Memory leak on building index expressions in xBase drivers - SQL drivers: NULL function can return TRUE value for DATE, TIME and timestamp fields after applying SETNONULL for that field, _if ZEROISNULL for the Table is set to TRUE. COMPILERS / LINKER / DEBUGGER ================================================= FIXED: INC File Reader ------------------------------------------------- - GPFs if there was a non-terminated string in one of INC files C++ compiler ------------------------------------------------- - Various potential memory corruptions CLW Compiler ------------------------------------------------- - The compiler accepted a non-terminated string - GPFs if source code uses file KEY labels incorrectly - The compiler forced DECIMAL type for integer literals if their values were more than 9 digits, even if they can be presented as LONGs. - Reported the wrong error on the DERIVED attribute of the class method if this method in the base class overloads another one with the same number of parameters. - Reported the wrong error if a queue field used as a value of the FROM attribute belongs to a nested GROUP field. - Did not report an error if name of named TYPE is passed as an actual parameter to the function call - The compiler generated initialization code for QUEUEs if they have the AUTO attribute, now functions as documented - A queue declared as Q1 QUEUE(Q) ... END can't be passed as an actual parameter if formal parameter has type Q and type Q is declared as based on some GROUP type i.e. as: Q QUEUE(GroupType),TYPE ... END - GPF on expressions like SIZE (File{PROP:Record}) - If previous line is split (i.e. is terminated with the pipe | character), the compiler would interpret the "conditional line" token (?) at the first column of the next line incorrectly. - GPFs if a KEY, MEMO or BLOB declaration has no label - If function had a parameter of the named QUEUE type and that queue has a field of &GROUP type, the compiler could generate the wrong error messages on calling that function. - Clarion functions with the C attribute in prototype were being compiled with pragma call (reg_saved) value set to (ax,bx,cx,dx,si,di,ds), but this pragma for external functions using the C calling convention is assumed equal to (si,di,ds). - The compiler produced incorrect code for handling returned results for functions with return type *? and with RAW attribute in the prototype. - In some cases the compiler would uppercase alpha characters following a single { or < not followed by a numeric value - Long names of modules are written to the debug information Linker ------------------------------------------------- FIXED: - The linker creates EXE/DLL regardless of link time errors (but sets number of sections to 0). Because of the stored timestamp, if no OBJ files have been changed, the next attempt at linking of this project did not produce error messages. CHANGED: - NEW FEATURE: Linker (32 bits) New statement is supported in EXP files: IMAGE_VERSION n[.m] Values of n and m set image major and minor version fields in PE optional header respectively. n and m must be decimal numbers. Default values for these fields are 0. 32 bit Debugger ------------------------------------------------- FIXED: - Global variables added to the Watch window are forced to inactive state (no value is displayed) CHANGES: - Added support for the mouse wheel in the Source, Disassembler and Display Memory windows, Implememnted as : -- wheel rotate: moves 3 lines up/down -- Ctrl+wheel rotate: invlokes a page up/down - Procedure List, Global Data, Stack Trace and Watch windows now use Windows list/tree built-in support of mouse wheel. RUNTIME LIBRARIES ================================================= FIXED: C Library ------------------------------------------------- - Functions strupr() and strlwr() can work incorrectly in 32 bits RTL ------------------------------------------------- - Calculation of prompt's default width changes its height also. - Scrolling of SPIN with FROM() based on a string can work incorrectly - HIDE/UNHIDE and DISABLE/ENABLE statements used for TAB control can produce wrong sheet image - KEYCODE() can return unexpected result - REGRESSION in C55C: PRESSKEY or playing ALIAS for Shift- can work incorrectly after PRESSKEY or playing ALIAS for keystrokes involving modifier keys. - Setting of PROPLIST:MouseXXXZone works incorrectly - Logic of setting PROP:Left and PROP:Right to check boxes and radio buttons is inversed - Scrolling of the mouse wheel corrupts image of the transparent TEXT controls - Listbox may not be redrawn after dragging right edge of a column - If program linking in the local mode uses OLE, the linker produces errors at link time. - The RTL handles binding between listbox's columns and queue's fields incorrectly for fields belonging to nested GROUPs - Changing PROPLIST:Icon, PROPLIST:Color, PROPLIST:Tree, and other properties which require a Queue field for storing of a value at run time for column other than the last column causes corruption of displayed information. - The print engine can use uninitialized variables in the conversion of widths and heights during printing of WMF images. - Pressing TAB key can cause GPF if window is scrollable and next control is out of visible area. - If an entry, spin or combo control without USE variable has been CLONEd at run time, closing of Window the control in on produces a GPF - Flat button can be not redrawn after closing a window invoked by pressing that button - Free format input into an entry field with pictures @D3, @D4 and @D8 can be treated incorrectly. - INSTRING can work incorrectly if searched string has length >255 characters - Destroying of the control placed in the "global" part of toolbar can cause GPF if there are merged copies of toolbar - Creating controls in the toolbar while frame's thread is active can cause misbehavior of their copies in other threads. - File related functions in C library (mkdir, chdir, etc.) do not check the code page in use by Windows for file names in 32 bit programs. - Behavior of tooltips after hiding because of timeout is incorrect for listboxes (the control is the same but row or column can become other). - If DESTROY() or CLOSE() are used for a file that is not OPEN, execution could fail CHANGES: - (32 bit) NEW FEATURE Added support for the mouse wheel to IMAGE and spin controls, listboxes and to windows. - Added support of SM_CXDRAG/SM_CYDRAG system metrics to avoid immediate switching to drag mode after pressing left mouse button. - (32 bit) NEW FEATURE: If control with focus is not scrollable, WM_MOUSEWHEEL message is forwarded to control under mouse pointer, if it supports this message. - (32 bit) NEW PROP:WheelScroll property is introduced for listbox/combobox controls to adjust sensitivity to mouse wheel scrolling. If program sets property to value less than 1, property is set to value 1. A Lower value of the property means more lines scrolled per wheel "click". Default value is 40 (3 rows per wheel "click" for standard mouse driver settings). This Property is read/write. - Work around: MS-Windows does not generate required WM_COMMAND message if window has default pushbutton and the Enter key is pressed when focus belongs to entry control with the SKIP attribute - NEW FEATURE: Functions PATH, SHORTPATH and LONGPATH can be used in expressions evaluated by EVALUATE and in templates - Work around: _lopen API function works incorrectly under NT4/W2000 in 16 bit programs if passed file name is not of 8.3 format - NEW FEATURE: PROPLIST:Tip is added to PROPERTY.CLW. This property corresponds to P modificator in the listbox format string. If it is set to TRUE, a queue field following a column's data field contains tooltip text for that data field. PROPLIST:DefaultTip is added to PROPERTY.CLW. This property corresponds to Q modificator in the listbox format string. A string following Q modificator is displayed as a tooltip if per-cell tooltip for current cell (see above) is empty or P modificator is not set. These properties are read/write and not available for reports. - Enhancement: Changing listbox properties PROPLIST:FieldNo, PROPLIST:Color, PROPLIST:Icon, PROPLIST:IconTrn, PROPLIST:Tree, PROPLIST:CellStyle and PROPLIST:Tip must force rebuilding of data fields numbers in the format string. - Workaround to Standard OS behavior: MDI client windows defined without a WS_MAXIMIZEBOX style and having toolbars with differing sizes from peer windows do not recalculate the correct client height when using Movewindow() or Setwindowpos(). TEMPLATES ================================================= FIXED: - Procedures declared in External Source or External OBJ modules are not placed into global or local MAP - ABBLDEXP.TPW forces upper case for application defined exported functions - IMPROVEMENT: Formatters can be invoked from the "Local Procedures" embed point - Incorrect text can be generated if an expression is used in the BrowseBox as a value for icon's name - The prompt strings declared as #PROMPT(, ),%Symbol have size 8192 characters now. - New 3 predefined symbols: %ControlHasTip, %ControlFieldHasTip and %ControlFieldDefaultTip have been added to support listbox column and per-cell tooltips. Legacy Templates ------------------------------------------------- FIXED: - C%V%LFNX.DLL is not listed as required DLL for 16 bit programs - Added support for Tooltips and Style to Browse Box control template Wizard Templates ------------------------------------------------- FIXED: - One of tabs of the Print Dictionary wizard is displaying corrupted ABC Templates ------------------------------------------------- FIXED: - The call to Kill method for StepManager is not generating in Report and Process procedures - Code for enabling/disabling of controls at window opening time as set for check boxes controls is not being generated. - Passing a type as an actual parameter to function call in ABAPI.CLW - Memory leaks in TextWindowClass (ABEIP.CLW) - Memory leaks in the Report Previewer if the program is closed before closing the previewer window. - Support of list box tooltips in the BrowseBox, FileDrop and FileDropCombo control templates. DOCUMENTATION & HELP ================================================= - Please refer to the included document on the new Tooltip features for listboxes UTILITIES ================================================= FIXED: TopScan ------------------------------------------------- - Possible GPF if TPS file name is not of 8.3 format - Reports incorrect size of file record - Builds default header for fields nested in GROUPs incorrectly - If browsed table has multiple dimensioned fields with different number of items and "Lock all" option is turned on, TopScan GPFs after exceeding index for any array. - Possible values for the "Record Number" locator are limited to 0 .. 65535 range - GPF on attempt to import structure of the table for the driver the tracing is turned on for. TopCopy ------------------------------------------------- - GPF on attempt to import structure of the table for the driver the tracing is turned on for. KNOWN ISSUES ================================================= - Pressing a keystroke which is the alias to other keystroke which opens some popup (sub)menu can cause "sticking" of one of modifier keys: ALT, CTRL or SHIFT. Reason: Popup menu is modal and it processes all presses/releases of keys internally without notifying the program. - If 16 bit program runs under W98 (W9x ?) and its path name contains non-ANSI characters, it can cause appearing of the internal WSLDIAL:02 error on opening a window. Reason: FindResource API function fails for correct parameters under these conditions. - If 16 bit program runs under NT4/W2000 and its path name contains non-ANSI characters, call to MESSAGE to display a message (or even to MessageBox API function), current process directory can be changed to Windows directory. Therefore further opertions with relative paths can fail. Reason: Suspected behavior of DefDlgProc