2. FileFlex Release Notes
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 documentation 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:
- Fixed bug in Mac and Windows versions where DBSum() didn't calculate
the sum correctly. Modified the code to use long doubles, accounting for
the possibility of rather large expressions.
- Modified KeyMaker to check for first 3 characters of version, so that
incremental upgrades can still work with the KeyMaker.
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:
- The DBSelect() function is used to set an internal FileFlex variable
that determines the database that's currently active. In FileFlex 1.7, DBSelect()
correctly sets the variable.
- Various internal FileFlex functions access record data based on internal
buffers. To determine which buffer to read, and the appropriate offset into
the buffer, they perform a mathematical operation based on the current database
variable and other factors.
- This mathematical operation worked correctly when the current database
variable was zero (indicating the first open database). As a result, when
you open a single database and access it's data, everything works fine.
- However, the math operation did not work correctly when computing the
offset into subsequent buffers. As a result, when you attempted to read
data from a second or subsequent data file, you recieved the field width
information and field contents information from the first data file. Clearly,
this was not proper behavior.
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:
- Calling DBCount() on a large database (say, 100,000 records) generates
an internal function call.
- The internal FileFlex function correctly accesses the database and correctly
returns a 32-bit data value containing the proper number of records (in
this example, 100,000).
- The number of records, stored in a unsigned 32-bit integer needs to
be converted to string data for the scripting language.
- The string conversion routine erroneously treats the count integer as
a 16-bit value instead of a 32-bit value. It therefore chops off any bits
of the count value over 16-bits, sends that to the string conversion routine,
and returns that to the calling scripting language.
- If the number of records in a database is less than 32,767, then the
count value fits into the 16-bit value and the DBCount() is returned correctly.
If the number of records is greater, the result from DBCount() is unpredictable.
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 and 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.
[Previous Chapter] [Table of Contents] [Next Chapter]
Copyright (c) 1996 David Gewirtz under license to Component Software Corp.
All rights reserved worldwide.