WebHub Release Notes for v2.014, v2.015, v2.016 and v2.017
This file was last updated 27-May-2003 21:28 California time.
When upgrading the components, please backup, then delete the contents
of lib\*.* before installing files into the same directory (assuming that you
like to install into the same directory). This is especially important if you are upgrading from
a version which marked any of the WebHub files readonly, because they may not be overwritten
Please also review Tools|Environment Options|Library "Library Path"
inside Delphi after installing,
to make sure that it does not include any paths containing older versions of the components.
A number of units have recently been REMOVED from WebHub.
See the Summary of free units on this page. There is a very small chance that you are using one
of these units in your custom work. If you are, please download the source and save it with
your custom files for your future use.
Changes to WebHub Components
- TWebOutput.HttpColon v2.014
The default for this property is, and has been, False. A change was made in the shared
standard unit, dmWebHub.dfm, such that the property value stays false. It had been overridden
to "True" which is incompatible with the latest versions of Microsoft IE. For
details on the incompatibilities, search support.href.com for "httpcolon" and read messages
starting in Sept 2002.
- TWebHttp supports file uploading v2.015
The TWebHttp component now supports file uploading through the "POST" protocol
so that you can transmit files from your Delphi applications to any web application.
TWebHttp remains optimized for posts that do not include files.
- multiple non-mixed uploads, regardless whether they are binary or text
So 4 .bmp *or* 2 .txt
Strangely enough it does support uploading a .txt and a .abc (where abc is a non binary file type)
It does *not* support
- mixed file uploads, the upload of x binary files and y textfiles (where x is greater than 0 and y is greater than 0)
So a .bmp *and* a .txt in the same stream.
The workaround is to execute tWebHttp twice, once with with the binary file, then with all the text files.
Thanks to Ronan van Riet for the enhancement.
- TWebHttp.Connect syntax corrected v2.015
Related: In TWebHTTP.Connect, changed two spaces to one space for prefix before non-blank protocol, e.g. before HTTP/1.1 based on reference http://www.w3.org/Protocols/rfc2616/rfc2616-sec5.html#sec5.1.2
- As-Service code updated v2.016
The SvcApp.pas unit has been fixed so that the termination code only executes once.
This fixes a series of access violations upon stopping a service which uses TClientDataSet.
The as-service units are included in the "plus pack" of source code.
- Registry use is ReadOnly where possible v2.014
Added WebHubGetRegistryStringReadOnly to whRegisR.pas and changed webbase.pas,
webinfou.pas and the hub registration form to use that wherever possible.
This means that applications compiled with
WebHub components will not attempt to write to the registry.
- # in WebHub Command v2.014
Bug fix in whBroInf.pas re # in WebHub command as used by Netscape browsers
other than version 3.x.
- Added control over redirection ("bouncing") v2.014
The following methods are new on the TWebOutput component:
const StatusCode: ShortString; const Reason: ShortString;
const Body: String);
SendRedirection301(const TargetURL: String);
SendRedirection302(const TargetURL: String);
SendRedirection303(const TargetURL: String);
SendRedirection307(const TargetURL: String);
The SendBounceTo method now calls SendRedirection302.
The BOUNCE macro nows calls SendRedirection302.
TargetURL is expanded within SendRedirection (v2.015).
- cMaxMacroDepth changed from 20 to 40 v2.015
In websend.pas, the constant which indicates endless recursion has been extended
from 20 levels to 40 to allow for reported real-world use of PARAMS macro.
Set cMaxAborts to 40 as well. v2.016
- TWebServer.cgiAddress v2.014
In webserv unit: Changed GetCgiAddress so that if the web server software includes
the port within the server name (as Sambar does at least in some cases), the WebHub
cgiAddress property will not include the port twice (e.g. localhost:8000:8000) as that
definitely does not work.
- TtpSharedLongInt and WebHub Shared Panel fixed v2.015
TtpSharedLongint and the standard whShared.pas panel are now working as designed and
enable a developer to trigger refresh across all instances. Many small changes were required
and they are documented here for reference by developers using TEvent or TtpSharedLongint explicitly.
- simplified the logic, primarily by removing the idea that the trigger
would be embedded within the event that was being triggered (i.e. in the
past, the pWebApp.Refresh code triggered the setting of command 3 which
in turn triggered pWebApp.Refresh).
- Removed references to code in whShared
- Removed references to code in whShared
- in TtpSleeperThread.Create, set ManualReset to True for fEvent
- added fLocalValue to implement TtpSharedLongInt.IgnoreOwnChanges; note
that it defaults to MaxLongInt and that MaxLongInt is the only value which
you should never set GlobalValue to.
- renamed thread's private copy of "ignoreownchanges" to fIgnoreOwnThreadChanges
to differentiate it from TtpSharedLongInt's copy but did not rename published
property to avoid changing the interface
- fIgnore is no longer used in TtpSleeperThread.Signal or TtpSleeperThread.Execute or elsewhere
- TtpSleeperThread.IgnoreOwnChanges is no longer used in TtpSleeperThread.Signal or elsewhere
- Added checks for nil and recursion in TtpSharedLongint.CloseSharedMemory
- Removed 1998 comments about CreateNamed
- Made TtpSharedLongint.SetValue set the value even if it is the same as the
- Removed 1998 comments about CreateNamed
- Changed TEvent.CreateHandle to try an 'open' before a 'create'
- Removed IFNDEF VER130 and assignment of SEMAPHORE_ALL_ACCESS
- Added TWebOutput.SendWideString method v2.016
- Support for Chinese, etc. in INPUT macros v2.016
In htwebapp.pas, all calls to AdjustMacros, which in turn calls EncodeHTML, now
use constant hcNone instead of hcNames. This enables a site visitor to paste non-English characters (including Chinese and Japanese) into fields on forms created by the W-HTML INPUT macros.
- Added AskQuestionYesNo function v2.014
(in ucdlgs.pas unit)
- WebSockt unit removed from WebHub v2.014
The unit named "WebSockt" has been removed from WebHub. It is now in the public
domain, posted at http://www.href.com/pub/source/websockt.pas. It is for use only
on 16-bit Windows systems.
- Bug fix in ThtTagList.SetAsTag v2.014
...for cases where variable "i" became greater than length of string "a"
- Improved session hiding for use with StreamCatcher v2.014
Changed TWebSessionIDApp.GetRandomSession to hide both session id and random number if IsRobotRequest is true.
Changed TWebSessionIDApp.aSession to hide the session id if IsRobotRequest is true.
Modified TWebSessionApp.RejectSession so that the target, "bounce-to" URL, does not contain a session number (which it did, as it had resulted from Jump).
Renamed all uses of 'Robot' to 'WebRobot' for consistency.
Added pWebApp.WebRobotSession property which equals the reserved session number for web robots,
which may be used with an ISAPI filter such as StreamCatcher.
Changed ini file key for the web robot session id from "RobotSession" to "WebRobotSession"
- Bug fix re usage of ServerIDs v2.014
Fixed bug where the AppHandle would appear in the links when ServerIDs were used.
- Added ElapsedMilliSecondsSince and ElapsedMilliSecondsBetween functions v2.014
... in ucwinapi.pas.
- Fixed TwhBrowserInfo.GetAnchorInQueryString re Netscape 6 v2.014
...because it had been returning False for all Netscape browsers, not just version 3, and that made the # portion of a command show up prior to the ? in the URL, which doesn't work in, for example, Netscape 6.
- PageID treated case insensitively v2.014
Modified TWebBasicApp.SetPageID so that PageID is only set when different,
from a case *in*sensitive point of view. (It had been using case sensitive logic.)
- Better support for WebHub on ports other than 80 v2.014
Changed GetCgiAddress so that if the web server software includes the port within the server name
(as Sambar does at least in some cases), the WebHub cgiAddress property will not include
the port twice (e.g. localhost:8000:8000) as that definitely does not work!
- Better support for host headers v2.015
Changed logic so that host header is added only when protocol is HTTP/1.1.
Also changed TWebTelnet.Connect method to advise the port number in addition to the WebSockHost.Address.
- UseHTTPHeader flag v2.015
Added support for a WebDefault named "UseHTTPHeader" which sets
the value of TWebOutput.UseHTTPHeader.
- WebDefaults[cHttpColon] v2.015
New feature: TWebOutput.HttpColon loaded from WebDefaults[cHttpColon] when TWebInfo refreshes.
- brwsrcap.ini updated v2.014
Updated to latest version available from original source, http://www.cyscape.com, which is dated February 2000.
- TWebInfo use of INI files improved v2.014
Patched TWebBasicInfo.AssertInifile so that it would work even if incoming "filename" was really a directory.
- TWebApp.Pages list remains sorted v2.016
The TWebStoreList class underlying the TWebApp.Pages list was fixed to correctly sort
Pages containing an underscore character. This problem led to a situation when a PageID would
not be found even though it was in the list. This could manifest itself as PageID being blank
after assignment, and in other ways. Thanks to Allen Farenhem for providing the necessary
test data to track this down.
- gifimage.pas renamed to htGifImg.pas v2.015
htGifImg.pas is free v2.016
The gifimage unit is not used in any WebHub packages and has been available on href.com/pub/source
since Mar 1998. It has been renamed from gifimage.pas to htgifimg.pas to avoid a naming
conflict with gifimage.pas in the Delphi JEDI source. As of v2.016, the unit will no longer ship with WebHub.
If you need this unit, please download source from www.href.com/pub/source/.
- ucdlluse.pas is now free v2.016
This unit is for using DLLs in Delphi 1 and is posted at www.href.com/pub/source.
- webtbl.pas and wdbalpha.pas are now free v2.016
These units, which defined web actions TWebTable and TWebDBAlphabet, have been removed from
the WebHub VCL and are posted as free source files at www.href.com/pub/WebAct/DB/.
- tPack TEvent renamed to TtpEvent v2.017
In utipcobj.pas, TEvent renamed to TtpEvent to distinguish from Borland Delphi TEvent class.
- tPack TCriticalSection renamed to TtpCriticalSection v2.017
In utipcobj.pas, TCriticalSectionrenamed to TtpCriticalSection to distinguish from Borland Delphi TCriticalSection class.
- Fixed Delphi compiler warnings v2.017
Fixed the following units to clear compiler warnings: utThread, TxtGrid, tpShell, ucFile, UserWin,
tpList, tpMemo, tpSysPop, htmlCore, websesnf, webcore, webpick, webinfou, wpaFiles, Ilgifbmp,
weboutln, weblistm, whvardel.
- additional units are free v2.017
tpKiosk.pas, usernetw.pas, utwcrypt.pas, bitbox.pas, bitboxdb.pas, filtprop.pas, ucPChar.pas,
okCore.pas, working.pas, userbde.pas, ucPrint.pas, systools.pas --
these units are posted as free source at www.href.com/pub/source.
- PageIDs and ChunkIDs now case sensitive when loaded from DB v2.017
If you are using ThtDBWebApp, and you are loading content from a database, please note that
the PageID and ChunkID values are no longer forced to uppercase. This means that you may
change the content of your database, to allow upper and lower case letters, if you want.
- Added InitCoreWebHubDataModule v2.017
Both dmWHDBAp.pas and dmWHApp now define InitCoreWebHubDataModule (and both now "uses whMain").
This makes it one step easier to have a simple DPR for a WebHub project, regardless of your choice
of application object, and the technique is being applied to all the demos.
- TWebListGrid file location, definition extended v2.017
If the files locations are not absolute, then they are considered relative to the location
of the application-level INI file.
- TtpSharedLongInt patch for D6/D7 v2.017
Fixed problem in tpsharei.pas causing the symptom where, on exit, a WebHub application
using the whShared.pas panel would give "EOS Error 6, Invalid Handle."
- TtpCollection.Owner renamed to OwnerComponent v2.017
The "Owner" property was renamed to OwnerComponent so that the normal Delphi Owner property
would still be available and the custom property would be easily differentiated.
- Summary of free units v2.014 to v2.017
- Demos moved to demos.href.com v2.017
Full source (Delphi, W-HTML and any relevant database files) for
all WebHub demos is available on demos.href.com.
The demo files are no longer shipped as part of the WebHub System. The WebHub installation
still includes a "Demos" section but that now only sets up AppID and HubApp and a few graphics.
No demos will be compiled during installation, even if you say 'yes' to have them compiled.
(i.e. the installation routine needs modification to skip that question.)
Note for people upgrading:
The WebHub Installation will always reset the location of your "hub.ini" file.
If you have customized this location, you will need to reset that after installation.
The easiest way to do this is to run regedit before installation, export the HKEY_LOCAL_MACHINE\SOFTWARE\HREF Tools\WebHub key to a .reg file to save
your custom settings, and then double-click that .reg file to restore the settings after installation.
Example file contents:
WebHub Project Wizard
- WebHub wizard and datagrid.pas file v2.014
Error: "Cannot open file datagrid.pas". Reported by Jack Cane, 13-May-2001.
The wizard form files were not shipping, will ship in v2.013+ under wizard\forms\*.pas.
The wizard has been improved to look in both the ht\lib and ht\wizard\forms directories
for template files. [Note: the wizard is still under construction 16-Dec-2002. This issue
will be resolved before v2.014 is shipped.]
- File Location Notes v2.014
If you are installing onto a clean system (rather than upgrading), move the etk*.bpl file
from lib\d5 (or lib\d6 or lib\d7) to the windows system32 directory. It needs to be in a
directory which is on the path. It is used by the lib\d5\whWizD5.bpl file, which is the WebHub
Project Wizard. (For Delphi 6, the file is lib\d6\whWizD6.bpl and for Delphi 7, the file
If you are using Delphi 6 or Delphi 7, you may move the following files from the lib\ directory
to wizard\forms\template in order to separate the wizard template files from the rest of the
standard WebHub files: datagrid.*, datascan.*, dbstrgrd.*, sampapp.pas, scrolqry.*, sendstr.*.
There is no need to move these files. Only do it if you are like the idea of identifying and
separating the wizard template files.
Back to the top of the release notes
- File Uploading improved v2.014
runisa.dll patched (in SetUploadTempFilePath and GetUploadTempFileName)
to improve file uploading. Configuration filename renamed
to WebHubRunner.cfg (from WebHubRunner_Keybox.cfg). NB: there must be sufficient permissions
on the upload directory for runisa.dll to be able to create, modify and delete files.
- Blank response - might be fixed v2.016
The problem where a blank page would be returned by the WebHub System has most
likely been tracked to, and fixed in, runisa.dll. Based on our in-house testing, all is well.