Thursday keynote

Bob and Diego had the first session each day of the conference. On Thursday they expanded on some of the points mentioned in the Wednesday keynote. 

Internationalization

This requires some changes to the file system. There's a new LOCALE attribute with one or two parameters: locale ID and optionally the codepage. 

The OEM attribute will be deprecated. The only ISAM file that will have this support at first is TPS but possibly DAT later. For TPS files the new information will be stored in the header.

To support all of this there's new work that's been done to BStrings. These are the best choice for unicode strings (until SV introduces UStrings...). 

You can use BStrings for variables, fields and parameters. Conversion between BStrings and Strings is automatic. No API call is required.

64 bit support

It's a long path to full 64 bit support, but 9.1 will add support for 64 bit signed and unsigned integers. The structure, following Intel's spec, is:

Int64   group,type
lo 	ulong
hi	ulong
	end
UInt64   group,type
lo 	ulong
hi	ulong
	end

There will be a new set of ~20 functions to manipulate these integers. These include math functions, bit shifting, sign change, etc. The INC file is self-documented so you get descriptions along with code completion. 

MDI changes

Bob talked a bit about all of the MDI threading issues SV has had to deal with because of a problem in the Windows kernel, which Microsoft decided was too dangerous to fix. 

He predicted the end of MDI woes - freedom from the elaborate sync code - thanks to a new window handling approach. All windows have a client area and a non-client area. The non-client area is the title, tool bar(s), status bar and any scroll bars. The client area is the area inside the non-client area that displays the window's controls. 

The non-client area will run on the app frame thread; the client area runs on the thread you Start() and is "glued" into the non-client area. 

The end result is better responsiveness and the end of MDI bugs. Also there's the intriguing possibility of assembling windows out of components you create in Clarion, e.g. a browse you can use on multiple windows (there are some non-trivial issues re event handling however). 

Reports

EMF support for reports! But you'll still be able to output to WMF if you want to. There's lots of technical information in Bob's PDF. 

Diego talked about some of the upcoming functionality. Changes in the new report output; new .NET connection; email, preview in PDF; browse direct export; built in apps communication. 

There have been significant changes to the report classes, with a new interface refactoring to make it easier to add future functionality. 

SourceClass template

The SourceClass procedure is a template to create a class in an app. The .clw and .inc are generated. based on the name of the class. There are prompts for private class data (declared in the CLW) as well as a window formatter button (again for the CLW as you can't declare a window inside a class). 

There was a lot of interest in this template, and a push from some of the participants (me included) to ensure that any class created this way is exportable and usable in other apps. As shown any classes created with the template are only usable within this app, whereas some developers see this as a way to put a class library in an app and use it elsewhere.