FILEFLEX PROGRAMMER MANUAL


APPENDIX C
FileFlex Historical Release Note Archive

FileFlex has had a tradition of always publishing the release notes for all versions of the product back to release 1.5. Many of our older releases are also still available on our FTP server or web server.

FileFlex 2.0.5 Release Notes

This version introduces a new set of functions to get around the ongoing Windows 3.1 problems of accessing files on CD-ROMs. After months of development and testing, we determined that Windows returns the read-only status of CD-ROMs in an inconsistent manner. To get around this, we added two new functions: DBUseReadOnly and DBUseIndexReadOnly

FileFlex 2.0.3 Release Notes

FileFlex 2.0.3 represents a complete rewrite of the DBQuery and numerics engines. As many FileFlex users are aware, the DBQuery engine is one of the most complex components of the overall FileFlex product. It was also one of the older portions, dating back to the original acquisition.

Rewriting the DBQuery engine representing a major effort. Because the DBQuery engine code was so old and "crusty", making even minor changes to the engine to fix some existing bug was virtually impossible. A complete rewrite was necessary to bring it up to current technology, to better integrate it with the modern FileFlex internal environment, and to make it possible to maintain.

That's what's been done in FileFlex 2.0.3. The result is pretty spectacular. Queries are now a bit more than twice as fast for most expressions (and highly complex expressions parse at almost seven times the speed of versions prior to version 2.0.3).

We've also completely rewritten the numerics engine inside FileFlex. For quite some time, certain users have been plagued by incorrect search results using numeric operations. This has been resolved by replacing the old numerics system with a much more modern (and considerably more portable) numerics engine. This will definitely benefit many DBQuery numeric operations and may help certain DBSeek and DBCreateIndex operations as well.

For those curious about compiler versions, FileFlex 2.0.3 was built on the Mac using CW10, under the 32-bit Windows environments using Visual C++ 4.x, and under Windows 3.1 using the always thrilling Visual C++ 1.5.

Finally, this release inaugurates a new feature that isn't part of your distribution: the automated build system. After all the coding is done, it takes us 96 different steps and 30 separate compiles to create FileFlex distributions and make them available for download. This process, which is highly error-prone and unbearably tedious has often taken something more than a week to complete for each revision. Not any more! We now have a very powerful automated build system consisting of some really slick AppleScript scripts on the Mac side and a wonderfully eclectic combination of batch files and custom C programs on the Windows side that reduces a substantial amount of the effort.

Rather than taking over a week, the new automated build system runs in about 3 hours. Add to that a few hours to write release notes and make a updates to the web pages, and a new release can take under a day to provide to users, rather than more than a week.

FileFlex 2.0.2 Release Notes

Along with the transition to 32-bit environments, FileFlex 2.0 introduced a number of serious bugs. I've been working for the past few months finding, catching, and killing most of those that have been reported. The result of this effort is FileFlex 2.0.2. If you've been experiencing problems (in particular with memo fields, indexes, or files on CD-ROMs), please use this updated release.

FileFlex 2.0.2 fixes the following bugs:

This version of FileFlex also contains translation and conversion routines for customers worldwide using FileFlex' new WorldFlex technology. This release does not and will not include the previously promised Director 4 DLL version of the FileFlex engine. It proved to be too time consuming and difficult to back-rev the FF2.0 engine to work in an XObject environment.

FileFlex 2.0.1 Release Notes

FileFlex 2.0.1 was released exclusively through Macromedia's international Director 5 product. Features in 2.0.1 have been carried over into later FileFlex releases.

FileFlex is used within multimedia productions throughout the world. While standard ASCII is prevalent, it is certainly not ubiquitous. When dealing with international languages, it's necessary to account for differences in character sorting order, for differences in case conversion, for differences in character values, and for double-byte characters.

FileFlex new WorldFlex technology now gives you the ability to build international flexibility into your applications with unprecedented power. FileFlex' WorldFlex technology gives you true dynamic localization. Unlike virtually all other so-called "world-aware" implementations, you're not forced to rely on a particular operating system revision or a country-nationalized version of an application.

FileFlex allows you to define your own international conversion tables and apply them on-the-fly to any data management task. This dynamic localization functionality allows you to switch languages, character sets, sort orders, and conversions at any time throughout the operation of your multimedia production instantly, with virtually no impact upon FileFlex' already blazing performance.

FileFlex WorldFlex' technology falls into these three broad categories:

Dynamic Character-Level Sort Order

FileFlex allows you to use indexes and queries that dynamically switch between sort-order tables. Finally, an accented "a" character is treated like a regular "a", rather than something from Mars. Sort orders can be specified for either single-byte or double-byte languages.

Character Translation

As many FileFlex users have discovered, the special diacritical characters have different values between Macintosh and Windows, and even between DOS and Windows. FileFlex allows you to convert characters so that all the diacritical marks (and any other conversions you may need) are all in the right places and your characters look just right.

Case Conversion

Normal case conversion routines apply a simple heuristic to determine the upper case value of a character. Converting an "a" to an "A" is simply the matter of subtracting 32. But what about converting a "u" with an umlaut to an upper case value? What about converting vowels with accents to their equivalent upper case characters? FileFlex provides two standalone functions that allow you to use custom case conversion tables so that your case conversions make sense in your language. FileFlex internal intrinsic index and query functions also take into account custom case conversion tables so your data can be case insensitive when desired (as opposed to case insane).

FileFlex 2.0 Release Notes

The features and functions in FileFlex 2.0 are the result of fabulous support from the engineering team at Macromedia. With Director 5, Macromedia has substantially improved the way Director supports add-in products. Since the very earliest glimmer of the new architecture, called Macromedia Open Archictecture (MOA), we've been working with Macromedia to tightly integrate FileFlex with that new architecture. FileFlex Lite Licensed by Macromedia for Director 5

FileFlex has been licensed by Macromedia for inclusion in Director 5. Everyone who gets a copy of Director 5 will also find a special version of FileFlex on the disk. We've built a special version of FileFlex, called FileFlex Lite, for Director customers. The FileFlex Lite edition includes all the capabilities of the full, professional edition of FileFlex, except that it will only access up to the first 1,000 records of the database. FileFlex Lite users, of course, can always upgrade to the full professional edition.

Native 32-bit Versions for PowerMac, Windows 95, and Windows NT

FileFlex has been redesigned to be 32-bit native for the PowerPC processor, Windows 95, and Windows NT. Because FileFlex makes use of 32-bit architecture enhancements of the host environment, the 32-bit versions of the FileFlex engine are available only as Director 5 Xtras. Massive Performance Improvements

The performance increase between the 16-bit version under Windows 3.1 and the 32-bit version under Windows 95 is nothing short of incredible. FileFlex has always been engineered first and foremost for speed. But by rebuilding FileFlex to run natively under high-performance environments, FileFlex is now even faster. Very Tight Integration with Director 5

Because of the support we received from Macromedia, we've been able to very tightly integrate FileFlex into Director 5. FileFlex for Director 5 is now implemented as an Xtra. To use FileFlex, all you need to do is drop it into the Xtras folder and the list of Lingo commands is expanded to include all of FileFlex' database functions. FileFlex, especially in the "G" operator of DBGetCurrRecVal now has much better awareness of Director's native data types.

FileFlex Tool Xtras

FileFlex now includes a number of utility programs that make using the product easier. Each of these utility programs (in particular the Database Designer and Verification Suite) are available at authoring time from within Director. FileFlex adds a number of Tool Xtras available from Director's Xtras menu that launch these various utilities.

FileFlex Database Designer

The FileFlex Database Designer makes it much easier to create databases and index files, as well as browse existing database files. A simple drag-and-drop interface is all it takes to create new databases and index files.

FileFlex Verification Suite

FileFlex now includes the FileFlex Verification Test Suite. This set of tests exercises the FileFlex engine and confirms that everything works properly. It was essential during development of FileFlex and is available to you to verify FileFlex has been installed properly and for your exploration of FileFlex functionality.

All New Documentation in HTML Format

We're happy to say that we get very few complaints about FileFlex. However, the one negative we've consistently gotten was for our documentation, which was somewhat patched together from various versions. With FileFlex 2.0, that all changes. The FileFlex do cumentation has been totally rewritten from the ground up, into more than 23 chapters of detailed information, tips, and reference material. The new documentation is supplied in HTML format, so it is interactive and hypertext-browsable from your favorite web browser (we recommend Netscape Navigator).

The entire new FileFlex manual is also on our website at www.component-net.com and is fully web browsable. We believe we are one of the very first companies to publicly post our complete documentation for web browsing. An important note: The very latest version of the documentation (reflecting any changes we make based on user feedback) will always be available for browsing at www.component-net.com and for downloading.

Finally, for those people who don't have access to a web browser (why???), we've included a version of the manual readable in Microsoft Word. You can also purchase a printed copy of the manual directly from Component Software for a nominal fee.

New Indexing Functions

FileFlex 2.0 adds a number of new indexing functions. These include DBIndexExpr (returns the index expression used to create an index file), DBListIndexFields (returns a delimited list of fields indexed by a given index file), and DBBuildSeekExpr (returns a properly formatted seek string, ideal for complex or multi-field index searches).

More New FileFlex Functions

FileFlex 2.0 also adds DBDatabaseExists (determines if a database file exists where you expect it) and DBMaxRecs (returns the maximum number of records your database can access). In addition to these functions, FileFlex 2.0 adds the DBGetGlobal and DBSetGlobal functions, designed primarily for internal FileFlex performance testing.

Renamed DBQuery Function

There has often been confusion between the various search functions in FileFlex. In particular, there was confusion between DBLocate and DBSeek, both of which seemed to imply finding something. It turns out DBSeek is properly named because it does a "seek" (a commonly used and very precise computer science term), directly locating data in an indexed database. But DBLocate is really the query interface to the database. Since that's the case, we've renamed DBLocate to DBQuery in FileFlex 2.0. If you have an existing database using DBLocate, we've still provided the wrapper scripts, but they'll go away in the next release in favor of just DBQuery.

Compiler Versions

FileFlex 2.0 has been created using CodeWarrior 7 on the Macintosh and Visual C++ 1.5 for Windows 3.1 and Visual C++ 2.0 for Windows 95 and Windows NT.

FileFlex 1.7.1 to 1.7.4 Fix Notes

FileFlex v1.7.4 incorporates bug fixes for both Macintosh and Windows versions of software and applies to the SDK, Runtime, and Demonstration variants of the product.

FileFlex 1.7.4 Bug Fix Notes

FileFlex 1.7.4 fixes two small problems:

FileFlex 1.7.3 Bug Fix Notes

FileFlex 1.7.3 was released as the 1.7.3b6 release of FileFlex for Macintosh and Windows. The beta release will expire in 30 days and contains only the DLL (Windows) and the XFCN (Macintosh), rather than the full product file set. The problems fixed in 1.7.3b6 have been incorporated into FileFlex 1.7.4 and above.

Details about Macintosh File Sharing resolution

I fixed a bug in the Mac version where DBUse returned a -120 (e.g., can't open file error) when file sharing was turned on and the file was locked. I changed the behavior so that now FileFlex first attempts to open the file as read/write. If any open attempt fails, it attempts to open the file in exclusive read/only mode.

Details about Windows File Access resolution

I fixed a bug in the Windows version (but also reflected back into Mac version) that generated -400 (file lock) errors when DBUse attempted to open files. Users were able to work around the lock error using SHARE.EXE, but it meant that they'd need to install SHARE. This problem was found mostly on networked Windows machines. There was also a problem with users accessing files on locked volumes. I fixed this problem by attempting to open the file first as read/write, then as read-only.

This was a very difficult bug to reproduce. Readers of fileflex-talk will recall some message traffic about both the -400 error and the locked volume error, but because this only occurred on certain configurations (mostly networks), it proved difficult to test and debug.

Note: DBCloseAll() may error out on locked files. When working on locked volumes, be sure to DBClose each individual file.

FileFlex 1.7.2 Bug Fix Notes

FileFlex for Macintosh v1.7 has a moderately serious bug. This note details the bug and describes v1.7.2, the bug fix release. Windows users will not experience this problem.

Multiple Open Database Bug Details

In FileFlex for Macintosh v1.7, customers reported problems accessing multiple open data files. Here's what's going on:

It is important to note that this bug does not damage the data files in any way. It just simply returns data from the wrong file buffer.

Bug Fix v1.7.2 Details

FileFlex for Macintosh v1.7.2 fixes this bug. The internal routine correctly computes the proper buffer offset, and correctly returns the width and contents of records, regardless of which data file is being accessed.

This bug does not impact Windows users. There is no other difference between v1.7 and v1.7.2 other than this bug fix. FileFlex 1.7.1 Bug Fix Notes

FileFlex for Windows v1.7 has a moderately serious bug. This note details the bug and describes v1.7.1, the bug fix release. Macintosh users will not experience this problem.

DBCount() Bug Details

In FileFlex for Windows v1.7, customers reported a problem getting accurate results from the DBCount call for databases with more than 32,000 records. Here's what's going on:

It is important to note that this bug does not damage the data files in any way. It just simply returns the count value incorrectly.

Bug Fix v1.7.1 Details

FileFlex for Windows v1.7.1 fixes this bug. The internal routine correctly receives the 32-bit count value, keeps it as an unsigned 32-bit count value when passing to the string conversion routine, and correctly returns the number of records in the database, regardless of the number of records.

This bug does not impact Macintosh users. There is no other difference between v1.7 and v1.7.1 other than this bug fix.

FileFlex 1.7 Release Notes

The features in FileFlex 1.7 are the direct result of ongoing discussions with FileFlex users. This is a great example of the value of two-way communication between software designers and users. Thanks for all the feedback!

Cross-Platform Product, New Windows Product!

FileFlex is now a cross-platform product. As in earlier releases, FileFlex on the Macintosh is implemented as an XFCN that operates in Director, HyperCard, SuperCard, Authorware, and more. The big change is that FileFlex has now also been implemented under Windows as a DLL for Windows 3.1.

Note: FileFlex for Windows v1.7 only runs under Director for Windows. Future versions of FileFlex will add support for additional development tools.

Common API

A major design criteria for the cross-platform FileFlex was transparent conversion between platforms. Users developing in either Director for Macintosh or Director for Windows and using the FileFlex API will be able to move their movies to the other platform without having to rewrite any of the FileFlex Lingo code (with the exception of file directory path specifications).

Common File Format

A related design requirement was common database files across platforms. This is especially important for hybrid CD-ROM developers who want to only have one set of database files usable by either Macintosh or Windows binaries. FileFlex DBF data files require absolutely no modification or conversion and can be read, created, and updated by both FileFlex for Windows and FileFlex for Macintosh.

Massive Architectural Improvements

To support multiple platforms, FileFlex has been heavily rearchitected, resulting in faster, more reliable performance and greater ease in porting to additional environments.

New Compiler Versions

FileFlex for Macintosh has been ported from Think C 7.0.3 to Metrowerks CodeWarrior6, providing substantial performance and reliability improvements. FileFlex for Windows has been implemented in Visual C++ 1.5 under Windows 3.1.

New Cross-Platform Functions

FileFlex 1.7 adds new cross-platform support functions. DBInitPlatform and DBClosePlatform provide a common source code initialization environment across platforms. DBPlatform returns a string describing the platform currently running. DBConvertCRLF provides text conversion support for those special instances where the line-termination needs to be customized for either Macintosh or Windows.

12-15% Overall Improvement in Speed

FileFlex, overall, is 12-15% faster across all function calls. Your scripts that make repeated, looped calls to FileFlex will see a substantial speed boost.

Better Support for Director Users

FileFlex 1.7 now provides better support for Director users. New features include a full set of descriptive FileFlex DBxxx wrapper scripts (so you no longer need to remember the direct FileFlex function code!), a Director-based FileFlex Test Bench, and a VIDEO.DIR tutorial created by a generous FileFlex customer.

Single Code Resource Module

In prior FileFlex releases (on the Macintosh), the FileFlex engine was actually delivered as a set of six code resources: an XFCN and five CODE resources. There were two major disadvantages to this. The first was that the resources were often installed incorrectly, causing nasty problems. The second was that each call to FileFlex resulted in the loading and unloading of six resources. FileFlex 1.7 resolves this under both Macintosh and Windows. FileFlex 1.7 implements the database engine as a single resource (an XFCN on Macintosh and a DLL on Windows). This provides increased reliability and performance improvements because FileFlex 1.7 now loads 1/6 of the number of resources it did previously. Updated Online Guide

We're keeping with plan and updating the online guide to reflect new features, answers to commonly asked questions, and new things we've learned about using FileFlex. Plus, this version adds completely new chapters. Be sure to scan the new guide carefully for information you need!

Fixed Bugs

Fixed numerous minor bugs and a rather nasty one where retrieving data from a database with the direct global option didn't deallocate a handle and thereby caused a creeping memory leak.

FileFlex 1.6 Release Notes

The features in FileFlex 1.6 are the direct result of online discussions with FileFlex users. This is a great example of the value of two-way communication between software manufacturers and users. Thanks for all the feedback!

Compiler Version

FileFlex has been ported from Think C 6.0.1 to Think C 7.0.3. This was not nearly the porting effort required to move from FileFlex 1.3.7 (written with Think C 4.0) to FileFlex 1.5 (written in Think C 6.0.1). Even so, you should know that we're very carefully watching the action in the compiler business and are considering moving to Metrowerks for future versions. Note: We've done more PowerMac testing and while FileFlex 1.6 is still not available in native mode, we've seen very good performance in emulation.

Direct Global Variable to Database Interface

FileFlex 1.6 adds a new "G" parameter to DBGetCurrRecVal and DBWriteRec. Rather than writing to/from card or background fields, FileFlex can now directly read from and write to global variables of corresponding names. This is great for both HyperCard users and other developers (especially those using WindowScript and Director).

Text Search and Retrieval from Memo Fields

FileFlex 1.6 now provides a DBFindMemo function that searches through memo fields for matching strings. For maximum speed, searching is done in physical record order.

Dynamic, On-the-Fly Encryption

FileFlex 1.6 now provides you with a whole host of ragingly fast integrated encryption capabilties. The idea behind dynamic encryption is that the data is plain-text in HyperCard (or whatever) but en-route to or from a FileFlex data file the data is encrypted and decrypted. The core encryption technology is far from "spook-proof". Encryption will prevent casual users from gaining access to data, but won't stop determined hackers from cracking the code. Because of this, FileFlex isn't subject to export restrictions. The commands DBGetMemo, DBWriteMemo, DBGetFieldByName, DBGetFieldByNum, DBGetCurrRecVal, and DBWriteRec all have new "E" (for Encrypt) or "D" (for Decrypt) optional parameters.

Standalone Encryption Functions

The FileFlex 1.6 engine now also provides standalone DBEncrypt and DBDecrypt functions that allow you encrypt any data whether or not you choose to store it in the database.

Path Specification Option added to DBUse, DBUseIndex

This feature is particularly important to runtime licensees who expect to install FileFlex data files on new volumes (for example, off a CD-ROM and onto a hard disk). In version 1.5, the runtime FileFlex decrypted the sole parameter provided by DBUse and DBUseIndex and used that decrypted string as the file and path specification to be opened. FileFlex 1.6 adds a new "pathSpec" parameter that can be provided in plain-text, allowing your program to customize the path on-the-fly during operation or installation. The runtime engine would then append the decrypted root database file name to the the end of the plain-text path and open the file. Outside of the runtime version, FileFlex simply appends the database file name to the path spec and opens the file...this is good for testing and for some clarity of design architecture. Note: We have stopped shipping 1.5 runtimes. If you expect to license a FileFlex runtime, make sure you've upgraded and tested with FileFlex 1.6.

Updated Online Guide

We're keeping with plan and updating the online guide to reflect new features, answers to commonly asked questions, and new things we've learned about using FileFlex. Plus, this version adds two completely new chapters: the FileFlex Encryption Reference and a complete list of FileFlex result codes! Be sure to scan the new guide carefully for information you need!

FileFlex 1.5 Release Notes

Welcome to FileFlex 1.5! This release has been a long time coming and are very, very grateful for the patience, support, and understanding of our customers and beta testers. There have been a lot of changes in FileFlex between version 1.3.7 (the last release) and version 1.5, not the least of which are the developers. My name is David Gewirtz and I am now the owner and developer of FileFlex. I purchased the full rights to the FileFlex product from GUI, Inc. and for the past six months have been developing the version you now have in your hands. I hope you like it. There'll be even more to come over the next months and years.

New Architecture

FileFlex has been substantially rewritten. It has been ported from Think C 4.0 to Think C 6.0.1. Floating point has been completely redesigned. FileFlex now supports Apple's SANE numerics package, which should make it work nicely on Macintosh models both with and without an FPU, as well as in emulation mode on the Power Macs. Note: We do intend to do a Power Mac version of FileFlex sometime in the future, but we are dependent on the compiler writers to deliver a stable compiler before we can begin. In any case, since FileFlex is disk intensive, not calculation intensive, you should see reasonable performance in emulation.

The Dreaded '040 Virtual Memory Requirement Is Gone

Yes, Virginia, you can now turn off Virtual Memory. Redesigning FileFlex so it no longer requires you to turn on VM when running on '040 machines has been the principle design goal of this release. You can now happily run FileFlex on Quadra's, Centri's, and '040 accellerators in any memory mode you prefer.

10% Overall Improvement in Speed

FileFlex, overall, is about 10% faster. Index files are checked faster, calculations (particular floating point-related) are faster, DBLocate is faster, and context switching is faster.

Works in Any Application that Supports XCMDs

FileFlex 1.5 and above, using the Direct XFCN Interface, will now work in any application or development tool that supports XCMDs. This means that users of tools like Director, Authorware, and others now have a method of managing data with their multimedia productions.

Native FoxPro Compatibility

FileFlex can directly exchange its files with FoxPro without any conversion required. If you follow the guidelines in this Online Guide, FileFlex and FoxPro can easily and instantly exchange files in both directions.

New FileFlex XFCN Naming Method

For historical reasons, the actual XFCN used to do all the database management has been called XDashboardDB. Since we are now supporting direct access to the XFCN, it makes sense to name it more appropriately. The new FileFlex 1.5 XFCN (and all the associated wrapper code) is called "FileFlex". To make sure this doesn't cause all sorts of problems when you first install this upgrade, we've also included an identical version of FileFlex 1.5 with the XFCN named "XDashboardDB". This can be found in the "XDashboardDB Version" folder on your distribution disk. Note: XDashboardDB naming will no longer be supported after this release or in runtime licensing, so get used to using the FileFlex named wrappers and XFCN. XDashboardDB is no longer provided in FileFlex 1.6 a nd above!

New Direct XFCN Interface

While a few adventurous souls have always been able to call the FileFlex XFCN's directly, it was never supported or documented. With FileFlex 15's use in non-HyperTalk environments, it becomes necessary to support directly calling the XFCN. The Direct XFCN Interface is fully documented (including design considerations and function numbers), in this Online Guide.

New 66 Page Online Guide to FileFlex

We've been listening to customer requests for improved documentation. While time considerations didn't permit us to create a new manual set for this release, we are including an all-new 66 page Online Guide to FileFlex, containing all sorts of useful information. This Online Guide is fully searchable and printable.

Improved Runtime Licensing

Prior to Version 1.5, licensing of FileFlex was a hassle. There was no guarantee that people using FileFlex resources embedded in developers' products wouldn't pull the XFCN and use it on their own. As a result, licensing was costly and restricted. With FileFlex 1.5, that has all changed. You can purchase a license to distribute FileFlex to your users for a nominal fee: $100 per product title you're distributing. This fee is the same whether you're distributing it internally, for profit in a consumer product, as a shareware product, or even giving it away. When you are granted a distribution license, you'll get a special runtime version of FileFlex that gives you all the capabilities you need, yet prevents users from extracting and re-using the FileFlex resources.


Copyright © 1992-1998 by David Gewirtz, under license to Component Enterprises, Inc.
Contact: info@component-net.com

Casa de Bender