Updated 03 September 2013
5.54 (3 September 2013)
Change: C9 DLL compiled with build 9.0.10324. Use this version if you are using Clarion 9 build 9.0.10324 or later.
5.53 (25 April 2013)
Add: DLL compiled in Clarion 9 included in install file.
Change: "Parameters" option for NetWebPage removed and replaced with fixed (standard) parameters.
5.52 (6 July 2012)
Fix: DLL. Fixed problem with SSL where 2 web-server objects on one thread (Example 9) or 2 servers on different threads, and request takes more than 5 seconds or so.
5.51 (17 May 2012)
Updated ca_root.pem certificates in demo example, revoking the diginotar certificate.
Those using the ca_root.pem with an SSL client class should use the new ca_root.pem.
5.50 (10 May 2012)
Tweak FTP: Prevent excessive calls to .Done method if there is a timer on the window.
5.49 (10 April 2012)
Tweak: FTP: Prevent possible recursion between callDone and calcProgress.
5.48 (3 March 2012)
Tweak: Ftp tweaks to handle servers that return a syntax error for LIST ""
5.47 (9 Jan 2012)
Tweak: Some FTP Servers don't like the default behavior of sending NOOP's to keep the Control connection alive. Setting the ftpClientControl.NoopInterval property to -1 disables this feature.
Update: Web Folder updated.
Fix: Prompt text could be not-translated in the alert popup. (more places than corrected in 5.46)
5.46 (6 Jan 2012)
Change: Default of cookie path to / rather than blank.
Fix: Prevent possible GPF in GetBrowseValue
Fix: Prompt text could be not-translated in the alert popup.
Fix: NOOP command in FTP (if no other command running) could leave control connection in "busy" state.
5.45 (15 December 2011)
Rebuild of web folder for those with a problem.
Fix: CPCS, Legacy Procedures, did not generate NetTalk INIT calls.
5.44 (23 November 2011)
Fix: Out of Range error in Arabic translation.
Fix: (Regression) FTP Problem with some servers when entering Passive mode.
5.43 (17 November 2011)
Add: Support for "SaveAs:Arabic" courtesy of, and thanks to, Ubaidullah Nubar
Fix: _SelectField method wasn't setting focus correctly.
Fix: Deformatting of Time fields in Clarion 8 could fail.
Fix: Net:FtpGroupType declaration in NetAll.Inc was missing ,TYPE attribute.
5.42 (12 November 2011)
Fix: Allow "Delete Confirm" message to include non-ascii characters.
5.41 (9 November 2011)
Add: FTP: Auto NOOP calls on the Control connection during a long File Upload or File Download
Fix: Installer wasn't copying the "web" folder to the examples.
Fix: Clicking on the "header" part of a browse does not trigger an update of the child, if one is visible.
Fix: Shading in calendar not working in IE9
Fix: "Big" Month calendar layout not right in IE9
5.40 (8 November 2011)
Change: Browse inline "Other" buttons use bidv instead of actual row Id information.
Change: FTP Client restores current directory when it does a login. Useful when the connection was closed because of a timeout.
Fix: Planner control didn't allow for string field links between the parent and child files.
Fix: Calendar wasn't looking just right in IE9.
5.39 (25 October 2011)
Change: Returning from Insert on a Popup form, locates the browse to the newly inserted record.
Change: Form "number" type no longer accepts a picture because browsers are handling formatted numbers badly. Use "String" field for formatted numbers instead.
Change: Added "Numeric" options to String field validation.
Change: Size of Loc:Alert variable increased.
Fix: WebClient class did not distinguish between content-length:0 and no content-length supplied.
Fix: Use of extended characters in <! net:s tags did not display properly.
Fix: OptionAutoCookie (in WebClient) could fail if there wasn't a later ; character.
Fix: Delete to popup could cause child browse filter to get lost.
5.38 (12 October 2011)
Add: Family field to Net:IPInfoQType (not populated, just preparing the structure).
Add: Additional support for Secwin "workgroups".
Add: WebClient class, support for sending "empty" fields as part of a POST.
Add: Added support for accepting dates of the form "1st monday in june"
Add: Property to netsimple: WholePacketLengthInclusive - if set to true the the length field at the front of WholePackets includes the length of the "header". (ie is length of data + 4).
Change: NetPing function in the DLL optimized to (almost) not use the CriticalSection.
Fix: Problem hiding and unhiding tabs, if tabs are not currently in the order they were created in.
Fix: SNMP code could fail if value returned ended on 020H (Fix thanks to Benjamin Krajmalnik).
Fix: Utf-8 characters in a locator could cause problems.
Fix: Date locator fields were too wide.
Fix: Regression - test date descriptions (today, yesterday, last month and so on) were broken.
Fix: Problem with foreign characters in Page Title.
Fix: Multi-Row browses did not always show the "Selected" bar when browse is drawn on the page.
Fix: "Reset Field" list options reset when procedure opened.
Fix: Regression: "Email" button on a form stopped working.
Fix: Using non-Ansi characters in the "value" of a radio button was not xHtml complient.
5.37 (18 September 2011)
5.36 (17 September 2011)
Change: Maximum key fields in a supported key (where multi component keys supported) increased to 10 from 5.
Change: Lookup Description key chooses unique single component key over multi-component key with same first field.
Add: Option to make a locator case sensitive for a particular column.
Fix: Processing of _bidv_ was incorrect for forms with a File Upload field.
5.35 (16 September 2011)
Update: Updates to SNMP v2 support, curtsey of Benjamin Krajmalnik
Change: Icon direction for browse sort heading reversed so it matches Windows norms.
Fix: Remove place holder from entry fields when saving a popup form.
Fix: Better selection of codekey when calling GetDescription
Fix: Browser sets case of submitted data based on field css.
Fix: Missing self._release in NetWebServer.SendError method.
Fix: NetWebClient, SetValue method, adds blank values to PostData correctly. (doesn't pad with spaces).
5.34 (3 September 2011)
Special Note: If you're using a custom GZIPALL.Bat then note new js files and update your GZIPALL appropriately.
Updated: jQuery support files to jQuery version 1.6.3 and jQuery UI 1.8.16.
Add: SendError method to WebServer class
Add: HtmlError property to WebHandler class
Update: Secwin support improvement - almost there!
Tweak: "Save As Danish" choice changed to "Save As Scandinavian".
Fix: Standard Browse buttons overridden in a browse were not restored for other browses in the same thread.
Fix: Possible bug generating menus could cause C6 to GPF while generating.
Fix: Double-Drop menus, with no Items (just a URL or OnClick) required two taps when accessing on iPad.
Fix: Fixed problem in IE9 when utf8 characters were used in a locator.
Fix: NetBase64DecodeEx and NetBase64EncodeEx were not exported from the DLL in C7 and C8.
5.33 (27 August 2011)
Add: WholePacketUseBigEndian property to NetSimple class, used to set the byte order of the "whole packet" length header.
Add: Lookup, Radio and Drop form-fields auto-populate options from the dictionary - adding these fields is faster.
Add: Support for "PDF-Tools CPCS Report to PDF Extension Template v4.1" template.
Improvement: Memory forms that open other tabs (eg reports) are still "alive" and can be "Saved" multiple times.
Improvement: Prompt setting can be omitted for fields, even if they have validation requirements.
Internal change: Reordered fields in NetWebServerSessionDataQueueType
Fix: Tabs with "Hide If" settings evaluate the condition when the tab is first drawn (not just on a reset).
Fix: Regressions in Report code.
Fix: East Europe (Croatian) support.(Thanks to Oggy)
5.32 (15 August 2011)
Change: Internally namespaced MD5 functions so they don't clash with StringTheory in Lib mode.
Example: Example 3 improved header, footer and LoginForm.
Fix Regression: Report procedures could generate and extra END statement.
Fix: Calls to Comment::FieldId could be generated in a form even if comments were suppressed.
5.31 (12 August 2011)
Change: SSLMethod property now defaults to NET:SSLMethodSSLv3 instead of NET:SSLMethodSSLv23
Improvement: Additional support for Secwin - support almost ready now.
Improvement: \web\reports folder created automatically.
Improvement: Romanian character support added to East Europe support.
Example Update: Example 3 (BasicLogin) extended to show visible Session timeout counter.
Example Update: Example 57 (Tabs) extended to contain Wizard with server-side validation. (With hiding tabs).
Internal Change: Threads in C6 and later RESUMEd when STARTed
Internal Change: Report template refactored
Internal Change: _CreateSortHeader refactored and renamed to CreateSortHeader
Internal Change: _RegisterDivEx method refactored.
Change: Browse sort headers are now left aligned, with space allowed for sorting and access icons.
Fix: Problem with naming output in CPCS reports.
Fix: Suppress "Backspace" key in IE when on a read-only field.
Fix: Windows with graphs handle CallPopups correctly.
Fix: Call to PreInsert made after call to .InsertAgain.
Fix: Browse Row CSS setting on browse contained template error limiting entry to 10 characters.
Tweak: "Polish" changed to "Central Europe" on WebServer Advanced tab drop down.
5.30 15 July 2011
Add: SaveAs Eastern Europe option. (Thanks to Oggy)
Add: CSS tab for For Field type "Display".
Add: Form type Wizard. Option on Layout tab to set the minimum wizard height.
Add: Form type Wizard. Option on Validation to validate fields on a tab when "NEXT" is pressed.
Add: Advanced Tab, Packet Length setting to NetWebSource so you can override the length of the Packet variable.
Add: Form Advanced tab "Prime Key from Parent Table" option if coming from browse on a different file.
Fix: Display field with URL sometimes didn't display as a clickable link.
Fix: MailTo: in a browse wasn't generating correctly
Fix: Added PROC attribute to AddResponse method.
Fix: Opening multi-row browses in Compress-when-open mode fixed.
Fix: If "Include Button Action" is ticked, but no action chosen, then action is not included in URL.
Fix: When a browse field has a hyperlink, and target is set to anything, then popup mode is suppressed.
Fix: Makepage had extra <13,10>'s that were unwelcome.
Deprecated: Experimental code in CleanView method.
Change: Order of Filter in YearClass tweaked to improve performance.
Improvements: To Planner.
Add: CiphersAllowed property to Net:SimpleSSLCertificateOptionsType. See here for more background.
Add: FreeCookies method.
Fix: Calculate PostData length correctly, when some fields are empty.
5.29 20 June 2011
Add: When click Next or Previous buttons on Wizard form type, focus is transferred to the first field on the visible tab.
Fix: Regression for URL's containing a double underscore (__) not working.
Fix: AutoTab functionality could tab to a Read-Only field
Fix: pressing the / key in a date entry field caused the date lookup window to appear. The date lookup should only appear for the ? key, and the "lookup key" (which is F2 by default).
5.28 15 June 2011
Add: support for "Auto Tab" added as option to form string fields. (field automatically tabs when full).
Add: 'docx' to list of known extensions for "application type".
Add: Support for foreign characters in pagename part of URL.
Change: TinyMCE files now moved to their own sub folder in web, \web\tiny_mce_jq.
Change: AddScript method: If first character in Scriptname is a '/' then scripts folder is not prepended to the name.
Update: Tiny MCE Editor component updated to version 3.4.3 (jQuery version)
Update: jQuery core build updated from 1.5.2 to 1.6.1
Fix: ButtonText was not being set in some browsers.
Fix: Embed name for previous and next buttons were the same as the Save button.
Fix: TextArea Name attribute had gone missing.
Fix: NetWebSms file was missing from include list (affected some Legacy, multi-dll apps)
Fix: Tab Equate not always added to list for Reset fields.
5.27 (30 May 2011)
Add: Template option to add CSS class to images placed on buttons.
Update: More options and embed points in Planner.Fix: Hyperlink on display fields when using a procedure as the destination.
Fix: Focus bug with alert box under IE.
Fix: Syntax error on one of the CreateButton template lines.
Fix: Template generated If (condition) instead of If Not (condition)
Fix: ForceNoCache = true when sending generated PDF's to browser (specifically IE).
5.26 (25 May 2011)
Add: NetEmailSend now correctly sets the Content-Type for attachments based on the file extension. For each attachment the SetAttachmentContentType method is called with the file name and content type string. This method can be overridden to set the contentType parameter to a custom value. If not overridden the parent call will set the contentType to the correct type based on the file name.
Add: NetEmailSend.SetAttachmentContentType method (see above)
Change: Close button on Browse handled better in Popup mode.
5.25 (10 May 2011)
Add: Interpret method - allows words used in Date Formatting to be accepted in multiple languages.
Update: Changed the docs for FAQ W4 to reflect the new approach.
Fix: Foreign language characters could get lost if the form contained a File Upload field.
Fix: Regression: Lookups problem if lookup field is a string.
5.24 (6 May 2011)
Add: Date entry fields, and Lookup entry fields, trigger the lookup if the ? key, or F@ key are pressed on the lookup field. (The F2 option can be programmatically changed).
Add: Template option to hide lookup buttons for form fields and browse EIP fields. Lookup still works if lookup key pressed.
Add: Browse responds to PgUp, PgDn, Ctrl-Home, Ctrl-End keys when pressed in the locator, or EIP fields.
Update: Example 24 to show multiple sheet controls on the same page - simulates a form with multiple sheet controls. Note that this only works as a page-mode form, not a popup form.
Change: Recommended method for calling forms directly from Menus changed. See FAQ W4 for updated details. The old method still works, but will be deprecated at some point in the future.
Update: Example 24 shows new direct-Link-To-Form method in Menu, and in Form "Save URL".
Change: Control characters (Ascii 1 through 9, 11 through 12, and 14 through 31) removed from string in calls to _Jsok method.
Change: (internal) _SelectField method called as part of all Get and Post requests.
Change: (internal) AddBrowseValue method can now take field values directly.
Change: Call to ClearBrowse added to Menu extensions. Useful for calling AddBrowseValue to Menu items. See FAQ W4 for more details.
Fix: Improvements to browse and form redraws when Delete and Insert button clicked.
Fix: Template setting on Calendar for "Insert into primary table" was incorrectly disabled.
Fix: Focus issues when clicking on an EIP cell in a browse.
Possible Fix: Clarion 7 .. Generation error
5.23 (19 April 2011) **
Add: Passing parameters to Popup procedures.
Add: Embeds in form around CASE statement.
Add: Calendar: Ability to have Insert on dates with non-primary data.
Add: Calendar: Ability to mark records as read-only on calendar.
Add: "GotFocusBack" routine in Form and Browse.
Add: HtmlMSIE9Styles and HtmlMSIE9Scripts properties.
Change: Customized small buttons on a browse, properties are generated with the button, not early in the browse.
Fix: Ajax Response consisting of only a script, correct
Fix: When closing a popup the page underneath is not gratuitously regenerated.
Fix: RestoreMem routine wasn't restoring fields from other files.
Fix: Planner would only work on procedure with name "CalendarAppointments".
Fix: Template error missing %FormSource
Fix: Chrome treats <br></br> as two breaks. Replaced with <br/>
5.22 (10 April 2011)
Add: Hide and unhide ability for Tabs on a form.
Change: jQuery method returns longer string if lots of options are used
Fix: If button had no apparent action it wasn't generated.
Fix: If browse 1 was "selected" and the mouse moved over the header, the browse highlighting would disappear.
Fix: xHTML in Form Headings was broken.
Fix: CSS for the options of a drop-list was inheriting the styles from the Entry portion of the drop-list.
Fix: Moved the do FormSettings line below the embeds in PreInsert, preUpdate and preDelete.
Fix: Calendar embedded on popup form did not generate custom-styles.
Fix: Hyperlinks on a browse would fail if there was a "Form Condition" on the browse.
WebClient: change: User-Agent header field updated. (no more pretending to be IE6!)
5.21 (5 April 2011)
Special Note: If you're using a custom GZIPALL.Bat then note new js files and update your GZIPALL appropriately.
Updated: jQuery support files to jQuery version 1.5.2 and jQuery UI 1.8.11.
Add: When "Save" button pressed the "text" on the button is passed into the value _buttontext_. This allows for one save button on a form to be distinguished from another if desired.
Add: Ability to force a "Close" button rather than a "Save" button on memory forms.
Add: loc:FormHeading variable in Forms - reduces calls to translate when setting form headings.
Add: On Popup-Forms the heading is automatically moved into the Title bar of the Popup.
Add: SetAlert method - used when setting the Alert value inside the library, so the contents of the message can be overwritten.
Add: CleanFilter method applied to both prop:filter and prop:order settings. This optimizes them for SQL (if applicable) by removing the UPPER statement. Disable this by setting
Add: Contains locators can now span multiple fields in the table. Set the "Locate On Field (csl)" setting as a comma-separated list.
Add: New method "ReplyComplete". Allows the response to the browser to be flushed, sop the thread can continue with other tasks.
Temporary fix: "Do not restore focus" option on Browse Advanced tab - helps when there's a form, with a browse before other fields, and the browse has some EIP.
Change: Handling of variables in StoreMem routine changed so variables primed with existing session value.
Change: GetDescription better deals with multi-component keys (higher key elements are expected to be manually primed in the session queue.)
Fix: Form "other" buttons, which popped up another procedure, did not respect Global popup setting.
Fix: Popup buttons on Memory forms do not attempt to pass record identifier to OpenDialog method.
Fix: Browse row could generate incorrect onclick attribute.
Fix: Corrected color definitions for purple and teal in netweb.css
Fix: jQuery method in WebHandler allows for text containing colons.
Fix: AsciiToUTF function better deals with chars between 128 and 255.
Fix: Legacy apps in C5.5 don't spit an ABC template generation warning.
Fix: Custom style properties assumed they would be a color.
Fix: Incorrect field conditionals generated into CompleteFom routine
5.20 (23 March 2011)
Fix: Some buttons could (incorrectly) become a "mailto:" link
Fix: Cancelling a popup lookup would clear the lookup field.
Fix: Small fix to Popups-From-Menu-Items.
Change: Create default menu popup title parameter if it's blank.
Style Tweak: right-margin added to nt-select.
5.19 (21 March 2011)
Added UDPOptionName and UDPOptionValue to Net:SimpleConnectionType group. This allows the setting of (for example) UDPOptionName = SO_BROADCAST.
Add: Options for "Other" Buttons on browses and form to support popup forms.
Add: option to hide browse "Completely" instead of displaying a "No records found" message.
Add: "Parameters" option to menus and menu items when calling a procedure from the droplist.
Add: Support for popup forms directly from Menus and Menu Items.
Add: Div around Menu Name in TaskBar menu
Add: Properties "FormOtherButtonWithText" and "FormOtherButtonWithoutText" to global styles.
Add: "Suppress Comment" option for form field if "Form field not last in Cell".
Add: Start Button Set / End Button Set options for buttons. Can only be used on buttons that are in the same cell.
Add: more embed points.
Add: Simple xHTML entered on the xHTML tab, is now passed through the AsciiToUTF method, if the page charset is utf-8. Allows for extended characters in hand-coded xHtml.
Change: (internal) AsciiToUTF method takes optional "maybe" parameter.
Fix: If child procedures are in another DLL, then not always pre-Called correctly in Popup mode.
Fix: If form is in View-Only mode, then browses on the form should also be in View-Only mode.
Fix: The wrong field was getting the focus after validation.
Fix: UtfToAscii method truncated strings > 1K.
Fix: Extended maximum size of tooltips on a hyperlink.
Add: Support for SaveAs:Portuguese
Add: More Embed points.
Change: Doing a FileManager close rather than a RelationManager close, as the Relation Manager seems to have an issue in some highly threaded cases.
Change: File upload fields in table are not cleared if user submits a blank field when doing a change.
Change: Removed row location on Refresh=sort so TPS and SQL are consistent
Fix: Minor template errors when generating buttons.
Fix: Returning from a popup, to a popup, sometimes didn't highlight the correct record if the last page of data was displayed. Same for locating to a very late record in the table where back-filling occurs
Fix: prop:order in browses could default to ,something.
Add: DontCleanFilter property added (default value is 1 for now)
Add: CleanFilter method added. Scrubs filters for optimal use with SQL.
Add: Option to force line break after image in menu items, or form no line break after image.
Update: Multi-Host: Added support so it can host a single SSL site.
Update: Multi-Host: Various cosmetic, and usability improvements.
Change: WindowOpen method created to handle "_self" target issue in FireFox
Change: OriginalAction field added to FormSettings
Change: _SaveFields and _Restore fields take optional prefix parameter (internal)
Change: Popup method gets optional text parameter (if omitted, GetValue('alert') is used)
Fix: Problem with Time deformatting when a Save button returns to the same form.
Fix: Spelling error when selecting "Store As" setting in template (webserver procedure).
Fix: Popup method "escapes" test so all characters can be displayed in the browser.
Fix: Style: Height of red error space at top of browses and forms get variable height.
Fix: All comments are passed to _jsok before sending to the browser.
Fix: Style options for browse columns is in the same place for Button and String columns.
Fix: p_web.br property corrected for FireFox.
Fix: Popup calls to form in View mode and Copy mode standardized.
Fix: Copy button to Popup form was not working well. Especially not where Auto-Incrementing was involved.
Fix: SaveAsSpanish didn't work.
5.15 (1 February 2011)
Change: Small View button can exist in popup mode.
Change: RowId passed with Small Insert button, so SessionValue of "calling row" is set correctly.
Fix: Child browses could be blank when parent browse opened.
Fix: XP Tabs didn't open on Tab 1 in Insert mode.
Fix: Unicode characters in Page <title> didn't display correctly.
5.14 (31 January 2011)
Change: Pressing "enter" on a locator field (field with class nt-locator) does not trigger default button if on a form.
Fix to jquery.nt-form.js file causing script error on IE7.
Updated jQuery.ui from version 1.8.8 to 1.8.9 NOTE Custom GZIPALL update required.
Fix: Accordion (and TaskPanel) menu would open, close, but not open again.
5.13 (21 January 2011)
Special Note: If you're using a custom GZIPALL.Bat then note new js files and update your GZIPALL appropriately.
Add: Methods (ClarionToUnixDate, UnixToClarionDate, UnixToClarionTime)
Add: NetSNMP: Limited support for 64 bit counters, Better SNMP error handling, tidyup and improvements - courtesy Benjamin Krajmalnik.
Change: Continued HotDates support (WIP)
Change: (internal) _EipRow changed to _EipRow_
Change: Change button calls .change, not OpenDialog.
Fix: Cleared up bugs where browse rows not selected correctly.
Fix: NetEmailReceive : GPF in as a result of unexpected data in the Content-Type header.
Fix: EmailReceive: GPF in as a result of unexpected data in the Content-Disposition header.
5.12 (18 January 2011)
Change: Continued HotDates support (WIP)
Fix: Excess calls to _SendFooter suppressed
Fix: (regression) Default buttons, and first-field-selected stopped working
Fix: (regression) Auto-Increment on form open caused "Duplicate record" errors on Save.
Fix: Added MSIE9 to test in CreateImage method
5.11 (13 January 2011)
Change: Continued HotDates support (WIP)
Change: Documentation updates.
Change: New embed point "after loop" in browse
Fix: An incorrect SessionLevel test was applied to Browse update buttons
5.10 (11 January 2011)
Add: Start of Hotdates support (WIP)
Add: Support for File-Uploads on Popup Forms added
Add: Form Field Type "Color" added. Allows a color picker on a form.
Add: More embed points
Add: Ability to set specific CSS properties to browse cells.
Add: Can call procedure as URL for menu name.
Add: New Methods .ColorWebToClarion, .GetSecwinSettings, NextMonth, PreviousMonth, GetWeekDayName,
Add: msie9 and msie8 as a possible values for p_web._useragent
Add: When in ValidateRecord in a form, the original values of the form fields are in p_web.GetValue('_old_fil:fieldname')
Add: '.htc' added as recognized file type (IE behavior).
Change: Css Settings for browse column moved to it's own tab.
Change: From Calendars section added to Form "priming" tab
Change: "AutoSave" functionality added to form (internal)
Change: .jQuery method now needs complete selector (ie leading '#', or whatever).
Change: <div> for display form-field applies Class and Id.
Change: GetWebColor method renamed to ColorClarionToWeb. DrawYear renamed to DrawMonths.
Change: FileToSessionQueue can write to Value Queue (only)
Change: CRC32 method returns uLong, not Long.
Change: Added support for Net:ForwardSlash to _jsok method.
Change: Save buttons get random id like other buttons.
Change: .Jquery method uses .Script method. (internal)
Removed: Unused files from web folder.
CSS New: jQuery-nt-color.css, jQuery-nt-cal.css, Safari.css, Chrome.css, Opera.Css
Update: Secwin support (WIP)
Fix: SetAction routine in form did not set the action correctly when the form is in ViewOnly mode.
Fix: Extra ' was being generated for Drop-Down menu, nt-menu style.
Fix: Entering Description as Value for Lookup field could fail if description started with a number.
Fix: Some fields did not get Read-Only class applied if form was in ViewOnly mode.
Fix: CreateDateInput method did not apply class if in Read-only or Disabled state.
Fix: Contains locator on hidden browse field, with no picture set, did not work.
Fix: Could not blank a date on a popup form
5.09 (23 December 2010)
Fix: SNMP, corrected spelling of NetSNMP:Deprecated equate('deprecated')
Fix: Regression - Multi-DLL systems could only compile the Data DLL, not other DLL's that have the NetTalk extension.
Fix: If Browse field, and browse conditional fields were empty, then a compile error could occur.
Fix: Regression - In some configurations Delete button would not work.
5.08 (22 December 2010)
Change: WebWorker.Combine method extended to take 5 optional parameters.
Change: Suppress-NetTalk template deprecated and no longer needed.
Fix: All.Js had not combined correctly.
Fix: Regression - MailTo: In browse not generated correctly
5.07 (21 December 2010)
Add: New document Upgrading from Version 4 to Version 5 added
Add: Support for Lithuanian (Baltic) characters
Add: Form buttons can be above, or below form (set on Layout tab).
Add: Support for popup forms to "Open form in Change mode" Hyperlink setting.
Add: Support for Global DropList class
Change: Wizard tab support replaced (and themed)
Change: Improvements to look of "Rounded" tabs.
Change: Include Save, Cancel & Delete button settings moved from Advanced tab to Layout tab.
Change: CRT files can contain multiple certificates (ie intermediate certificates).
Change: Documentation being updated, and reformatted (WIP)
Fix: Incorrect placement of " character when generating browse table, if it had a width or height.
Fix: Popup Form Dialog did not close after Copy and View actions when Save button pressed.
Fix: Popups and Message would still appear on Popup forms even if suppressed.
Fix: Priming when field "not already set" could go wrong.
Fix: Regression in Double Drop Menus introduced in 5.06
Fix: Generation of Alternative Browse Columns improved.
Fix: When the last field on a tab was not Last-On-Line then the html code was not xHtml compliant.
5.06 (10 December 2010)
Significant Change: SSL Ciphers supported by the server are reduced to only HIGH level ciphers, no MEDIUM or LOW level ciphers. If this causes a problem please contact us. For more details see here.
Add: Support for Clarion 7.3
Add: Button Div Class setting (WebServer, Settings, Styles, Form)
Add: nt-formcell style (recommended for Prompt Class, Entry Div Class, Comment Class)
Add: Ability to set Button Div class distinct from Button class on form.
Add: nt-width0, nt-display, nt-menu-item styles
Add: Date input fields now accept "week n" as valid date.
Add: FTP supports return code 502 (list command not implemented)
Change: Comment cell for "browse form fields" suppressed.
Fix: Problem with Autoinc adding 2 records to parent file.
Fix: PHP call to strdata.slice ignored returned value.
Fix: In one case the use of "Change Condition" was applied backwards.
Change: Script method can now be called more generically.
Change: (internal) Optimization to _FlushResponses
Change: Net:Unknown equate changed to Net:NotKnown to avoid conflict with WebBuilder.
Fix: Auto-Lookup on Insert was broken in some cases.
Fix: Template error when generating empty browsewidth and browseheight
Fix: Template error when generating rowstyle.
Fix: Calling p_web.Script method was limited to very few embeds.
Fix: using 0 in a date picture (eg @d06) could lead to funny chars in date placeholder.
Fix: Using popups could break browse mouse-overs
Fix: Case where date range error contained excessive spaces.
Fix: Description-as-Value lookups could clear when form has failed validation.
Fix: Immediate form validation could appear on browse screen behind popup
Fix: Removed Trace call from template
Fix: Code was generated to Call PostInsert even if Inserts not enabled for form
Fix: Text in alert_div encoded correctly for foreign character sets.
Fix: 1 char length strings could get cleared on screen when using foreign char sets
Fix: Conditional browse field, css override, generated extra ) character.
Add: NoTips property to suppress tips on mobile devices
Add: Create Tip method.
Add: Ability to separate Nav buttons and update buttons position on a browse.
Add: Ability to set size of locator fields
Add: Ability to hide locator prompt
Add: Resizable option for browse.
Add: Resized routine added to browse procedure - called if browse resized
Add: New methods, SetUserSetting, GetUserSetting, LoadUserSetting
Change: Browse row compression - set specific icons
Change: loc:default contains browse-row-hash value
Change: (internal) attributes to set browse data moved to table element
Fix: In certain cases duplicate DIV id's on a page were possible, with multiple browses.
Fix: Allows case where lookup key value is not primary key.
Fix: Problem where lookup popup doesn't have a form specified - could result in compile error.
Fix: Possible length problem with _jsok on strings with utf-8 characters, also AsciiToUtf method
Fix: Clicking on a browse record no longer caused the children to automatically update
Fix: Sizing on Date fields was not being applied. Dates now auto-size, or you can force them larger.
|Release build, and first gold build of NetTalk 4.|
Notes: Possible compile
problems when upgrading to Version 4.31
1. Local Variables in the TITLE of a page
It's good for web pages to have a Title. But it's a pain to have to fill in the Title field for each browse and form. So starting with version 4.31, if the Title is blank, then the page "Header" setting will be copied into the title field for you. Alas, this can cause a problem if your Header is not a constant string, but is a variable. The Title field is generated into the WebHandler procedure, and if you have used an expression, such as a session value, or local variable, then you'll get a compile error when compiling the Web Handler procedure.
Solution 1: For the offending procedures, explicitly set the title different to the header. Set the title to a constant value, not using a local variable. At the very worst set it to '' (quote quote).
Solution 2: If your NetTalk Web Handler object (ie the NetTalk extension to your WebHandler procedure, has the This Object Name set to p_web rather than ThisNetWorker, then you can still use Session Variables in the title.
This is the NetTalk extension in the WebHandler Procedure
2. Duplicate Use Equates for browse columns.
Browse columns, like FormFields, have a Use Equate setting. This setting should be unique for each column, however in earlier versions of NetTalk settings that were not unique did not cause a problem. In version 4.31 the setting must be unique. This mostly affects browses that have multiple "Other" buttons.
Solution: If a browse procedure generates a compile error then make sure all the columns in the browse have unique equates.
3. Menus Start Open
If you are using xpTaskPanel menus then there is a change you probably want to know about. Although not a compile error, it is sufficiently different that you'll notice it immediately. In version 4.30 and before the xpTaskPanel always opened the top menu, and the others started closed. There is now an option on the Menu template that lets you specify, for each menu, if the menu should start Open, or Closed. This defaults to ON so ALL menus start Open. Adjust the template settings if you want to change this.
4. Embed code for each browse row doesn't run everytime
In version 4.30 and earlier there are 2 embed points right next to each other in the Browse. These are called Validate Record, and SetQueueRecord. In theory, ValidateRecord is used to filter out records, and SetQueueRecord is used to prime calculated row variables, or perform other Row manipulations. However since they were together code which should have been in SetQueueRecord was in ValidateRecord and vice versa.
In 4.31, these embeds have move to different places in the code, so their meaning becomes important. If you have code in SetQueueRecord that should be in ValidateRecord, or vice versa, then you need to move it to the correct embed for it to work properly.
5. Busy Icon, and Alert messages on Browses
In Version 4.31 a small "busy" graphic has been added so that when the Browser asks for an asynchronous update from the server, there is a visual indication that the browser is waiting. In addition a variety of "entry input issues" can now trigger a message to the user (typically written in RED).
In order for these to work, some extra stuff has been added to the "generic page" when a Browse or Form is called. Typically a NetWebPage has a <!-- Net:SomeHeader --> tag in it. So NetWebSource procedures, which contain Headers, now also contain a setting
"This is a Header".
In short, go to your NetWebSource procedures, which are headers, and tick on this option.
NOTE: Pictures now apply to Display fields. If you have used long display fields, you may need to set the picture to '' to suppress it clipping the string.
Version 4.25 (Beta) May 2007)
Version 4.24 (Beta) 7 April 2007)
Version 4.23 (Beta) 26 March 2007)
Version 4.22 (Beta) 21 March 2007)
Version 4.21 (Beta) 20 March 2007)
Version 4.20 (Beta) 12 March 2007)
Version 4.19 (Beta) (8 March 2007)
- Added a new Advanced Posting - URL Encoding, Multi-Part forms, posting binary data (files) and more! section to the documentation. This covers posting form data, as well as posting files to web servers (including the NetTalk 4 webserver). It covers both types of posting, as well as how to create MIME boundaries and parts etc.
- Change: On a Form on the Date type. The option to Refresh Window When Date Changed has been deprecated. You should use the Client-Side tab instead. If you get a warning during the Generate then go to the form, and untick the option.
- Add: New example 34, shows dynamic fields on a form for calculator type screens.
- Add: Buttons on a form support "client-side" updates.
- Add: Support for editing HTML on a form using the TinyMCE editor. (See HTML checkbox for Text fields).
- Add: Escape method.
- Add: Implemented MaxLength attribute for form fields.
- Add: Pages are now more compliant with XHTML spec. (ie XHTML DocType)
NOTE: Style names (CSS names) are now Case Sensitive.
- Add: Implemented Green-baring on drop-down form fields.
- TIP: Note that drop-down form fields have a HEIGHT option. If this is set then the drop-down appears as a single-column list box.
- Add: Fixed Pitch as a common browse column style.
- Add: Support for multiple form fields on the same row on a form.
- Add: Form type "Wizard".
- Add: Ability to hide, and unhide, form fields based on other form field values.
- Add: Hot Fields to Form field type "Drop".
- Add: Support for Multiple option in Select lists.
- Change: Added a DocType to the generated pages.
- Change: Session, and Value queues now accept (and return) data of unlimited size.
- Removed: Some obsolete, unused, methods.
- Fix: Passing a + in the URL of a GET or in a cookie, was mis-decoded as a space.
- Fix: If auto-lookup fields on a form were not on the first tab, then in some cases code was not generated for them.
- Fix: Extended packet size in RegisterDiv method.
- Fix: Added more SendPacket calls to menu, allows for bigger menus.
- Fix: Conditional Browse filters, when using a file relationship, with a String field.
- Fix: Secure page redirect missing a parameter.
Version 4.18 (Beta) (19 Dec 2006)
- Fix: Derived NetTalk methods had RETURN statement being generated below the Procedure Routines.
My thanks go to Jens Eden, Marius Røksund and Ubaidullah Nubar who assisted tremendously with suggestions, and bug reports during the creation of this build. Thanks to my regular testing team remain, as always, a key part of making sure the WebServer functionality continues to grow at a fast pace.
- Feature: Explicit support for mail & link buttons in browse, and on form. (See new example 29)
- Feature: Implemented static-page-pre-compression support.
- Feature: Added option to combine all common js and css files. (Means faster load time for first page.)
- Feature: Added "Session Timeout" as a template option - WebServer procedure / Settings / Advanced tab.
- Feature: Added Hyperlink-to-Form ability to browse columns. (See Example 30)
- Feature: Added options on Form Layout tab to explicitly set form column widths.
- Feature: Added option to Browse template to allow explicit setting of browse column width.
- Feature: Added support for Timer to browse.
- Feature: Added Horizontal Rule as an option for Form Field Display type. (tip:set equate to something like sep1)
- Feature: Added "Text" as an option for Form Field Display type.
- Feature: Added ability to span prompt/value/comment columns with Display field.
- Feature: Added Charset as advanced option on WebServer procedure extension template.
- Feature: Added PDF as Page Type option on NetWebPage.
- Feature: New example 33 shows how to make a browse filtered by a related file drop-down.
- Feature: Added "Must be logged in" and "Must be secure page" options to NetWebGraph extension.
- Feature: Added "IF" option to Required fields on a form.
- Change: Ajax turned on for Safari users.
- Change: Some pre-defined browse column styles supported directly by template. (RightJustify et al.)
- Change: Hyperlink properties for a browse column moved to new HyperLink tab
- Change: Select buttons suppressed on child browses.
- Change: Cancel & Close buttons suppressed on child browses.
- Change: Question W24 added to docs to describe how to edit the standard error page. (See new Example 32)
- Change: Changed "protocol" option on NetWebPage, to "Page Type".
- Change: Added a option to Form Advanced tab, allowing View buttons to be visible even if Change buttons are also visible.
- Change: File uploading now stores the short path to the uploaded file in the form field (after the form is submitted.) If the upload field is empty (ie nothing uploaded) then the existing file:field is not cleared. (See example 26)
- Change: If a person enters a value into a lookup field, and presses Tab, then the focus skips over the lookup button and goes to the next input field.
- Change: Uses TotalStyle, or BrowseFooterStyle in blank footer cells on browses.
- Fix: Allowed lookups, from forms, to include child browse, which include the form file.
- Fix: Better button support for Safari.
- Fix: Enlarged loc:rowstyle variable
- Fix: More Assignment after lookup, if destination field was not a field on the form.
- Fix: Drop-list items handle special XML characters on refresh.
- Fix: Allow styles to be set for Xp-Taskpanel menu via template.
- Fix: Report "No records" popup message fixed.
- Fix: XML header not being sent with NetWebPage in XML mode.
- Fix: Small Select button, with a condition (generate error).
- Fix: Field pictures could get lost doing multiple lookups on a form.
- Fix: (regression) Radio buttons no longer read-only.
- Fix: Removed excess " characters when generating META tag.
- Fix: Better support for pictures on Form Fields.
- Fix: June changed to Jun in _Splittime method.
- Fix: bug in _SetUserAgent that incorrectly set the UserAgent if a form field called Opera exists.
- Fix: declaration of CreateButton in netweb.inc too long for C5. Have shortened it.
- Fix: In IE if an entry was typed into a lookup field the Focus got "lost".
- Fix: Bug where "Bind to IP" didn't always work.
- Fix: Program flow could get lost when multiple children, or children on forms, existed.
- Fix: Greenbaring after ajax update of browse now applied.
- Fix: Corrected problem where Browser sends excess CR/LF at the end of a POST.
Version 4.17 (Beta) (24 October 2006)
Important: These changes may affect your program and stop it from compiling
- Change: button.text field changed to button.textvalue to avoid clash with Clarions XML classes. If you get a compile error on a line like
p_web.SaveButton.Text = 'Login'
then change this to
p_web.SaveButton.TextValue = 'Login'
- The CSS Buttons classes have been consolidated somewhat. For your buttons I recommend using MainButton class for most buttons, use SmallButton for the SmallInsert etc and LookupButton class for the Lookup, and DateLookup buttons.
The following changes should not affect your existing program.
- Feature: Added Children tab to Browse settings. See new Examples 25 & 31.
- Feature: Horizontal layout of Radio Buttons
- Feature: Files submitted via the "File Upload" form field type are saved in the "web\uploads" folder. See new Example 26.
- Feature: Autonumbering on Insert, now (if there are child browses) does the ADD and jumps into CHANGE mode. As long as the user "Cancels" or "Saves" you're ok. However garbage collection recommended.
- Feature: New tab style added - "XP-Tabs"
- Feature: New tab style added - "None"
- Feature: New Menu style added - XP-TaskPanel. See new Example 27.
- Feature: (some) Submit buttons change to Disabled after being clicked.
- Feature: "Protocol" option added to NetWebPage. HTML (default) and XML protocols available. See new Example 29.
- Feature: Added ability to override the Sort field for Server-Side sorting.
- Feature: Added ability to set height of Accordion on Menu, and Form templates. Style Sheet tab.
- Feature: Filters tab added to Browse settings, includes Ranges and Conditional filters.
- Feature: Display fields on forms can now have buttons, images and hyperlinks
- Feature: Added optional button to Locator
- Feature: Added ability to position Search button before View button on browses in Lookup mode.
- Feature: Added loc:action to form to be (optionally) used in header.
- Change: Renamed ImageWidth and ImageHeight members of NetWebButtonGroup to avoid clash with Clarion previewer.
- Change: On a browse, if the "Message if Empty" is blank, then the whole table is not sent.
- Change: Better support for IE7 (distinct from IE6)
- Change: If browse has a Change button visible, then the View button is suppressed.
- Fix: Bug in style (netweb.css) which caused Menu to appear slightly lower, and right, of where expected.
- Fix: Bug setting Field Equate when field is not a field in the dictionary.
- Fix: Bug setting duplicate field in Browse prop:order, when using MsSQL
- Fix: Browse buttons that stopped working, if the browse was inside a form, and the browse had been refreshed after a form-field change.
- Fix: Browse back-filled if Locator type is Position.
- Fix: Corrected generation of Formtype=multipart
- Fix: When doing a chained-login the whole URL is now preserved.
- Fix: Resetting fields when a 'date' field is completed wasn't working.
- Fix: When chaining through an unexpected Login form, in a Frame situation, the Target of the Login button could be set incorrectly.
- Fix: Returning to multi-tab field after lookup returns to the correct tab.
- Fix: Cancel buttons on lookups didn't always return to the Form correctly.
- Fix: Browses without a header, or footer, suppress the <thead> and/or <tfoot> tags.
- Fix: Reset field when date changed was not working.
- Fix: Cookies not being set in IE correctly if it expires on a Friday, or Saturday. (Thanks Jono).
- Fix: Fields primed on insert were being forgotten if a Lookup was done.
- Fix Search, Cancel, Next, Previous, First, Last buttons all use the Button Position settings.
- Docs: Added a new section called Using Browses And Forms on Static Pages to docs.
2) Email Receive
- Fixed a bug with incoming partial packets. Specifically failed when working against a Dovecot server.
Version 4.16 (Beta) (13 Sept 2006)
Acknowledgements: This build would not have been possible without the dedicated effort of a small group of alpha-testers. My thanks go to Chris Cordes, Bram Klootwijk, Marius Røksund, Johan de Klerk, Richard Lee, Wolfgang Orth and Patrick De Laet. If your update is smooth it will be thanks to them, if not, it will be my fault.
Important: These changes may affect your program and stop it from compiling
- >> In the NetWebSource procedures the SendString routine has been renamed to SendPacket. This brings it in line with the other templates. If you have hand-coded any calls to do SendString then you will get a compile Error "Routine not Defined". Make a note of the module, go to that module, and edit your hand-code.
- >> A number of Properties of the WebHandler class have changed. If you have used properties in hand-code, or in template fields, then you may get errors.
For most of the WebHandler properties, the change is the addition of the word .SITE in the name. For example
p_web.allowajax has changed to p_web.site.allowajax
Button text has an additional change, there's now a dot ( . ) between button and text. So
p_web.savebuttontext changes to p_web.site.savebutton.text
- >> In an effort to disconnect the WebServer class and the WebHandler class the use of p_web.RequestData.WebServer.property or p_web.RequestData.WebServer.method is being discouraged.
Where methods in the web server are useful we've added the method to the NetWebHandler class. For example
p_web.RequestData.WebServer.AddStyle becomes p_web.AddStyle
Where properties are being used those properties have been added to the site group. For example
p_web.RequestDdata.WebServer.DatePicture becomes p_web.Site.DatePicture
The following changes should not affect your existing program.
- Implemented new tag of the form <!-- Net:f:filename.ext --> where filename.ext is the name of a (text) file. This "includes" the specified file at that spot in the HTML page.
- When parsing static, or dynamic pages, the <!-- NetWebServer --> tag is removed from the page
- Site-Wide buttons support added. You can control button look from the WebServer procedure, Settings, Buttons tab.
- Added "File Upload" as entry type for Forms.
- NetWebSource procedures/tags can now be refreshed asynchronously from a timer.
- HtmlCharset is now a property of the web server. Defaults to ISO-8859-1.
- InitForm routine added to the generated form code. This allows for default UpdateFile, UpdateKey and KeyField parameters to be set in the form, and thus not passed by the link. See FAQ, W4 for changes.
- Routines generated for all the form "cells" (ie all prompts, values and comments). This allows all cells to be updated asynchronously, triggered by the completion of any field on the form.
- Parameters can be passed to Browses-Embedded-on-Forms (passed via the Value Queue).
- Refresh Window when Date Changed is obsolete, and removed. Use "Reset fields" instead.
- Date Lookup button uses standard Lookup button settings.
- Ability to "reset" one field on a form when another is changed has been implemented. Especially useful for Dropdowns.
- Dropdowns now have an "Order" field, so you can override the default order.
- Dropdowns support INNER Joining on a "Linking" File.
- Checkboxes on a form are no longer added to the Form as a HIDDEN field (to hold the False Value). The False value is set in the ValidateUpdate routine.
- Lookups now display the "description" field in the comments column (if it's blank). If the user types in a code the description is updated automatically. TIP: If (in the dictionary) there's a key on the Description field in the lookup file, and the user types a Description into the code field, then the entry field, and comment fields are both updated.
- Browses are "back-filled" by default.
- Embedded HTML now defaults position if entered incorrectly.
- Browses disable First / Previous / Next / Last buttons.
- Added .LoginChanged method to NetWebHandler so there's a convenient embed point in the WebHandler procedure when a person logs in, or out.
- Added DeleteSessionValue, and DeleteSession methods to NetWebWorker class.
- If user has to be logged on to see a page, and hence is redirected to the Login page, then when pressing "Login" it now "chains" to original request (rather than going to the default first page).
- Changed the CallForm generated procedure so that the URL is checked before the File handle when deciding which form to call. This allows for multiple Form procedures on the same File.
- Form template layout simplified, and "flattened".
- After doing an Insert or Update, the file fields are copied into the Value queue. This allows for fields set by a trigger (in the ABC code, for example an AutoNumber) to be used by subsequent procedures in the thread.
- Hidden field "LookupFrom" has been changed to "FromForm"
- Changed some equates in netweb.inc (the Form Stage equates) so they are all on their own "bit". Should have no impact on existing apps, unless you were depending on the value of the equate.
- Server-side validation on form fields (REQ, Numeric etc) is only performed if the Field was visible to the user.
- Corrected some internal code generating a double ?? when using some tags.
- Corrected Browse bug where Next / Previous didn't work if sort column were all the same value.
- Added URL support for conditional images in a browse.
- Updated the explanation of Tags in the docs.
- The documentation for Reports has been expanded considerably.
- Fixed bug if Column Headings were turned off, and Sorting was set to "Server" or "Client".
- Example 7 updated to show using Cookies to store the login & password in the browser.
- Extended Examples 13 and 14 to show using an existing report that has "options" on the screen, and a "Pause" button.
- Example 14 corrected to fix some weird header formatting.
- Example 23 added which shows how to do a browse on one table, but go to a form on a related table. (1-to-1 style relationship).
- Example 24 added showing how to chain from one form to another.
- An automatic re-direct now happens with a POST as well as with a FETCH.
Version 4.15 (Beta) (17 July 2006)
- The Open Files code in NetWebBrowse has been moved higher in the code so that you can include file fields in column headers etc.
- Added optional routines for opening, closing, saving and restoring files in NetWebSource and NetWebPage procedures. Note that the Routines are generated (and called) in NetWebPage, and are generated, but not called in NetWebSource.
- Translate Tab added to WebServer extension, Settings tab. Use this to change text for whole site.
- Incorrect generate of %FormFieldTrue (for checkboxes on form) corrected.
NOTE: To make use of this new script file copy it from one of the shipping examples to your \web\scripts folder.
- The syntax for calling a form directly from a browse has been changed slightly. The FAQ, question W4 has been updated to reflect the new syntax.
- Corrected template bug with generating Radio buttons "checked" attribute.
- Fixed incorrect handling of key fields containing the word "GUID". If you are using Replicate GUID fields (or other Guid fields containing binary string data) then you must put the name in the webServer property _BinaryGuid. For example:
ThisWebServer._BinaryGuid = 'guid'
- Added CreateButton method to class to make code cleaner.
- Added class (in CSS) for Lookup Buttons - default is LookupButton.
- Added "More Assignments" button when doing a lookup (see FAQ, W21)
- Added support for @D2 dates on Forms. See Basics doc for more info. NOTE The Calendar2.js script has been updated, Calendar1,js and Calendar3,js have been deprecated, and Calendar6.js has been added. Be sure to copy these into your application's web folder.
If you get a Compile Error in your WebServer procedure, then go to the NetTalk Extension in the WebServer procedure, and reset the Date Picture to either dd/mm/yyyy or mm/dd/yyyy.
- In Forms moved the call to StoreMem routine to the "Pre" calls to the form. This prevents "loc variables" (stored in the session queue) being overridden on return from a lookup or elsewhere.
- Added support for NetWeb Procedures in other apps in a Multi-Dll situation. See Basics Doc, Multi-DLL section for details.
- Fixed support for Relational updates & Deletes.
- On Browses the Unique, Unchanging Key field has moved from the Form tab to the General tab. This is because this key is used when the browse is used as a Lookup.
- Fixed bug where View button (under browse) was not visible when Browse in lookup mode.
- Browse in Form seems to be working pretty much 100% now. For now I don't recommend having more than 1 browse on a form, if the browses are page loaded.
2) Changed the FTP control template to use the specified progress control, rather than always using ?progress.
Version 4.14 (Beta) (29 May 2006)
- The introduction of cookies, and especially the Session cookie, has meant that some of the old ways of doing a logout (by deliberately resetting the Session) will no longer work.
Question W17 has been added to the FAQ, and examples 3 and 4 have been updated to reflect the new, complete, logout techniques you can use.
Version 4.13 (Beta) (26 May 2006)
- Suppressed Windows style menu bar if person is not logged in, and all menu's require person to be logged in.
- Added code to handle reports where there are no records. See example 13.
- Fixed problem with OnLoads on NetWebPage
- Allowed Style to be set on individual Row Buttons in a browse
- Added Target to Cancel button URL
- Added Target to Browse Row buttons
- Fixed case where ProcessLink overridden in Webhandler leads to blank parameter.
- Fixed descending numeric sorts on browses
- Automatic detection of numeric browse columns leads to case sensitive sort.
- Now generates Cancel code on lookup if Cancel button exists, even if Select button doesn't exist.
- Clicking Cancel on lookup now returns to correct form.
- Fixed problem where special buttons did not work if they had no text.
- Fixed browse refresh when first record is added
- Fixed browse refresh when last record is deleted
- If a locator field exists, then it gets focus on the browse.
- Fixed Focus selection on Forms.
- Added support for cookies (see Basics doc)
- Added a checkbox so that HTML can be included in browse columns (if desired.)
- Fixed problem where form returned to home-page missing http:// part of URL.
- Fixed bug with Browse that only has VIEW button, not Insert/Change/Delete.
- Added ability to override message "no records" on reports.
- Clicking LAST on page loaded browse with less than 1 page of data, now displays the data not "no records found".
- Added "Close" button option to Browse.
- Added "Select Item" example (19)
- Added "Multi-DLL" example (20)
Version 4.12 (Beta) (2 May 2006)
1) NetFTP control templates
- Fixed problem where template was expecting a pActive parameter as the seventh parameter. Older procedures didn't have this parameter, and so a compile error resulted.
Version 4.11 (Beta) (21 April 2006)
- Changed browse position when returning from form. It now returns to the browse as it was before going to the form, rather than starting the browse page from the record just changed.
- Fixed sort order getting lost when returning from Form.
- Browse Locators on date columns now works.
- Fixed URL generation on Auto-Lookups.
- Added support for apps that don't have "Defer Opening Files Until Accessed" turned on.
Tip: Turn on this switch if you can, otherwise performance may suffer.
- Fixed PDF reports in Firefox browser
- Fixed problem where locator was attached to no browse field .
- Fixed problem where Last then Previous triggered "no records"
- When sort orders change, Locator is cleared
- Fixed a bug with Previous going back x-1 instead of x records.
Notes: In 4.10 the behavior of the "read-only" checkbox, for Forms, for Dates and Lookups has changed. The Read-Only box now means that the field is Read-only and cannot be changed, either via typing, or by a lookup button. If you want the previous behavior (where the user could only change by using the lookup) then tick the new option "Force user to use lookup". Remember to un-check the Read-Only box.
Version 4.10 (Beta) (12 April 2006)
- Fixed an issue where an email with a single base64 encoded attachment could be missing up to the last 5 characters.
- Fixed bug where large white space could be sent if first item in HTML packet was a tag.
- Fixed bug with Totaling where the column contained formatting.
- Fixed bug with packet length when picture used in column header (could affect next/prev buttons and sort orders.)
- Fixed possible GPF with badly formed "direct to form" link.
- Fixed regression with Server-side sorting
- Fixed some bugs in the examples.
- added 'jump straight to lookup' option on forms.
- added "Auto lookup on Insert" option on form fields.
Version 4.09 (Beta) (05 April 2006)
- Removed AUTO attribute that caused a problem in C5.5
- Tweaked the template & class so that if the user is not logged in, but links to a page that requires a login, then it automatically redirects to the login page.
- Added key fields to view of Browse
- Added additional HTML embed points
- Added support for 'Other' buttons in Browse
- Fixed problem with 'next' button when Browse has no Form.
- Changed Browse to use POSITION instead of key fields. More accurate paging on SQL Views.
- Added URL option to browse columns.
- Embeds of HTML 'after heading' and 'after sub heading' work even if headings are blank.
- Sort parameter changed from 'Sort' to 'procedure_Sort' so that browses can be chained together.
- Added "Display" as a field option for forms.
- If date field is set to 'Read Only' then lookup button is suppressed.
- Fixed application of button conditions if Insert/Change/Delete/View buttons not "in row".
- Fixed bug when there was a pipe ( | ) in the external field name.
- Added Example 13 and Example 14 (PDF reports)
- Added 'Browse' as Form Field type. [ work in progress ]
2) FTP functions
- The synchronous functions FtpUpload and FtpDownload functions now have an extra (optional) parameter that can specify to use Active or Passive mode. See 3rdParty\Examples\NetTalk\FTP Template for updated examples.
Version 4.08 (Beta) (24 Mar 2006)
- Fixed issue where IDE could GPF if there was a Drop-Down list box on a form, and you did a right-click source in the App tree.
- Reactivated the Drop-down filter field which had gotton itself disabled.
- Asynchronous browses re-instated
- "Unique Key Name" now stored, and enforced.
- Added support for Multi-Proj
- Fixed a couple of template bugs in multi-records-on-one-row
- View-Only forms have a "close" button not a "Cancel" button
- View button added to Insert/Change/Delete above or below browse.
- Changed prompt for lookup page from "Page" to "URL" for consistency sake.
- Header & Footer of empty browses suppressed.
- Fixed priming of drop-down value where value was a prefix, or suffix value.
- Added conditions for Insert / Change / Delete / View buttons
- Added support for pictures in form fields. (Pictures are not enforced during typing though.)
Version 4.06 (Beta) (16 Mar 2006)
- NetWeb.JS file has been updated - copy from any of the examples to your Scripts folder.
- NetWebForm procedures : URL on Save/Cancel has been separated into URL on Save and URL on Cancel.
- Browse column can be a URL or MailTo: clickable link.
- Updated Example 3 to show various menu login and logout options (based on an example by Roberto Artigas)
- Added "onClick" ability to Menus and Menu Items.
- Fixed "maintain sessions" on Menus that went straight to a URL.
- Beginnings of FAQ document added to documentation
Updates & fixes
1) Examples - Minor updates & tweaks 2) NetWebClient - Minor tweak to Proxy Connect code. 3) NetDemo - Put back a simple Web Server example.
Version 4.05 (Beta) (15 Mar 2006)
- Added support for Arrays. NOTE: Arrays are only supported in C6 or later.
- Added support for unique key not being a Primary key
- Corrected WebServer TXA included in install set
- Added template support for filter on droplist View
- Added support for NAME attribute on file fields.
Version 4.04 (Beta) (13 Mar 2006)
- Fixed template bug - initial sort order Case
- Fixed regression - Position locator
- Added option for server-side column sorts to be case sensitive, or case insensitive
- Fixed inaccuracy in "count" total type
- Added column formatting to browse totals
- fixed bug with View Joins when relationship one-sided.
- New Demo page available at:
2) SSL - Can switch a NetSimple Server connection from non-secure to secure, using the self._SSLSwitchToSSL() method. 3) NetWebClient - added new code to allow the Web client to connect to HTTP proxies, when requesting HTTPS pages. These then switch to Secure mode on the fly. For now you'll need to set self.CertificateOptions.DontVerifyRemoteCertificateCommonName = 1 and self.CertificateOptions.DontVerifyRemoteCertificateWithCARoot = 1 to use this feature. 3) NetWebClient - added self.ProxyAuthentication and added an example of using this in the NetDemo application.
Updates & fixes
1) NetWebClient - added new code to allow the Web client to connect to HTTP proxies, when requesting HTTPS pages. These then switch to Secure mode on the fly. For now you'll need to set self.CertificateOptions.DontVerifyRemoteCertificateCommonName = 1 and self.CertificateOptions.DontVerifyRemoteCertificateWithCARoot = 1 to use this feature.
Version 4.03 (Beta) (10 Mar 2006)
- Change requiring a change: The Default Sort Order for the browse has changed from an Entry field on the Options tab, to a button on the General tab. Unfortunately all settings on this field will need to be redone.
- Fix to allow " in form field values.
- Fix to Memory Forms called after File forms
- Additional Embed points added to template
- Allowed "contains" filter on browse used as a lookup.
- Width & Height of Text fields now settable
- Scroll bar on read-only text boxes working
- Class added for <body> tag (NetWebPage settings.)
- property added for generic page <Body> class, ".BodyClass".
- netweb.css updated
- Added SendEmailFromWebBrowser example
- Removed duplicate META tag from header.
- "View" button support added
- "blank until locator" bug fixed
- HTML tab expanded on NetWebPage and NetWebForm, and added to NetwebBrowse
- Much of 'Layout' tab in NetWebForm now obsolete.
- Added URL option to MENU. ie Click on Menu itself causes Page Load.
- Removed old WebServer1 Template Utility.
- Added WebPageName option to Browse and Form
- Added RightJustify, CenterJustify and LeftJustify styles to CSS file. Use these for Browse Column Styles.
- Added Browse Totaling. (Note total only totals what is visible to the user.)
- "Smarter" behavior when moving from browses to forms, lookups, view etc.
- Fixed issue where pressing enter could load the form page (when it's not wanted)
- Added - focus on form fields improved - when form opens, and when returning from a lookup.
- now allowed to suppress Select button below browse (if select button in row.)
Updates & fixes
Version 4.02 (Beta) (1 Mar 2006)
- All browse functionalities are now set as local variables in the Browse procedure, and can be edited in Embed code.
- Contains Locator added to types of locator supported
- Table Blank until Locator entered option added to browse
- Template message while waiting for locator added
- Added methods to prevent script injections
- Added new "special" folder, default is 'LoggedIn', user must be logged in before static pages, or files, from this folder will be served.
Updates & fixes
- Lookup now working correctly.
- Changed dynamic page type to html from xhtml
- Server-Side sorts now case-insensitive
- Default Locator field now generated correctly, if entered.
(Beta) (24 Feb 2006) -
the 117th release of NetTalk
1) FAQ G7 - Updated to included changes needed for moving from NetTalk 3 to NetTalk 4 2) SSL - Client and Server SSL support added with Remote Certificate Verification.
For NetSimple - see NetSimple.Open
Note: The default SSL options now include:
• Remote Certificate Common Name must match Server name
• Remote Certificate must be issued by an Issuer found in CARoot file (which defaults to '.\CARoot.pem'
This implies you must ship a CARoot file or change this option.
These options are configurable.
(See also FAQ G8)
3) SSL Examples - NetDemo updated to included SSL options for NetSimple Client, NetSimple Server, Email Sending (SMTP), Email Receiving (POP3), Web Client (HTTPS), Web Server (HTTPS Server). 4) Secure Email Sending (self.SecureEmail) has now been split into two properties:
self.SSL - Which is the setting you'll use to make the whole communication use SSL. Gmail uses this option on port 465.
self.SecureEmailStartTLS - This setting will use the STARTTLS option which switches to SSL after performing a non-secure connection but before username/password or email contents are sent.
5) Added multiple IP and/or multiple Network Interface Card (NIC) support to NetAuto.
This now means that the Auto Detection sends a broadcast for each subnet and results in NetAuto working on machines with multiple IP or multiple NICs.
6) Added multiple Network Interface Card (NIC) support to NetGetIPList() 7) Changed almost all the ulongs to longs which gives a speed improvement across all objects. Which can yield speed improvements of up to 20%.
(The only method to have changed is NetEmailSend.CalcEmailName which we don't think anyone will be deriving, as derived code will now be orphaned. There were a few other methods that use ulongs, but these were not changed, as people may be deriving them.)
8) New LinkPoint (Credit Card Processing) Example. Requires a LinkPoint account (or a trial one), a LinkPoint Certificate (real or trial) and CapeSoft's xFiles. 9) Improved Error Number Reporting in NetSimple. Now there's self.Error (the NetSimple Error), self.WinSockError and self.SSLError 10) Email Receive New Option to Leave a Copy of Message on Server (using self.OptionsUseDoneBeforeQ and self.OptionsDelete = false), which uses a queue to keep a list of the emails that have been done before.
Also added self.OptionsDeleteAfterHours - which works with self.OptionsUseDoneBeforeQ to delete old emails off the server.
11) Email Receive Example with the Don't Download Again (self.OptionsUseDoneBeforeQ), which is the same as the NetDemo's TestEmailReceive window, except that it uses xFiles to load and save the queue to an xml file. 12) FTP - Added a new FTP Template for using FTP.
• Easy to use (added using a template)
• One procedure call to upload or download a file
• Can take a queue of files.
• Can work with wildcards
• New FTP Example
13) Another New NetSimple Client & Server Example. 14) Close Apps Client - Changed so that the Shutdown command can pass a message. Also updated the Control template, and added a new embed point before the Init call, so you can potentially change the Service name. 15) Web Server Templates - More details in the NetSimple - Web Server documentation.
Updates & Fixes
1) NetWebServer.Open() - Could lock up (deadlock) if it was the first NetTalk object to be called. Fixed. 2) NetEmailReceive() - Further tweaks for extended Mime decoding. 3) Dial Up - Fixed deadlock (only was in NetTalk for Clarion 6.x ) when pressing adding or editing Dial Up connection entries. 4) Updated SSL DLLs - NetTalk now shipping with SSL DLLs v0.9.8 5) SSL - SSL new default SSL Method (self.SSLMethod = NET:SSLMethodSSLv23) which means that the connection tries to connect in the following order TLS v1.0, SSL v3.0, SSL v2.0 (e.g. Most secure method first) 6) Renamed some of the exported NetTalk DLL functions, so that they conform to either NetSimple... or NetAuto... format. (This will require that the object and DLL use the same versions otherwise "Unresolved Externals" or "Unknown Function Labels" will occur.) 7) FTP - Fix for Apache FTP Servers that require the TYPE A / TYPE I command to be capitalized. 8) General - NET:StdStringSize changed from 81 to 80. Max length of string to use should be NET:StdStringSize - 1 9) Email Send & Email Receive - Fixed some potential memory leaks. 10) Web Server - Fixed garbage collector. 11) Improved support for working as a Service. Added NetOption (NET:SetIAmAService) call (automatically called by SelfService) so NetTalk doesn't shutdown on Log Off. 12) NetEmailSend - fixed a double dot problem where a . could occasionally be incorrectly transformed into ..
Version 3.40 (Gold) (21 June 2005)
1) In NetWebClient object there's a new property:
self.CustomHeader (string(4096)). Which is added to the request header in ._CreateRequestHeader()
Note - must not have trailing <13,10>
Updates & Fixes
1) NetWebClient.TextOnly() - Some of the code was Case Sensitive, when it should have been Case Insensitive. 2) Clarion 6.2 Fix. Slight tweak to Email and News Objects to remove compiler warning message "Warning: Field label is duplicated, first used: _ObjectType" 3) Clarion 6.2 Fix. Recompiled DLL in Clarion 6.2 9046 - which fixes a delete queue GPF issue which was present in 9045.
Requires Clarion 6.2 9046 if you are using this with Clarion 6.2.
4) Template Help Button Fixed. Also made slight tweaks to the install script.
Version 3.29 (Gold) (13 May 2005)
1) NetTalk objects (not NetSimple) have finally been renamed in the documentation to NetAuto objects to prevent further confusion. Similarly the NetTalk protocol has been renamed to the NetAuto protocol too.
Updates & Fixes
1) Changed NetTalk to use our own _NetCriticalSection, as the one in CwSynchC.inc has private attributes which prevent it from being re-used and tweaked correctly. NetGetCriticalSection DLL function renamed to NetGet_NetCriticalSection. If you get compiler errors then see FAQ Article A3 and upgrade to NetTalk v3.29 or greater. (Also changed the DLL to use a reference to _NetCriticalSection) 2) NetAuto - DLL. ,static added to DLL CallBackWindowSrc's variable Static:LastTime used in CheckNotifier Routine 3) NetAuto - Added a work around for Windows Firewall, where the NetAuto objects could sometimes not receive incoming UDP packets at program start just after machine reboot. This resulted in other public instances not being "visible". The work around only gets run if the application starts within the first 5 minutes after boot up, and then it does NetSendBroadcast after 30 seconds, 60 seconds and 300 seconds, to ensure it can see all other instances. 4) NetAuto. Added a slight random delay before sending back a ICanDoBack packet after receiving a ICanDo packet. This improves the chances of not congesting a network with a flood of responses. 5) NetAuto & Template. A new method NetServer.Announce() allows the NetServer.Init(), NetServer.Kill() and NetClient.Init() and NetClient.Kill() to delay the broadcast of new services, so that one can Init all services before doing the Announce(). This drastically reduces the number of ICanDo and ICanDoBack packets during startup and shutdown of NetAuto objects. The template has been changed to accommodate these changes to. Also redundant ICanDo sending has been minimized in the DLL too.
Version 3.28 (Gold) (1 April 2005)
1) New Special Option in the Template "Fix all my bugs". Added 1 April 2005. 2) Added External Run-Time DLL support to the template. Please don't use this unless you know what you are doing otherwise you'll end up with Unresolved Link errors.
Updates & Fixes
1) NetAutoGetServers() - will now return -22 (ERROR:BadOptions) if it is passed a Queue which points to null. 2) Updated NetWeb.tpw & _NetWebServerWorker.FileToSessionQueue() 3) NetOptions now allows you to call SetMaxInstances after the DLL is active, although this won't have the full effect of allowing to have multiple instances on the current machine, but it will allow you to talk to multiple instances on other machines. 4) WinSock Listen function changed to use the WinSock2 SOMAXCONN value when WinSock2 is available. This leads to slight performance increases, and may reduce 10055 errors (WSANOBUFS). 5) DIP - template and examples updated to use dip.capesoft.net - which is a server based in the States. 6) Web Client - Fix if the web server returns just "HTTP/1.1 302" instead of "HTTP/1.1 302 Moved Temporarily". 7) Email Receive - Fixed the code where it would sometime chop off the last five bytes of the text or html portion in a simple email with no multiparts.
Version 3.27 (Gold)
(7 February 2005)
1) NetTalk DLL Source Code is now available for purchase. More information is available here.
(It may take a day or so until it's fully uploaded and can be ordered).
2) New Legacy Email example & new Legacy Multi-DLL example.
Updates & Fixes
1) NetWebClient. Fixed a bug in the _SendCommand() method which affects large POST operations that could cause Index out of Range.
Version 3.26 (Gold) (26 January 2005)
1) Added DLL Version information to the NetTalk DLLs. 2) Added new property to the NetEmailReceive object .OptionsIncludeTextAttachmentsInText which will store text attachments into the text portion of the email. Off by default. Previous versions of NetEmailReceive had this feature on by default, so if you want the feature on (most folk don't) then please set this property to 1. 3) NetEmailSend - Added self.OptionsAttachmentContentType property which lets you override the default Attachment Content Type of 'application/x-unknown'
Updates & Fixes
1) NetCloseApps. Changed the Warning and Shutdown window, so that they display centered, which fixes a bug (only in NetTalk for Clarion 6.1) where these windows were not visible on the second monitor 3) NetWebClient - Fix for some https sites. 4) NetWebClient - now sets the cookie into the cookie property on redirects unless you specify the new property self.OptionsDontSetCookieOnRedirect 5) NetWebServer - updated Web Server Control Template - so that you can optionally see the last transaction, and a log history. Very useful when you are developing a Web Server site. 6) NetWebClient - TextOnly() split into 3 methods. Also clears <script> and <style> HTML tags. 7) Template - #Application changed for NetRefresh (Thanks Arnor). 8) Inversed Index Ranges for String Slicing checked for and fixed in some places. 9) NetRefresh - Added new #At and new parameter to the NetRefresh.Send method. This adds support for the Dynamic Driver. 10) NetDip - Changed self.MyIPAddress from cstring(15) to cstring(16) as it was one character too short, and was loosing this last character in the IP address. 11) NetEmailReceive - Fix for email decoding where Content-Type: text/html & Content-Transfer-Encoding: base64 12) NetSimple - Minor tweaks to the Idle Timeout code.
Version 3.25 (Gold) (7 December 2004)
Updates & Fixes
1) Removed duplicate FTPError property from the NetFTPClientControl object. 2) Template Fix for EmailSend Control Template, which was causing a %NoThisObj error. 3) Added a ReParseSetting() method to the NetWebServerWorker object.
Version 3.24 (Gold) (15 November 2004)
Updates & Fixes
1) Fix to the WebServer Utility Template. Also included the images it uses.
Version 3.23 (Gold) (9 November 2004)
1) Added Useful information about upgrading from NetTalk version 2 to version 3.
Please read FAQ G7 - What's changed in NetSimple from version 2 to version 3
2) NetSimple. Renamed Net:SimpleDataPacket to Net:SimplePartialPacket
(but kept original for backward compatibility - for now. May remove it later)
3) NetSimple. WholePacket handling
Added methods and properties to allow you to send and receive Whole Packets.
This will also allow you to send data to your own applications and preserve the packet boundaries. See NetSimple Methods and Properties. For example self.WholePacketUseLengthField and self.WholePacketSend
4) NetWebServer. Utility Template
Added a Utility template to import in the two Web Server procedures, which includes sample code.
Updates & Fixes
Version 3.22 (Gold) (4 November 2004)
Updates & Fixes
1) NetEmailReceive. _SplitParam and _SplitParam2 parameter change from (String p_String...) to (*String p_String) 2) NetEmailSend Control Template - Setting options to use or not use the Display() and Cursor commands. Also change the FileDialog command to restore path. 3) Template - Further cosmetic changes. 4) NetWebserver - Fixed bug in CreateHeader() where some fields had missing colons. e.g. Connection:
Version 3.21 (Gold) (20 October 2004)
Updates & Fixes
1) Fixed the v3.20 install
As a result of a corrupt file on our website the v3.20 install file was locking on during install of libssl32.dll (at 28%)
The new install file also removes any .tmp file (e.g. ~GLH0433.TMP) that the v3.20 install file created in your /3rdParty/bin folder.
2) Removed Stop from NetWebServer object. (Thanks Robbie).
Version 3.20 (Gold) (15 October 2004)
1) Gold Release. 2) NetWebClient - New Property self.CacheControl. Which can be used like the existing self.Pragma_ property. 3) NetWebClient - Unicode support for translating pages from Unicode to Ansi. New methods. Self.UnicodeToAnsi and self.AnsiToUnicode. (Also added a _NetUnicode class)
Updates & Fixes
(Beta) (13 October 2004)
1) New Web Server example (there's also the one in netdemo.app). Demonstrating in memory web page creation. This new example requires Clarion 6.1 and SelfService, WinEvent
Updates & Fixes
1) NetWebServer - Many tweaks, including a fix for passing "&". 2) NetWebServer - Optimized the Header responses, so that Web Browses can use their Cached pages, if the pages have not changed (304 Not Modified).
(NetWebServer documentation still on the cards).
Version 3.18 (Beta) (7 October 2004)
1) Template - Added Multi-Proj define compatibility.
Updates & Fixes
1) Object Method prototypes changed from (...),string to (...),STRING to prevent errors with multi-DLL apps. 2) NetWebClient - Fix for using HTTPS sites with IP addresses. e.g. https://188.8.131.52/secure/checkout.cfm 3) NetEmailReceive - Tweaks to some of the boundary checking.
Version 3.17 (Beta) (7 September 2004)
1) NetAutoCloseServer - The Process() method has been broken up into ProcessWarningRequest() and ProcessShutdownRequest(). Plus the CloseApp() method is what is called by ProcessShutdownRequest() when the application must be shutdown. See NetAutoClose 2) NetAutoCloseServer - New template option for Support with MessageBox 1.79 so that Messages are automatically closed down, when the application must be shut. (Previously open messages were preventing the application from shutting down). See NetAutoClose
Updates & Fixes
1) NetRefresh. Made the call to BRW.ResetFromBuffer and optional component in the Global Extensions NetRefresh on the Advanced tab. Folk using the ODBC Driver should turn this option on. See NetRefresh JumpStart. 2) NetDemo. Added Regions for the buttons so that they look better in Clarion 6.1
Version 3.16 (Beta) (31 August 2004)
1) NetWebServer. New property .DontSendFile
Updates & Fixes
1) NetOptions. NET:GETDGINSTANCE was not working. Fixed. 2) Installs. Some of the v3.15 builds didn't upload correctly. Re-uploaded in this version. 3) NetWebClient. Fixes the Request URI. This fixes both HTTP and HTTPS problems. 4) NetRefresh. Now works with ODBC driver. (Added call to ResetFromBuffer)
Version 3.15 (Beta) (27 August 2004)
1) NetWebServer and _NetWebServerWorker- New object for creating your own Web Server based applications. Preliminary testing phase begins.
Documentation will follow soon. (See NetDemo for a demonstration for now).
Note: If you were using the old Web Server example, in your applications you should now convert this code over to using the NetWebServer and _NetWebServerWorker objects. (This is particularly important for Clarion 6 apps, as the old Web Server example was not thread safe).
2) Split NetTalk.clw and NetTalk.inc into:
(because it became too large for the compiler)
Updates & Fixes
1) NetWebClient. Added a call to FlushFileBuffers in the .SavePage method. 2) DIP. Fix in the template so you can rename your DIP object. 3) NetWebClient. Fixed a bug where ErrorTrap was sometimes being called twice. 4) NetSimple. Padded a check around most calls to self.Abort to check that the connection was either open (OpenFlag) or the connection was in the process of opening (AsyncOpenBusy) so that we are not calling Abort when the connection is in fact open. 5) NetEmailSend. Moved the automatic .Helo calculation code to below the BuildFromWhole. Also changed the default helo command (if it can't work it out from the From property) to 'helo_is_blank' (for more info see the Helo property in the NetEmailSend property section of the docs). 6) SendEmailControls Template. Removed the setcursor calls with this control template as it causes cursor unnecessary cursor flickering. 7) Logging - Improvements to the logging (DLL, Objects and Template). Including the addition of self.log to each NetAuto and NetSimple object.
(Beta) (30 June 2004)
1) Added links in the docs to the NetSimple Jump Start. 2) Also look at the new features in v3.13 (which was not a public release)
Updates & Fixes
1) NetNewsReceive. Turned the _ZeroByteFixDisable property on by default. As this option should only be used in the Email objects (the News objects parent). Fixes problems if the news server doesn't send the article size in the XOVER response. 2) NetEmailReceive. Fix for UIDs fro COMCast, where they use 3 spaces as a separator. (Tweaked to the _SplitParam method so that it calls _SplitParams2). 3) Email. Increased the UID size from 40 to 80 (RFC says 70), so 80 should be more than enough.
Version 3.13 (Beta) (26 May 2004)
1) NetEmailSend - supports SSL. To use Secure Email simply set the self.SecureEmail = 1. 2) NetSimple - added self.SSLMethod and self._SSLDontConnectOnOpen (see NetSimple properties)
Updates & Fixes
1) Updated the NetDemo example, so that the Email Sending window can send emails to Secure Email Servers (tick on the Secure Email checkbox).
Version 3.12 (Beta) (21 May 2004)
1) First Public Build for Clarion 6.1 EA
Updates & Fixes
1) NetEmailSend. Fixed a bug where if you did not specify a HELO domain, and sent an email from "firstname.lastname@example.org <email@example.com>" the HELO property was being incorrectly set.
Version 3.11 (Beta) (14 May 2004)
Updates & Fixes
1) NetEmailSend. Fixed a bug where if you did not specify a HELO domain, but used a from address of 'Joe<firstname.lastname@example.org>' the HELO property was being incorrectly set to 'example.com>'.
Version 3.10 (Beta) (11 May 2004)
1) First Internal Build for Clarion 6.1 EA
Updates & Fixes
1) NetSimple Server. Fixed a bug where after calling .close the qServerConnections queue was not updated. 2) NetSimple Server. Fixed a bug where after calling .close the NetTalk DLL to NetSimple Object Message processing could get out of sync. 3) NetSimple Client. Fixed a bug where the asynchronous DNS lookup (called on Open) might fail if there were two or more simultaneous opens. This only affected open calls with a hostname (i.e. It previously worked fine for opens with an IP address). 4) NetWebClient. Fix for POST operation, which needed the HTTP:// part included. 5) Template. Changed the priority for the object's TakeEvent calls in ThisWindow.TakeEvent from 6300 to 2550.
Version 3.09 (Beta) (28 April 2004)
1) Added SSL support to the NetSimple and NetWebClient object.
NetWebClient - You can now do a fetch on a HTTPS page (e.g. .Fetch('https://www.clarionshop.com/secure/checkout.cfm')).
NetSimple - Added a .SSL property that when set to 1, will use a SSL connection.
Please note: This implementation does not do certificate checking yet (we plan to add this later on), but it will allow you to communicate and download from secure sites.
Be sure to read about the SSL DLL Distribution also.
1) NetEmailReceive. Changed NetEmailReceive so that text attachments (sent for example from Mozilla Firefox) are recognized as both text and attachment.
Version 3.08 (Beta) (13 April 2004)
1) NetEmailReceive. Added CharSet decoding for file attachments. 2) Added a new NetOptions command (NET:SETNETAUTOLISTENINGPORTIP) that allows you to bind the NetAuto Objects Listening Ports to a specific IP address. This can be useful if you are running multiple network cards, but would only be used in rare situations. (If you look in the Frame of the NetDemo app, example code on how to call this is there - but commented out) 3) Added a Template option to force the linker to include the ClarioNet compatible NetTalk lib file to be compiled with NetTalk. (See the Global Extension - Advanced Tab).
[Please note: NetTalk no longer works with ClarioNet]
4) Added the .InactiveTimeout property to the NetSimpleMultiClient. Please note that if you were previously setting MultiClient.q._connections.InactiveTimeout you now need to use MultiClient.InactiveTimeout (before calling MultiClient.Open).
1) NetEmailReceive. Fix for downloading UIDL lists from PC LAN Suite mail server. (This doesn't affect most Email Servers - including the CapeSoft Email Server). 2) NetEmailReceive. Changed the order for determining the name of the file to save the attachments as. Previous order was Content-ID, filename, name now it's filename, Content-ID, name. 3) SNMP. Fix for the NetSNMP._EncodeObjectID which could GPF. Thanks Ludwig. 4) Template. Fixed the debug logging options in the Global Extension so they work with both Local Mode and Standalone builds. 5) NetSimple and NetAuto (DLL). The internal mechanisms in NetSimple and NetAuto have been honed. (This included the way the FD_CLOSE, FD_WRITE, and FD_READ are handled in the NetTalk DLL, and changed from using shutdown (SD_BOTH) to shutdown (SD_Send) in most cases). Also tidied up the logs and fixed the SO_DONTLINGER option. 6) Internal NetTalk (DLL). Changed the default NetAuto Connection Timeout and Resend Period from 20 seconds to 45 seconds. You can override these values with NetOptions. See the NetDemo for an example of settings that may be useful for slow Internet or WAN usage. 7) NetSimpleMultiClient.TakeEvent. Tweaked and improved. Now it only does one call to NetSimpleReceive (previously it was doing two). 8) NetSimple Client (DLL) - Follow up to the NetSimple GPF bug fix in v3.07 applied this fix to the NetSimple Client as well. (Fixed a bug in the NetTalk DLL regarding FD_READ, which could cause occasional GPFs in Clarion 6)
Version 3.07 (Beta) (26 March 2004)
1) Very Important Change
NetSimple (including Email, FTP, Web, News) - Now uses self.AsyncOpenUse = 1 by default. This means they all use the Asynchronous Open. ie. You need to trap for the NET:SimpleAsyncOpenSuccessful in the .Process() before sending data. If you haven't coded your NetSimple objects to use Asynchronous Open then you will get errors.
This has two implications if you have not already switched over to Async Open.
The call to .Open() is now asynchronous. You'll need to:
a) Modify your code to wait for the Net:SimpleAsyncOpenSuccessful packet in .Process() or the NET:SimpleAsyncOpenFailed in .ErrorTrap() before sending data
b) or set .AsyncOpenUse = 0 after the call to the objects .Init() method. (This will still mean your object is using synchronous open). For more details see the NetSimple.Open() method.
Checking self.OpenFlag is not enough. You'll need to:
a) Check for self.AsyncOpenBusy which is set in calling .Open if the connection is trying to connect asynchronously.
2) WebClient - added a new property called OptionFinishOnEndHTMLTag. This option (if set to 1) will cause .PageReceived to be called if the page we are receiving has no content-length, and the last 7 characters are </html>.
You should not need this on, but the previous versions of the NetWebClient behaved like this by default. This has now been turned off and moved to a configurable setting (which is off by default).
3) WebClient - PageReceive is no longer called if self.PageLen = 0. Instead the .ErrorTrap() method is called with self.error = ERROR:NoDataReceived 4) WebClient - Will now always either call .PageReceived() or .ErrorTrap(). Previously a call to .Fetch() or .Post() could return with self.error <> 0 (and .ErrorTrap was not being called).
In other words you no longer need to check the value of self.error after calling .Fetch() or .Post() as if an error occurs .ErrorTrap() will be called.
5) WebClient - Added the .ServerResponse (long) property, which lets you know the server reponse. See NetWebClient Properties 6) WebClient - Will now automatically redirect 3xx Server Reponses (e.g. 301 and 302) which have a Location: field in the header. (To disable this turn on .OptionDontRedirect).
e.g. Try the following URL jump.capesoft.net which will redirect to www.capesoft.com
(If you run the NetDemo app - see the difference when you press Fetch or Header in the Web Client example with the jump.capesoft.net URL)
7) WebClient - Changed the Default .UserAgent property to be the same as Windows XP. 8) NetSimple - Added extra error handling if you call .Open or .Send before the .Init has been called. You should not be doing this anyway. (ERROR:ObjectInitNotCalled -60) 9) NetSimple - Added extra error handling which will call .ErrorTrap if you call .Open() and a connection is already open. (ERROR:AlreadyOpen -55) 10) Logging - Added an extra command line switch /netnolog which forces all logging off. This is useful if you've added logging options with the Global Template and want to quickly run your app with no logging without having to go to the effort of recompiling. 11) Web Poll Example - Has been updated and demonstrates how to force any proxy servers into not using their caches, but instead contacting the web server directly.
1) Web client - fix so that now the proxy server can be used in Asynchronous Open mode. 2) Web, FTP, Email, NetSimple - Important fix for a bug introduced in version 3.06, which could cause these objects not to work in Synchronous mode. (Basically Synchronous opens were being sent Net:SimpleAsyncOpenSuccessful packets - which (a) makes no sense as a synchronous open by definition is synchronous and so when the connection is made no notification needs to take place and (b) it causes problems as extra packets arrive in the .Process() 3) WebClient added the Port number into the Header Host: field if it is not 80 or 0. 4) NetSimple Server (DLL) - Fixed a bug in the NetTalk DLL regarding FD_READ, which could cause occasional GPFs in Clarion 6. 5) Template Fix - Fix to the template that was breaking any custom made command line switches
Version 3.06 (Beta) (10 March 2004)
1) Important fix for Windows 2000. Sometimes the WinSock returns a Read notification before the Connect notification (FD_READ before FD_CONNECT) on Win2K OS. This will affect the NetSimple objects (In particular Email & FTP). This also sometimes manifested itself as a 220 Email error.
Version 3.05 (Beta) (9 March 2004)
1) Added options to turn on logging to the NetTalk Global Template. See Log Files. 2) Changed the NetEmailSend default HELO command. It now defaults to '' (blank), and if it's still blank when .SendMail() is called, it is set to the domain of the From address.
You can still set it yourself if you prefer.
3) Changed the NetEmailReceive object.
- Added the .EmailListQ and the .DoneListAll() and .DoneUIDLAll() methods. These are descriped in the .DoneListAll() method. This is an alternate way to downloading emails, in that you can now choose which emails to download/delete by setting the fields in the .EmailsListQ queue.
- The above changes also make downloading of emails faster (even if you don't use these new methods and properties). i.e. The conventional way of using the .Decide() method is still fully supported and works just the same as it used to (including the new speed improvements).
1) Added a FTP property called self._DelayAfterStore, which makes the FTP client work better in Clarion 5.5 with CesarFTP Server. (CesarFTP Server 0.99e was giving errors with the NetTalk client, and CesarFTP Server 0.99g was GPF'ing). 2) Fix in the Template for using NetDIP. Previously hung a window when closing the window. More noticeable in Clarion6. 3) Removed HyperActive from NetDemo.app 4) Clarion 6 - the NetTalk v3.04 for Clarion6 build acted a bit strangely, which disappeared after the 3.05 build. 5) Include fix to correct some Win98 machines, that report a hostname that is not the same as the computer name. 6) Fixed the Multiple File FTP Upload example, so that it can put files into a subdirectory.
Version 3.04 (Beta) (28 January 2004)
1) NetEmailSend - replaced the ._AfterErrorTryNextMessage and ._NoMessageAddedYet properties with ._ErrorStatus and ._AfterErrorAction - see the NetEmailSend ErrorTrap method for more details. If you were using these old properties, please swop over to the new properties, which are far more informative. 2) NetEmailSend - now uses Asynchronous Open by default. 3) NetEmailReceive - now uses Asynchronous Open by default. 4) NetEmailReceive - Now has the ability to download emails in batches. This can be really handy if your connection dies half way through a download, so that you download less duplicates. See .OptionsNewBatchEveryXMessages and OptionsNewBatchEveryXBytes. 5) NetNewsSend - now uses Asynchronous Open by default. 6) NetNewsReceive - now uses Asynchronous Open by default. 7) NetWebClient - extended the return size of EncodeWebString from 8KB to 16KB 8) NetDemo - revamped look (see examples). (Also included HyperActive into this demo - but it will still run if you don't have HyperActive). 9) Internal changes: Exposed the NetTalk DLL Critical Section object via NetGetCriticalSection(),long and added ._Wait() and ._Release() to all the objects.
Renamed NetTalkInstance to NetTalk:gInstance
1) NetDemo example - removed the compiler link errors caused by c5asc library file. 2) NetNewsSend and NetNewsReceive - Fixed these objects that were previously failing on news servers like news.softvelocity.com
(11 December 2003)
1) New Dial-Up Networking hand coded example. 2) New NetSimple Jump Start example. 3) Exposed the 168-bit DES encryption and decryption functions in the NetTalk DLL. 4) New NetSimple example which shows how to manage packet boundaries in NetSimple, and also demonstrates the NetDESencrypt and NetDESdecrypt functions. 5) Web Client - extended the size that you can send when you call the .Post() method. Was previously up to 16K including the headers. It's now dynamically allocated.
1) NetEmailSend - Clarion 6 fix for the 221 error that occasionally happened after sending an email. 2) NetEmailSend - fix for the 250 error that could occur when sending multiple emails to an SMTP server that requires authentication. 3) NetEmailSend - internal fix the self._AfterErrorTryNextMessage set to false in RaiseErrorAndTryNextMessage 4) NetSimple Client Open - Fixed a bug which could cause a connection not to report that it could not be opened. The bug did not happen that often but it has been fixed now. 5) NetSimple Multi Client - Removed the unnecessary Dummy Service object. This should have been done ages ago, but somehow managed to remain unnoticed until now. 6) NetSimple Email Receive - Allows for CharSet decoding to work on the full 8192 characters of the Email properties like the ToList, not just the first 1024 characters.
(14 November 2003)
1) All methods in the NetTalk objects have been made VIRTUAL, previously some methods like Init, Kill and TakeEvent were non-VIRTUAL. We've tested this and no embed points are orphaned as a result.
1) NetRefresh - Template fix for using NetRefresh in a Process. 2) Clarion 6 Dial-Up - Fix for Dial-Up Networking. Which previously never worked in Clarion 6 build.
(24 October 2003)
1) NetSimple - Added .LogDataBytes which logs up to this many bytes to DebugView, in the .Send() method, when the application is run with the /nettalklog command line parameter. (Default = 0 = off) 2) ERROR:TimeOut equate has been renamed to ERROR:OpenTimeOut 3)
FTP - The FTP Object has been re-worked. The following is a summary of changes:
- Every call to the asynchronous functions (e.g. GetDirListing, PutFile, GetFile etc). will either call the Done() or ErrorTrap() method.
- These functions no longer return values. They used to have a prototype of (...),long,proc now it's just (...). This means any code you've placed in derived methods for these method will have been orphaned.
- _SetDataRepType() method renamed to _SetType()
- self._CommandInProcess has been renamed to self.Busy - you can use this flag property to see if a the FTP object is currently busy with a command.
- NoOp is included in the above asynchronous functions, so you should first check the self.Busy flag before calling NoOp otherwise it will call ErrorTrap if the FTP object is busy with another command.
- We now suggest you have a case statement in your ErrorTrap (like in the Done() method) should you wish to handle errors based on what command you were trying to issue.
- Jump Start and examples updated.
- Open is now using asynchronous open, although this should make no difference to your code, and will work asynchronously, which means no screen lockups on slow or non-existent sites.
- New method .ProcessIdleConnection() which is called when a connection has been idle for the period specified in self.InActiveTimeout. See FTP methods for more info.
Internal change to the NetSimple object. Added the ._CallErrorTrap() method, but this should have no impact on anyone's application.
1) NetEmailReceive. Fix for 0 length emails that are in your email server mailbox. 2) NetEmailReceive. Another fix, for handling headers better. 3) Dial-Up. Dial-Up uses an internal timer in the DLL to detect new connections. This was only being initialised after you opened a connection. This has been fixed and the timer activates on the NetDUN.Init code now. 4) Dial-Up. Previously when you used Dial-Up and a connection was established, NetTalk would send it's UDP packets to the localhost. This now only happens if you are using the NetTalk objects. (i.e. No UDP packets are sent, if you are just using the NetSimple objects).
(3 October 2003)
1) New FTP Example - Multiple File Upload.
1) NetSimple FD_WRITE: New fix for large sends - up to 12% faster sending. Prevents NetSimple locking up when sending large amounts of data in a tight loop, and is more efficient. 2) Dial-Up Networking fix for Windows XP, where the code could loose track of a connection. This would result in either nothing being displayed in the Connections queue, and/or the Hangup button being greyed out. (Had to implement Critical Sections in C5 and C55 code). 3) Email Send. The HELO command was previously (by default) using HELO microsoft.com
Some email servers in an attempt to block spam are disallowing HELO microsoft.com so we've changed the self.HELO to google.com, but it's best to put your own domain in here.
Version 2.93 (Gold) (19 September 2003)
1) NetTalk DLL based to 80 (IMAGE_BASE 13000000h). Now works for C5, C55 and C60. 2) Send Email beefed up the Message-ID when sending emails. 3) Updated FAQ article on SMTP and MAPI. Also added a CapeSoft Opinion page. Read more: FAQ H4.
Version 2.92 (Beta)
(11 September 2003)
1) Added AutoChat Server (Arnold) to the Examples.
1) Email Receive. Fix for attachment only emails using Base64. 2) Email Receive. Fix for CharSet decoding (function completely re-written). CharSet encoding example:
To: =?ISO-8859-1?Q?Keld_J=F8rn_Simonsen?= <email@example.com>
CC: =?ISO-8859-1?Q?Andr=E9?= Pirard <PIRARD@vm1.ulg.ac.be>
Version 2.91 (Beta)
(20 August 2003)
1) Added Asynchronous Open & the Idle Timeout functionality to the Web object 2) Three new Web examples. Poll.app which polls to check websites are running. WebStrain.app which shows how to loop through multiple websites. WebServe.app and Web Server example 3) Email Send. Added a new field embedlist to the self.DataQueue queue (Net:EmailDataQType). 4) (Advanced) FTP. Added self._IgnorePassiveFailure to get around FTP Servers that always run in Passive mode, but don't know about the PASV command 5) Added the NetSNMP Object for allowing your program to collect or deliver SNMP data. There may still be some changes to this object to treat it as early beta.
1) NetTalk DLL based to 80 (IMAGE_BASE 13000000h) - didn't get done for C55 and C60 - see version 2.93, where this was fixed in 2) Email Send, was not saving the attachmentlist in the self.DataQueue queue. Fixed 3) Email Receive, Quoted Printable decode function caused a Index out of Range error on one email. Fixed.
Version 2.90 (Beta) (4 August 2003)
1) Reformatted these documents so they can be printed in Portrait A4 or Letter. 2) Added a new DLL function NetGetIPInfo which lists the IP address details. Includes Subnet Masks, Broadcast address (although these don't look meaningful), Gateways, DHCP Servers, WINS servers, Adapter Name and Descriptions.
1) Fixed a bug where packets could be left stranded in the In Data queue for the NetSimple objects. 2) Fixed a where sending an email with a ";" as the CC would cause the email header to get split into the body. 3) Fixed Duplicate _ABCDllMode_ & _ABCLinkMode_ errors (in C55 and C6)
Version 2.81 (Gold) (23
Version 2.80 (Gold) (15 July 2003)
1) Web client. Fixed a bug where if there we multiple proxy settings (ie One for HTTP, one of HTTPs, one for FTP etc), the Proxy settings would not be read out the registry correctly. Fixed.
1) NetClient - Added Client side load balancing, so that if you don't specify a ToNetName a random server is picked. This allows you to add more servers (either running on more machines or the same machine) to balance out any work load. self.DefaultServerNetName has been removed and self.UseAnotherServer() has been modified. 2) NetGetFile / NetFilServer - No longer tries another server if the file does not exist on the server. If you want to do this, call self.UseAnotherServer() and then try again. 3) NetEmailReceive - added a .OptionsOnlyGetWholeMessage property, that prevents the object from splitting up the wholemessage data into text, HTML, subject, to etc. It takes away functionality, but it is faster. Also added a .OptionsOnlyProcessHeader property that will process the header and then stop. This means if you want to store the email, but don't want the email split into Text and HTML it will be processed faster, but you can still see the from, to, subject etc. 4) Documentation improvements. (Like we've added menus at the top of each page - Improved Support section with Top 10 questions).
1) NetTalk DLL based to 73 (IMAGE_BASE 12300000h) 2) NetEmailReceive - fixed a bug where the receiving code sometimes thought an email had UUEncode in it when it didn't and it ended up in an infinite loop during download of emails. 3) NetEmailReceive - fixed a bug where a large email that arrives as only a small email (I know this sounds bizzare) would end up having no text in text, html or wholemessage. Changed in _ProcessSetSize(). Also NET:EmailNewDifference set to 262140 (256K) 4) NetEmailReceive - fixed a bug a mime boundary with a ; was not being decoded correctly. 5) NetEmailSend - fixed a bug which could cause emails to be sent out in duplicates, when sending lots of emails.
Version 2.76 (Beta) (12
1) Documentation improvements started (not finished yet, but already enhanced).
1) NetEmailReceive fix - Some files were being corrupted, when they were being extracted from the email to disk. 2) NetEmailSend fix - Fixed the .CalcEmailName() method that was not handling email addresses like (notice comma in description):
"Smith, Fred" <firstname.lastname@example.org>
This function is used to read the ToList, CCList, BCCList and From properties.
Version 2.75 (Beta) (14 May 2003)
New FeaturesVersion 2.74 (Beta) (5 May 2003)
1) First Clarion 6 build. Still in testing phase, but the netdemo application run with all it's features.
1) NetTalk DLL. CreateSendingSockets log info was reported wrong IP address (0.0.0.0) if an error occurred. This has been fixed. 2) New build (c55netnl.lib and c60netnl.lib and template change) for ClarioNet 1.2 support. Previously generated winsock errors during compile. (Note: ClarioNet 1.1 Users - you may need to email us at email@example.com and ask us for the WinSock.lib file if you get compiler errors).
[Please note: NetTalk no longer works with ClarioNet]
3) New template change for Family code. 4) NetTalk DLL CloseInActiveConnections() had a bug fix.
1) The NetTalk DLL now disposes NetAuto packets that haven't been sent after 1 hour. You can change this value using NetOptions. The code for the WAN configuration has a new line (DeletePacketAfterThisLong) see the netdemo app for the code.
1) NetTalk DLL. Fixed a bug connected with receiving data for the NetAuto objects. 2) A whole host of fixes and tweaks to the NetTalk DLL for the C6 build:
WM converted to longs
Group OVER parameters changes
3) FTP fix. A very small number of FTP Servers reports the file size of a download incorrectly. Added self.OnlyUseSizesInDirList which if set to 1 will ignore this and use the filesize of the file from the last directory listing. 4) FTP fix. Fixed a bug where if the FTP Server sent a blank line at the start of a directory listing, you would get an Unknown Directory Format error. 5) NetSimple Client fix. If you connected to an IP address using Synchronous Open and closed the connection without receiving anything from the server, this would generate a -20 Address Not Found error. This has been fixed. 6) NetEmail Receive fix. Some Emails that were produced in MS Office were not displaying the correct HTML format.
1) Email Receive. Emails containing another .eml file as an attachment sent from AOL where not saving the attachments. Fixed.
1) Idle timeouts implemented into NetEmailSend and NetEmailReceive. You just need to specify self.InActiveTimeout (in hs) and mail connections will drop if there is a period of InActivity. 2) Idle timeouts and Async Open implemented into NetDIP object. Also added a self.RefreshInterval property which will automatically call Addme every 60 minutes. 3) NetDIP template allows you to specify fixed strings (in quotes) or a variable. This will probably cause a compile the first time you compile your code with this change. Just open the procedure template and put single quotes (') around your room name. 4) NetSimple Server now supports listening on specific IP address. Some machines are configured with multiple IP addresses. You can now tell NetSimple to just listen on one of those IP addresses. (By default the NetSimple Server will still listen on all IP addresses on the machine). Simply call self.Open ('192.168.2.1', 80) to listen on port 80 on IP 192.168.2.1 5) NetOptions : NET:SETRECOVERYOPTIONS. A new option to configure the NetAuto error recovery parameters. In the netdemo application there is a WAN configuration use of this. This may help optimise large WAN systems.
1) ERROR:WaitTimeOut renamed to ERROR:CallBackWindowTimeOut (Not to be confused with ERROR:TimeOut - which occurs when NetSimple Asynchronous connections timeout on the open phase). 2) NetEmailSend. Fix if the server sends back a multi-line reply. 3) NetEmailSend. Introduced a new property called self.Helo. This is the string that is passed with the HELO (or EHLO) command. Some Email Servers require a full domain name in here. It defaults to 'microsoft.com' which seems to satisfy the servers. 4) FTP - changed the some of the numbers for the FTP equates - as they we the same numbers used by some of the other error equates. 5) NetSimple - changes default Asynchronous Timeout to 9 seconds (was 6 seconds). 6) NetAuto - tweak in the CreateSendingSockets() DLL function, to the algorithm that chooses the windows message number. 7) Email - changed some of the equates to handle longer From addresses:
NET:StdEmailStringSize equate (255)
8) Email Sending - Changed the Quoted Printable encode function to encode a dot (.) if it is the first character on a line. The NetTalk sending object uses the dot transparency prescribed in RFC2821, but some Email Servers are not compliant and so sometimes they report what should be a single dot as a double dot. If you are using Quoted Printable encoding this will no longer occur as the dot will be converted to =2E, which will not cause any transparency problems with non-compliant Email Servers. 9) DUN Control Template. You can now specify the INI file used in the self.ControlTemplateINIFile property in your object's init method after the parent call. 10) FTP Jump Start example updated. 11) NetOptions NET:GETHOSTIPLIST changed. Previously this had to be called after WinSock was loaded (by using a NetAuto or NetSimple object). It can now be called anytime, as it will load WinSock if it's not already loaded. 12) Internal DLL change. Set Max number of connections for each of the following to 1000:
NetAuto TCP outgoing connections
NetAuto TCP incoming connections
NetSimple client connections
NetSimple server connections
1) NetSimple now supports inactivity timeouts (idle timeouts). Set the self.InActiveTimeout to a value in hundredth of seconds and a packet of type NET:SimpleIdleConnection will be sent to .Process() if the timeout is exceeded
1) Email Sending. NET:EMAIL_MaxMailData was reduced to 8192 (was previously changed to 16384 on 16 Jan 2003) as the larger number was causing "Index out of Range" errors when emails had a large number of dots. Also tweaked NetEmailSend._ConvertDots(). 2) FTP some dates where being reported as one year ahead of time, these have been fixed.
1) Started working on Clarion 6.0 support, but it's not all finished yet.
1) Small statistics fix in DLL. 2) FTP some dates where being reported as one year ahead of time, these have been fixed.
1) NetRefresh - now has an advanced algorithm where by it only refreshes tables that need refreshing. There are also more options in both the Global Template and the local procedure templates. 2) NetEmailSend - have extended the size of the packet it was sending from 5120 bytes to 16384. This makes it a bit faster.
1) Minor changes to the template. 2) Some versions of NetTalk were producing -6 (ERROR:WaitTimeout) errors when the NetSimple Asynchronous client connections timed out. This has now been corrected to produce -53 (ERROR:Timeout) errors.
1) NetSimpleMultipleClient - now supports Asynchronous Open too. 2) FTP object has a .CalcProgressOptimized() method, which as increased the speed of the FTP demo between 2 and 10 times faster on LANs.
1) Slight changes to the NetSimple Asynchronous Open Documentation. (see NetSimple.Open - which now includes a 4 step guide to using Asynchronous Open in your applications)
1) New NetOptions call to retrieve a list of TCP/IP properties DNS Servers. See Net:GetDNSList 2) NetSimple Asynchronous Open code finished. Read more about this at the NetSimple.Open method. This is a huge improvement from synchronous open which could lead to your application locking up for between 45 to 90 seconds if the connection could not be established.
1) NetTalk DLL - Changed ERROR:DllNotActive from -1 to -56. This is better as some functions return -1 (false for some OS calls), which was incorrectly reported as "NetTalk DLL not actively initiated" 2) NetSimple sometimes was dropping the last couple o incoming packets when the remote side closed the connection. This has been fixed. This affected the FTP code.
1) Email Send - 3.5 times speed improvement to the queuing algorithm when using Quoted Printable encoding with.
1) Clarion 5 Install - was not registering template and was giving an ACCINI5 error. This has been fixed. 2) Windows NT 4.0 would report "DLL INITIALIZATION FAILED. Initialization of the dynamic link library C:\WinNT\System32\RasMan.DLL failed. The process is terminating abnormally." if Dial-Up functions where used and Dial-Up was not installed. Work around coded to tell Windows NT not to display this message. 3) Email Send - fixed a bug which sometimes caused spaces to disappear in either the text or html part of the email when using Quoted Printable encoding.
1) NetSimple Asynchronous Open. Currently being worked on - not complete
1) A NetEmailReceive fix for some emails that weren't decoding correctly. 2) Important: Fixed Bug introduced in Version 2.5 beta where NetSimple (Client mode) could not open a connection to an IP address (e.g. 184.108.40.206), worked fine with a hostname (earth.microsoft.com). Fixed.
1) New method .SavePage(FileName) in Web object. This method will save the web page (less the headers) to the specified FileName. 2) NetSimple Asynchronous Open. Currently being worked on - not complete
1) Speed improvements to the NetSimple objects, and the examples.
Good tip! - If you are receiving large amounts of data make sure your window has auto-display off.
2) Turns off Registry writing error messages. 3) Fix to NetSimple Server mode. Where the list of servers may not have updated fully when not using the NETTALKLOG=>1 define. This has been fixed to work even when no logging is used. 4) FTP Fix for Novel FTP server (Novell NetWare v5.00 FTP server) that incorrectly reports back 200 after a file delete instead of 250. 5) Corrected some methods in the some of the objects to call self.send() and not parent.send() - functional the code remains the same, but this improves flexibility (for example to log sends). 6) Fixed a clash between NetRefresh and Brian Staff's Xplore template. (Event:User+46 changed to Event:User + 146)
1) Email Receive object. Handles another variation of emails with base64.
1) www.sysinternals.com have released a new version of Debug View. They also have a number of other cool products. (TCPView is also a handy product).
1) NetAuto object Error correction algorithm changes. The connections that the NetAuto objects create are now closed automatically after 30-60 seconds. When data needs to be sent, new connections are opened. Also introduced some changes to the resending algorithm. 2) Internal DLL windows message numbers cycle. 3) Internal DLL changes to the NetAuto resending & acknowledging algorithm. 4) Renamed the external Windows and WinSock function in the DLL - this was causing some people problems when compiling their own apps that used the same names that were exported by the NetTalk DLL. 5) Email Sending. Fixed the problem with the file format returned by the clarion FileDialog. 6) Template change to the length of the DIP server address field from 20 to 80.
1) Sending emails with recipients separated by commas were not working. This has been fixed. Both comma separated lists and semi-colon separated lists work.
1) NetAuto objects have a new property that allow themselves to be seen by their same process. This is a bit of a new thing, so treat it with care. See the NetServer.Init method.
1) Internal DLL: the number of concurrent reading & writing sockets were increased, also the windows message numbers were changed and re-ordered.
1) Ping command added to NetSimple. See the Ping method and the NetDemo example
1) News & Email Receive. Fixed bug where the code was failing to realise a message had been fully downloaded. This happened very seldomly, but has now been fixed.
1) FTP Example in the Demo application now supports switching between the Passive & Active FTP modes.
1) Time Zone Information now works with Daylight saving. This fixes time zone information when sending emails. 2) FTP bug fixed where after the PASV command was issued the FTP server sometimes stopped responding. 3) FTP now ignores the '500 unrecognised command' reply for the TYPE A or TYPE I (ASCII or Binary) commands.
1) DIP Server example updated. The DIP server now stores the entries in a text file, so that if the server is restarted the previous entries are loaded. This example is shipped as a APP file in your clarion/3rdParty/Examples/NetTalk folder as well as an EXE - see the NetTalk download page at www.capesoft.com
Added a new method to the NetEmailSend object called AfterBuildPartsFromParts(). This method is very similar to the AfterBuildFromWhole() method. This method is called if you are using the NET:EMailMadeFromPartsMode option with SendMail() method. It allows you to change two things:
1) If you have created your own DataQueue structure, you can set any new fields that you've added to the DataQueue in this method. (Existing fields will be overwritten by the rest of the code in .SendMail() )
2) The following properties:
self.ToList (NetEmailSend only)
self.CCList (NetEmailSend only)
self.Newsgroups - (NetNewsSend only)
New FTP object properties.
Set self.ProgressAllowLoading = 1 if you want the progress bar to move while a PUT file operation is loading the file and sending it to the NetTalk DLL.
self.TransferState = is set to one of the following during file transfers.
'Loading' - while the file is loaded from disk to the NetTalk DLL. (before the file is sent to the FTP server).
'Uploading' - while the file is uploaded to the FTP Server
'Downloading' - while the file is downloaded from the FTP Server
New FTP object method.
Internal method self._CallDone added.
1) Template change, so that the self.SuppressErrorMsg = 1 is controlled correctly from the extension template option. 2) Fix for the FTP objects, so that if while downloading a file the connection dies, the transfer stops correctly after the ErrorTrap() method is called. Previously it was continuously trying to download the file and creating a hodge-podge of a downloaded file on the local side. 3) Template fix, for the new class routine section. Code is now saved correctly. 4) Email Sending. Made dots transparent. Resolves "500 unrecognised" errors after an email is sent. 5) Pasive mode FTP. Passive downloads and uploads where not specifying either Binary or Ascii type. This meant sometimes Binary files where downloaded in Ascii mode. This has been corrected.
1) Template change. Added a Routine Embed section for New Class Methods and Derived Class Methods. This allows you to add routines at the end of your class methods.
1) Email Sending Object. Fix made to code that joins lines together if a response is split into two packets. 2) Internal Change. Email Sending Object. Fixes made to ._GetHeaderField() method. Prototype also changed from (string p_Header),STRING to (string p_Header,long p_count),STRING 3) Internal Change. Email Sending Object. Fixes made to .CalcEmailName() method. 4) Internal Changes:
Left(Clip(...)) changed to Clip(Left(...)) in DLL functions: NetCharSet()
And in Email objects: NetEmailReceive._ProcessMimeDesc
5) Email Receive Object:
Fixes to the ._ProcessCopyBinData function so that packets which end with <13,10>.<13,10> don't get treated as end of email.
6) Email Sending Object. loc:FileName extended from 80 to NET:StdEmailPathSize (255). The Full File Path remains at 255 characters long.
1) FTP object - closes files in parent ErrorTrap method, if they are open. 2) FTP object - progress of how many bytes to receive fixed if a connection is closed.
1) New EmailReceive properties: self.TextCharSet & self.HTMLCharSet which contain the content Character Set properties. e.g. "iso-8859-1" or "windows-1251" or "Windows-1252" 2) New internal DLL function. NetAutoSetNotifier
1) Email Receive Object. Internal fixes in the ._GetHeaderField() and .CalcEmailName() methods. Also .CalcEmailName() changed from private to public. 2) Legacy. Capitalised the prototypes (e.g. (...),string to (...),STRING) of the following methods:
2) FTP. Changed the PASSIVE command from 'PASV <13,10>' to 'PASV<13,10> (note the space) - which was causing the FTP to fail on some systems. 3) Changes to the template so that any new Net objects you create don't have the service name field in the template options. 4) Passive FTP. Fixed so that you can download zero sized files. 5) Internal changes the template so that new objects that are created don't have to have a ServiceName in the init() method.
1) 4 new methods for the NetWebClient object for processing web strings like:
see the NetWebClient properties section for details.
1) Email and News objects now handle receiving command packets that are split up into 2 (or more) in transit.
1) NetEmailSend object's .EmbedList and .AttachmentList now support double quotes to separate filenames. This means you can supply attachment lists in any of the following 3 formats:
C:\|test2.zip|file with spaces, and commas.txt (Clarion FileDialog Format)
file1.txt, file2.txt (Normal comma separated)
"file with spaces.txt", "anotherfile.txt" (Comma and quote separated)
1) Option in NetOptions to allow you to set the encryption key for your applications. Use NetOptions with the NET:SETENCRYPTIONKEY equate. 2) From now on, encryption only encrypts your data part of the packet and not the majority of the packet.
Important: This means any new application you build with v2.1 onwards will not be able to talk with older versions of NetAuto if you are using encryption.
3) Important: Internal DLL changes. Increased some security issues in the DLL in the NetAuto objects. For this reason we recommend that all your applications run this version or better. The downside of this fix is that some packets (NetAuto protocol packets) from older NetTalk versions may be regarded as corrupt. The following errors are generated in the logs. "n_acceptCanDoTypePacket() : Error. Received a corrupt data packet. Another application may have sent this data or if the packet was decrypted the key may have been wrong. Bytes received = x". 4) Exposed the NETUUDecode() DLL function. 5) Added a property to the NetNewsReceive object - self.NoPosting which is set to 1 if the News Server does not allow posting. This fix also removes a 201 error which was occurring when trying to read the Newsgroups. Also in NetNewsSend if you send to a News Server which does not allow posting self.error = ERROR:NoPostingAllowed in self.ErrorTrap(). 6) New example of how to download all the files in the directory using the FTP object.
1) Changed the Registry functions in the NetTalk DLL to handle SubKey names up to 1024 chars long and Values up to 4096 chars long. 2) FTP - Fixed a bug where FTP files which reported dates like "May 11 03:51" would report as files of year 2000 and not the current year. 3) NetEmailReceive. CharSet encoding fixes. Works properly now. (e.g. decoding ?Windows-1252?Q?Jono_=28hotm=E0il=29=22_?=)
1) NetTalk goes Gold! Version 2 released. (Incidentally this is the 50th release of NetTalk over the last two and half years.) 2) Icons in the NetTalk example applications have been updated. 3) Added two new queues to the NetEmailReceive (and NetNewsReceive) object. self.AttachmentListQ and self.EmbedListQ are queue structures containing the information in the comma separated lists self.AttachmentList and self.EmbedList respectively.
1) Fixed the FTP object so that you can download more that 256 files at a time. The fix involved calling the self.abort() instead of calling self.close() in NetFTPClientControl._CommandPrelim() 2) Changed the NetTalk DLL to allow 1000 concurrent server listening ports, 1000 sever connections, 1000 client connections. If you need more than this please contact firstname.lastname@example.org
1) Fixed a bug in NetWebClient where NetTalk sometimes called the self.PageReceived() before the whole page was receive. 2) Sending Email in a Process Example has been updated.
1) NetEmailSend - ToList, CCList & BCCList now can be both semicolon or comma separated lists. (Previously they had to be separated by commas). 2) NetServer.Kill was previously setting self.service.Thread = 0 before the call to NetAutoSetService. Moved this to after the call as NetAutoSetService was unable to unload the NetAuto service. 3) DLL bug. NetAuto services were not being deleted from the DLL queue. This has been fixed. 4) NetClient.Init calls self.ServersChanged if there are already services in the DLL queue. 5) NetEmailReceive now handle attachments which don't just have alphanumeric names.
1) New Web Builder example. 2) Advanced Programming:
You can now specify the line break characters in the FTP objects by adjusting the value in self._LineBreak, which defaults to '<13,10>'. See the FTP Properties section.
3) Fixed NetEmailReceive to also decode MIME email that have attachments encoded using UUDecode. Previously attachments were processed fine if they were either MIME or UUencode, but not both. 4) Internal property NET:EmailEstimatedHeaderSize renamed to NET:EmailEstimatedExtraWholeMessageSize and increased from 1200 to 8192, this previously caused some embedded attachments not to display correctly. There were also some small code changes with the resizing of the Email that is made up from parts when Quoted Printable encoding was used. 5) The compiled (EXE) of the DIP Server is now available for download for those who don't have WinEvent and therefore could not build the DIP Server APP file. Available from the NetTalk Download Page on www.capesoft.com 6) Fixes to NetEmailReceive so that it can break apart email messages that don't end in a "<13,10>.<13,10>"
1) Updated the DIP Server code in the example folders, to include the new WhoAmI functionality. 2) New NetAuto File Get and Put example code. This shows you how you can use the NetFileGet and NetFileServer objects to PUT files, as well as getting files. 3) Changes to the FTP Directory Listing Code. Fixed the directory listing so it now recognises files with spaces in the filename. 4) Advanced Programming:
Changes to the FTP Directory Listing Code. Restructured the methods so that programmers can more easily override methods that deal with the various different types of directory formats returned from FTP servers. See more details about the FigureOutDirFormat() method.
1) Autoclose server now restores your application if it was minimised before displaying the warning or closing down messages. 2) Allow the InactiveTimer time to be set right at the start of the program. Previously it could only be set after the DLL was all loaded up and ready. 3) Minor fix to NetSimpleMultiClient, when the close() method is called. Omitted to put a "put (self.q)" in the code. Fixed now. 4) Fixed the progress bar indicator when using FTP in Passive mode. 4) New method for the NetDIP. NetDIP.WhoAmI() can be used to find out your IP address as seen by a DIP server.
1) Fixed some of the UDP log file entries, that were displaying incorrect information.
1) Added a new property to all the objects. self.UseThisThread is a advanced programming option allowing you to manually specify which thread will receive the DLL to Object events. For more details see the object properties sections for either NetServer, NetSimple, NetSimpleMultiClient or NetDUN objects. 2) Renamed the Registry Equates so they don't conflict with other peoples applications/temlates. e.g.
Was: HKEY_CLASSES_ROOT long(80000000H)
Now: NET:HKEY_CLASSES_ROOT long(80000000H)
3) Fixed a bug in the NetSimple Server, where the server was unable to reply back to connected clients. This also caused the DIP Server application running at dip.capesoft.co.za to fail. This is fixed now.
1) Minor bug fix to NetEmailReceive regarding saving attachments of some types of emails. 2) Important.
Introduced a new property to the NetSimple objects. self.DontErrorTrapInSendIfConnectionClosed indicates that you want to handle a the error response after calling the Send() method if the connection you were trying to send data on has closed. Some applications that re-use connections very quickly were getting 10038 errors. These were being caused by the object not yet knowing that a connection has closed. For more details on how to use this new property see the NetSimple Property section.
1) Changes in the DLL concerning the way the NetSimple Client Connections are closed. 2) NetRefresh Global Extension allows you to set a minimum time to wait after each refresh before refreshing again. This is useful for busy networks as if lots of people are making changes the other machines tend to slow down with all the NetRefreshs
SMTP Authorised Login - NetEmailSend now supports AUTH LOGIN, the same AUTH method supported by Outlook Express 5.x. This allows you to login to SMTP servers using NetTalk. Two new properties added: self.AuthUser and self.AuthPassword.
2) NetAuto objects now support 168-bit DES encryption. Simply set self.packet.encrypt = 1 and your packet data will be encrypted with 168-bit DES encryption. 3) Emails may now be sent to only a BCC list. Previously you had to have a least one email address in the TO or CC list. 4) Changes in the DLL concerning the way the NetSimple Server Connections are closed. This fixes an error with the PUT FTP functionality.
NetCloseApps - improvements to the Refresh functionality.
2) Internal DLL issue - With the NetAuto objects, if the connection dies the DLL tries again, this is done repeatedly on a sliding scale starting at every 8 seconds and now increasing 50% each time until it reaches 1 hour. (e.g. 8 seconds interval the first time, then 12 seconds, then 18 seconds etc.) 3) Fixed a DLL bug that was introduced in version 1 beta 16. The error recovery mechanism for when sockets are closed by the remote machine when using the NetAuto objects had a bug that caused -20 and -12 errors in NetTalk. This has been fixed.
Web Authentication now supported. See the Web Authorization section for an example of how to use this.
2) FTP clients starts now starts using a random listening port number, which ranges from 1792 to 4400. 3) Documentation explaining how to email PDF reports using Tracker Software's PDFXChange and NetTalk. See the PDFXChange section. There is also an example application. 4) Changes to the way the NetSimple and NetAuto objects close down the socket connections. This should prevent 10055 (WSAENOBUFS) and minimise the number of FIN_WAIT2 and TIME_WAIT states that are reported by "netstat -a". 5) Fixed the way the sockets close down so that the NetSimple connection can be "re-used". This means that there is no longer a limit of 256 times a connection can be opened and closed. This was causing problems in the Email sending from inside a process. 6) The queue of the connections that are connected to a listening NetSimple (Server Mode), qSeverConnections, is now automatically updated. This means you don't have to call self.GetInfo() before using qServerConnections. 7) Fixes to Dial Up Networking Objects. This includes:
a) List of Dial Up Networking connections available no longer missing one connection.
b) Server IP in the connection status no longer missing first digit.
c) Dial Up works for Windows XP.
8) Important: v1 beta 16 requires that both the object and DLL are using the same version otherwise your application will GPF.
Email receive object handles more CharSet decoding (including "windows-1250").
2) New example of using NetSimple objects to implement a proxy application. This is a very useful tool for developing network applications as it can be used to view the the network traffic between 2 network applications. 3) FTP objects improved. Bugs fixed associated with not always receiving a full directory listing or missing the last packet of a "get' file.
Some people worked around this bug by waiting for two Done() method calls. Please note that this bug fix means that the full directory listing is available after the first (and only) Done() method call.
4) FTP Progress bar now also works with the PUT file command. (See the NetDemo.app example for the code on how to display the progress bar). 5) Changes to the parameters passed in the NetSimple.GetInfo() method. If you put code in this virtual method, please find it in the orphaned embed section.
Fixes to the email objects - a few more emails did not split correctly into text & html. And a few attachments were not saving.
Increased stability to Email objects.
Email receive object now handles iso-8859-1?Q and iso-8859-1?B header encoding.
(Advanced topic) Moved some byte and long initialisation (e.g. DefaultDownloadFlag byte (1) ) from the variable definition area of the objects into the Init() method. This now means you can NEW all the NetTalk objects.
Email receive object now handles an email with the same filename in the same email.
HOT Passive FTP now supported.
FTP bug fixed, where FTP was hanging when an FTP was open, closed, and then opened again.
Bug fixed in NetSimple Server. Sometimes the server was closing itself down. This was noticeable in the NetDIP server, which sometimes stopped responding.
We've also updated the DIP server running at dip.capesoft.com (see the demo example or the DIP docs for more details on how to use this). If you are using a DIP server yourself and you need the new EXE build please email email@example.com. (If you have WinEvent you can build your own DIPServer - you'll find the code in the NetTalk example folder).
HOT New example of sending email from inside a process.
Template tweak to allow one to use the "CallABCMethod" ABC template option.
Added UUEncode functionality to the NetEmailReceive objects. This now means that NetTalk can read emails that have attachments encoded with UUEncode. (NetTalk continues to read MIME.)
More tweaks to the NetEmailReceive for improvements to reading emails and attachments.
Added a new method to the NetEmailReceive object called DecideToDelete(). This method allows one to selectively choose which emails should be deleted. This method is called after each email is downloaded, and gives you the option to set self.OptionsDelete = true if you want to delete the email, after looking at the contents of it. If you want to delete all email just set self.OptionsDelete = true before starting to download the emails.
More FTP object fixes.
Added a new method to the NetEmailSend object called AfterBuildPartsFromWhole(). This method is called if you are using the NET:EmailWholeMessageMode option with SendMail(0 method. It allows you to change the following properties after they have been extracted from the whole message:
self.Newsgroups - (NetNewsSend only)
Added the documentation for the NetAutoSendBroadCast and NetServer.ReSync documentation. These functions can be used to refresh the list of available services. This can be useful when using dial-up or mobile computers on a LAN.
FTP object fixes. Some FTP Servers returned data in an unexpected format for NetTalk, this has no been fixed. The FTP object was also struggling with control data returned in more than one packet.
Email Sending object's ExtraHeader property no longer needs the trailing <13,10>, but will continue to work if it does have one.
Added a 2 more error properties to the NetEmailSend and NetNewsSend objects. These new properties (self.ServerErrorNum & self.ServerErrorDesc contain the errors returned by the Email or News Server, if this was what caused the error).
In NetSimpleMultiClient. Added the self.q.SockID which is a unique connection identifier. In fact it is the same as the existsing self.q._connection.SockID. This just make it easier to manage the queue.
Legacy fix. Some legacy applications were GPF'ing when run. This fixes the bug.
Changes to the CloseAppControls Control Template. We've changed the control template. Your existing windows can remain unchanged, or you may choose to delete and add the control template again. The new one allows you to selectively choose which applications to warn or shutdown. Try out the NetDemo example to see this in action.
Fixes to the NetEmailReceive object. Some emails where causing the NetEmailReceive object to "hang". This has been fixed.
Sometimes an Error 10038 message, was been generated when a NetSimple.close() call was placed on a NetSimple connection that had had been closed by the remote side. The error is no longer displayed by the object. But it is still logged in the NetTalk DLL.
We've added a new tab in the Web Client example in the NetDemo application. It gets the time from an atomic time server using the NetWebClient object.
Email Sending now supports sending emails by passing NetTalk the whole message. using self.SendEmail (NET:EmailWholeMessageMode) method.
Email now supports the DeliveryReceiptTo and DispositionNotificationTo properties which allow servers and email clients (respectively) to report back notification of receipt of emails.
Fix for legacy application that were using NetDUN (Dial-Up Networking) and had compilation errors.
NetTalk now works with Web Builder applications. See the Using NetTalk with Web builder section.
Email tweak where if you send messages to a comma separated list ending in a comma, Nettalk was sending the message to a blank email address. A trailing comma in a list is now ignored.
Removed bug in NetServer.Kill and NetClient.Kill which in some cases caused a GPF.
A few small tweaks.
Email & News progress bars. You can now add progress bars and get progress information from these objects. See the Email Methods & Properties sections and look out for the CalcProgress() method.
Change to the NetSimple GetInfo() method. This method can now now report both the number of packets waiting in the NetTalk DLL as well as the number of bytes in those packets.
Bug fix, of the problem where sometimes service A could "see" service B, which could not "see" the service A.
Extra logging project define for applications that can't start using a command line parameter.
Changes to the way the NetTalk DLL loads and unloads. This now means there is no need for the Dummy NetAuto objects that some people where asked to add to their applications, and the dummy NetAuto object that NetSimple automatically added to each application has also been removed. This results in cleaner WinSock use and increased stability.
Tweaks to NetRefresh.
Tweaks to AutoCloseServer. It now shuts down Win2K applications better. Previously it would shut down the application partially, and only when you waved the mouse over the applications window did it completely disappear. It's working much better now.
Tweak to the ICanDo Packets for machines with more than one IP address. Should prevent flickering of windows with a list of users (e.g. Chat or the RemoteCloseApps window), which resulted from NetTalk getting into a loop with on multiple IP machines.
Added a self.XMailer property to the NetEmailSend and NetNewsSend object. This optional property allows you to specify the name of the application that sent the message.
UDP support for the NetSimple Objects.
Minor Web Fix.
We've noticed quite a lot of folks are downloading the latest version of NetTalk (which installs the latest DLL onto your drive) and then run their applications that still use the old NetTalk code compiled into the code. While a lot of the NetTalk functionality continues to work, this is not a good recipe for getting the new features to work in your application. Please do recompile your applications after installing NetTalk.
Also some people who move DLLs and LIB files around, end up running some of their applications on old NetTalk versions. We've included a new section FAQ on how to do a clean-fresh re-install of NetTalk.
Fixed a bug where NetTalk would only load on machines with Dial-Up Networking installed.
Improved NetAuto objects ability to notice if a service on another machine is no longer there.
Tweaked the Nettalk template to fix an error in NetRefresh if Errors were suppressed.
Fixed the template so that NetRefesh works when on the same machine.
Fixed it so that "Deletes" trigger a refresh properly.
HOT Added the NetDUN object. This object allows you to use the Dial-Up connections and dial into Servers.
By the way, there is a new version of SysInternals' DebugView available now.
Revamped the FAQ (Frequently Asked Questions) section. This section should covers the most commonly asked support questions.
Added the NetSimpleMultiClient object, which is a multiple client version of the NetSimple object.
HOT We've added some JUMP START sections to the documentation. These enable to quickly Jump in and Start using NetTalk in your application. The aim of these sections is to give you the step-by-step instructions to get the basic functionality of the objects into your application in 10-30 minutes.
FTP. Got rid of a bug that prevented you from being able to execute your next command from before the parent call in the Done() method. You can now call other FTP commands from before or after the parent call in the Done() method.
Web. Got rid of a bug that prevented you from being able to call the Fetch method with a non-variable string.
Added an option to delete an email without having to download it. See the NetEmailReceive Decide() method.
NetEmailReceive and NetNewsReceive now also support multipart/related. This means it supports embedded files like graphics in the HTML section in the email. The NetEmailSend and NetNewsSend continue to support this feature.
The NetEmailSend.ReconnectAfterXMsgs property now works (this applies to both the NetEmailSend and NetNewsSend objects). Setting this property to something like 20 will cause the connection to the SMTP server to be closed and opened automatically after every 20 messages.
Removed a bug from NetEmailSend that sometimes caused 2 or 3 emails to fail, when sending large numbers of emails, such as in a newsletter application.
Username and Passwords now work in News objects.
Fixed a bug which sometimes prevented email from being received from a Microsoft Exchange Server.
Added the ReplyTo and Organization properties to the email and news objects.
Changed the prototype of the Open() method in the News and Email objects. This probably won't affect you unless you have placed embedded code in your Open() method in an Email or News instance of NetTalk. In which case you old code will now be an orphaned piece of code and you will need to put in it into the Open (string Server,uShort Port=0) method.
Removed a bug from NetEmailSend that sometimes caused 2 or 3 emails to fail, when sending large numbers of emails, such as in a newsletter application.
Fixed the Web object where sometimes the pages would appear not to download. Like at www.navyseals.com
NetSimple - cleaner closing down mechanism.
Changed Stats structure qSimpleServerSockets_Size & qSimpleServerSockets_Bytes to qSimpleServerConnections_Size & qSimpleServerConnections_Bytes respectively
Changed IPcstr to RemoteIP in Net:SimpleServerConnectionsQType
Change with NetSimple packet structure. self.packet.ToPort and self.packet.FromPort replaced with self.packet.OnSocket property. A self.packet.SockID property has been added. Important: You now also need to set the SockID property when replying to a connection if it is different from the one that you received the data on. This SockID property is also available in the self._Connection group stucture as well as the results of calling NetSimpleGetServerConnections (ThisSimpleServer._Connection, qOurConnections)
Changed NetSimple Object IP string size from cstring (81) to cstring (16). This gives 15 characters for the 255.255.255.255 format plus one char for the null terminator.
NetTalk now works when no network card is present, as long as at least one TCP/IP adapter is setup (e.g. NetTalk works when a TCP/IP modem adapter is setup in the Network properties even if the Modem is not plugged into the machine or connected to the Internet.)
Changed DLL and Object packet Structure a bit in NetAuto and a lot in NetSimple.
The NetSimple Close methods now perform a graceful close. i.e. Data that has been sent from the object to the DLL will be sent, and the DLL will send the object data already received that was waiting in the DLL. No new data will be received and the socket will be closed properly once all data has been sent.
Note: If the object's window is closed before the Close() method is called, any incoming data in the NetTalk DLL will not get to the object as the object is closed when the window closes. NetTalk does not guarantee that data waiting in the NetTalk DLL will be sent, after the object is closed down (e.g. the window closed). This means that when using the Email and News objects you still need to keep the windows open until the MessageSent() or the ErrorTrap() methods have been called. This is because of the mail protocol behaves in a synchronous fashion. i.e. a command is sent and a reply is given before the next command is sent. So closing the window before the mail has finished being sent may not guarantee that the mail will be sent.
Added an Abort() method to the NetSimple objects. This kills the socket, and any data (either incoming or outgoing) that the DLL has. It can be used to bail out of an action fast.
Added the CloseServerConnection() and AbortServerConnection() to the NetSimple objects. These close/abort the incoming connections when NetSimple is in the Server mode (i.e. used as a listening port).
New self._Connection.MaxServerConnections property for NetSimple objects when in Server mode. This allows you to specify how many incoming connections are allowed to connect to this listening port. 0 = no limit (default).
New NetSimple.GetInfo() method. This method gives back a list of all connections currently connected to the listening port. This queue is not self-updating i.e. you need to call this method before reading the queue if you want the most up-to-date information.
Fixed News Receive Index Out of Range Error. This also fixes the bug that sometimes caused the NetNewsReceive to crash.
Fixed Email Receive bug that caused it to crash sometimes.
Fixed Web Proxy settings, to recognise when Internet Explorer's proxy settings have not been enabled.
Added the ability to send embedded files (pictures) in the HTML part of an email. See the EmbedList property for the NetEmailSend object in the Methods & Properties section.
New: Added the FTP Client objects.
Fixed a bug that could cause some applications to GPF when the object was closed down.
Added a special Tips for Creating an Email Newsletter Sending Application section.
Added the NetWebClient object, which allows you to get web pages as well as to post data to web page forms.
Removed the -34 error bug, which sometimes happened on closing your application (or window) when using NetSimple.
Added the MessageID and References fields to the Email objects.
Fixed a bug in NetSimple Server, where the Server would respond incorrectly if it were opened, closed and then re-opened.
Added more options to the NetAutoCloseServer template. You can now set the default messages as well as specify the time delay of the windows that popup. Also added a new CloseApp() method, which allows you to run code when the whole application needs to be shutdown.
Added a new embed point after the objects init() call in the Window.init() method. This allows you to decide what actions to take if the NetAuto objects don't initialise correctly. e.g. If the user runs too many instances of NetTalk an error is generated and you can decide to close your application down.
Added the NetNewsSend and NetNewsReceive objects. These allow you to access Net News Servers.
Add the NetDIP objects. The DIP (Dynamic IP) client object allows you to connect to a DIP server, which tells NetTalk who else is using the same application as well as allowing machines which are allocated dynamic IP address to act as a server.
Added the NetRefresh object. This object ensures that data that is changed in one application using shared data is immediately reflected on the screens of all other users.
Added a self.ErrorString property to all objects. This contains the ErrorString of the last error that occurred. This is especially useful when you are running objects with errors suppressed.
Added new examples to both the NetDemo application and also NetRefresh.app
Added a check box to the extension template to allow you to easily suppress NetTalk object errors.
Windows 2000 (Win2K) NetTalk bug fixed. Symptoms ranged from NetTalk application using 99% CPU, to no functionality. Anyway this bug is now fixed.
All logging has now moved to SysInternals DebugView. You can no longer create log files from your application. You must use DebugView.
By the way, there is a new version of DebugView available now.
More comments have been inserted into the netdemo.app example.
Removed the obsolete option to transfer data packets via synchronous transfer. NetAuto objects has been using asynchronous data transfer since version 1 beta 5. Both NetAuto and NetSimple objects still continue to offer asynchronous transfer.
Added a debug trace option to view debug output in SysInternals DebugView application. This is an attractive alternate to generating log files.
Fixed the memory leak that caused the receiving process to hog memory. We knew about this for ages, but it took quite a while to track down what was going wrong in the NetTalk DLL.
Added a few more stats to the NetOptions NET:GetStats function.
Fixed a DLL bug where some packets we not getting acknowledged properly.
Changed the Internal NetAuto DLL compatibility number. Version 1.0 beta 8d (and less) are no longer compatible with this and later versions of NetTalk. This happened as a result of some internal changes to the DLL. All you need to do is make sure you are using the latest version. The NetTalk DLL logging will record an error message if you try to use two different DLL versions at the same time to communicate and no communication will take place on the object layer.
Fixed a bug whereby NetAuto services would not notice that other public services on other machines were no longer available if the machines running those public services were disconnected from the network or were rebooted without allowing the NetTalk process to shutdown gracefully.
Fixed a bug whereby NetAutoRemote only polls a machine once if a hostname is passed to NetAutoRemote. NetAutoRemote now polls each time you call NetAutoRemote where you pass a hostname or an IP address.
Added a FromIP property to the NetAuto packet structure. This can be used to see the IP address of the process that sent you the packet. See NetAuto Data Structures.
Exposed the DirectResponse group property in the NetAuto packet structure. This group stores the data needed to reply back to the sender of the packet. (So far only one person has asked for this information). See NetAuto Data Structures.
Changed the Internal NetAuto DLL compatibility number. Version 1.0 beta 8c (and less) are no longer compatible with this and later versions of NetTalk. This happened as a result of some internal changes to the DLL. All you need to do is make sure you are using the latest version. The NetTalk DLL logging will record an error message if you try to use two different DLL versions at the same time to communicate. No communication will take place on the object layer.
NetEmailReceive. Fixed Email attachment download bug which garbled attachments when they were sent from Web Mail clients. (e.g. www.hotmail.com)
NetEmailReceive. Fixed bug where the Text and HTML content for emails with attachments is sometimes blank.
NetEmailReceive. Emails with attachments are now downloaded about double as fast on a LAN.
New: Send Email Control Template. This template allows you to add email sending functionality to you application even faster than before.
Fixed a bug in the template where you could get the following errors:
(nettalk.tpl) Error: Group %MethodDeclaration(NetTalk) Not Found
(nettalk.tpl) Error: Group %GetNewMethodTreeDesc(NetTalk) Not Found
Added a GetStats command to NetOptions. You can see how many messages are waiting in the DLL, bytes sent / received and DLL queue sizes. See NetDemo for an example.
Minor Bug Fix. If you have an object based on NetSimple and you are using the Server mode, the self.openFlag property will no longer be set to 0 when the connectionClosed() method is called it will remain as 1 if the object was listening on the port before a client connecting to your object shut down it's connection.
We've been trying to tidy up the way a NetSimple object closes down. Things get a bit messy when there is still a packet to be sent, and either the client or server shuts down. We've made some tweaks here, but it may still need some work. If your NetSimple objects are no longer closing correctly please contact us. We've also cleaned up packets that are still hanging around in the DLL after the connection closes.
Some tweaks to the Mail objects. Also made the object recover better when an error occurs while sending a mail message, so that other mail messages stand a greater chance of being sent.
Made the /netdlllogerrors option report all errors in the DLL and not just a selected few. We've noticed that running this option sometimes causes a "WSLINST Internal Error 02". Let us know if you are struggling with this, otherwise you run it with full logging or no logging.
You can now get the DLL version string out the DLL see NetOptions.
Template change to support Clarion 5.5 CR1.
Increased the Attachment list size in the Email objects
Fixed a bug in the NetEmailReceive object where it could not receive emails from some servers.
The NetEmailSend self.AttachmentList now accepts two formats:
a) comma separated files (e.g. 'c:\file1.txt,c:\file2.txt')
b) Clarion FileDialog format (e.g. 'c:\|file1.txt|file2.txt')
See the NetDemo application for an example.
Added a new logging option /netdlllogerrors. See the logging section.
Fixed a bug in sending attachments using Email. Previously this caused a GPF or sent a corrupted file to be attached.
Email attachments are now sent about 60 times faster.
Added the Email Sending and Receiving objects. These objects support SMTP and POP integration with the use of Mime. You can easily send or receive text, html and attachments with these objects.
We've added a new method to the NetClient object. It's called ServersChanged(). It's a virtual method that is called whenever the list of servers change or may have changed. See more in the NetAuto methods section.
Major overhaul of the documentation. We've also simplified and changed the examples.
Changes to the template. If you are using NetClient and NetServer you need to check or uncheck the "Private Service" checkbox in the Settings tab in the NetTalk procedure extensions. Most NetServers should be set to public (non-private) and most clients to private except where your clients need to talk to each other (like in Scenario Two).
Changes to the template. You no longer need to derive your Init() and Send() or Process() or ErrorTrap() methods (or any other methods that are already part of the Base Class). You should rather override these methods. So if you previously derived methods that were already part of your Base Class, you should:
1. move your code out of your derived method
2. delete your derived method and
3. put your code into the methods that are available when you press the Override Class Methods button in the Advanced tab of the NetTalk template.
You also need to be aware that the parent calls are in place in these methods (view the source to see this) and so you will not need to call the parent calls yourself. If you wish not to call the parent call insert a return statement before the parent call. (See scenario one)
Changed the Internal NetAuto DLL compatibility number. Version 1.0 beta 7b (and less) are no longer compatible with later versions of NetTalk. This happened as a result of some internal changes to the DLL. All you need to do is make sure you are using the latest version. The NetTalk DLL logging will record an error message if you try to use two different DLL versions at the same time to communicate. No communication will take place on the object layer.
Fixed the NetTalk DLL to shutdown when the system is restarted or shutdown. WinEvent users will notice that the DLL shuts down correctly now.
NetTalk now supports Legacy applications. All extensions are used in exactly the same way as for ABC applications. New legacy examples (see \clarion\3rdparty\examples\nettalk\legacy and \clarion\3rdparty\examples\nettalk\multi-leg directories)
We've added the Simple Connect Object.
The ChatControls Control template interface has changed to bring it in line with the standard NetTalk object extension. This opens up all the normal embed points for the object.
The CloseApps Control template interface has been changed to bring it in line with the standard NetTalk object extension. This opens up all the normal embed points for the object.
DLL Unloading bug has been fixed.
We've made some changes to the Internal working of NetAuto. Each machine gets assigned a GUID (Global Unique Identifier), a RunID and a Description.
The GUID remains the same for the life of NetTalk on that machine, the RunID increments every time NetTalk is run on the machine and the Description forms a friendlier way of identifying NetAuto instances than just the NetName.
These entries are found in the registry in HKEY_CURRENT_USER\Software\CapeSoft\NetTalk\GUID
You can change the Description but please don't change the GUID or RUNID.
The Description has now been added to the public servers queue. If you open the Chat demo in the NetDemo app you will notice the Description and IP are now in the Chatters list.
The Chat and the CloseApps controls have changed, and we suggest that if you use this control you delete it off your window and add it back again, to make use of the new changes which include the Description and the IP address in the listbox.
This will affect all applications that display the servers list, as the description will be displayed in the servers list instead of the NetName. You can display the NetName by using the code in the NetChat controls and then making the description column have a width of 0.
Changed the Internal NetAuto DLL compatibility number. Version 1.0 beta 5 (and less) are no longer compatible with later versions of NetTalk. This happened as a result of some internal changes to the DLL. All you need to do is make sure you are using the latest version. The NetTalk DLL logging will record an error message if you try to use two different DLL versions at the same time to communicate. No communication will take place on the object layer.
We made some changes to the extension template.
We've introduced a "More Settings" tab. You need to fill in either a unique application name or a service name on this tab. This tab is tailored for the object you are using and there are sometimes other options you can choose on this tab.
If you have applications that use previous versions of NetTalk you will need to go to the windows extensions (right-click on each procedure and choose extensions), for each procedure that uses NetTalk. In the Settings tab you can specify the options you want.
More changes to the extension template.
The parameters of the parent.Init method and the objects Init method have changed. The servicename is now handled by the template.
Added two more options to the DLL function NetOptions. You can now read your Streamed Socket and DataGram Instance Numbers.
Changed the Internal NetAuto DLL compatibility number. Version 1.0 beta 4 (and less) is no longer compatible with later versions of NetTalk. This happened as a result of some internal changes to the DLL. All you need to do is make sure you are using the latest version. The NetTalk DLL logging will record an error message if you try to use two different DLL versions at the same time to communicate. No communication will take place on the object layer.
We have improved the error recovery of NetAuto. If your connection to another NetTalk process is broken (e.g. Network failure or modem reset), NetAuto will try and re-establish the connection immediately, if this fails the old process will be polled every 3 minutes to see if it is alive. In the meantime the "inactive" process is removed from the servers list, which is automatically maintained by NetAuto for you. This prevents you trying to talk to a server, that has failed, but it still allows the server to recover and become active again. You can change the poll-rate via the NetOptions function.
Fixed a bug that limited the maximum lengths of all your public services together to something as low as 81 characters. This has been extended to 1024.
Added a new NetTalk logging option of /nettalklogerrors. This only logs errors that occur at the object layer. This is very handy to run on NetTalk processes that run for hours at a time as only errors are recorded. For more details see the logging section.
Added a hundred's of a second to the log files..
Added a "Simple Connect" mechanism for talking directly to a port.
Speeded up multi-packet communication by about 500%.
Fixed a bug which caused a GPF if you used NetTalk with Secwin (another CapeSoft accessory) and you compiled your app in local mode.
Fixed the code example in the How do I suppress errors section. The second example now reads:
self.SuppressErrorMsg = true ! Ignore all messages
parent.ErrorTrap (errorStr, functionName)
Changed the UseRemoteMachineControls Control Template. You will need to delete the control template and add it again or your will get Unknown identifier ?IPADDRESSES error. This adds the current IP address of the machine you are using to the UseRemoteMachineControls window, a Copy button allowing you to copy the IP address(es) to the clipboard and also a most recently used list.
Improved the NetAutoCloseServer and the NetCloseApps objects. They now allow you to specify the application name, so that when you do a remote close only your application is shut and not all the applications running on your network.
Improved features to the File Client / Server. You can now run the FileClient (NetGetFile) in a silent mode, in which no messages are displayed. This is useful if you wish to download a file without displaying messages to the user. You may want to download and update a data file on a regular basis, and you could use this silent mode for achieving this.
There is also a new method called Done(). This method is called when the download is complete or when an error occurred. Use the ErrorOccurred parameter to determine if an error occurred.
We've also added an application name text box on the Extension for NetGetFile and NetFileServer. This allows you to create a File Server and Client that can only talk to your application.
Asynchronous Sending - Faster response faster transmission.
Acknowledgements and "almost" guaranteed delivery. Error recovery.
We've added an application name textbox to the control extension template. This allows you to create a chat window that can only talk to your application, thus differentiating itself from other NetTalk Chat applications that may be running.
Changed scenario one slightly to make it more clear. Also changed the TimeServer and NetGetTime objects to make them more clear. No functional change.
Changed the protocol of the ErrorTrap() method from (string where) to (string errorStr, string functionName) to make it more clear and to log more information. You calls to ErrorString should now look like:
self.ErrorTrap ('An error occurred while attempting to get the time from a time server', 'TimeClient.Ask')
Various improvements to the documentation.
4) Fixed a bug in Scenario 3 (point 28) : if endPosition < len (clip(self.LargeStr))
(This does not change the functionality of the example app, but if you base an app on this without the fix, your MultiPacketReply method will repeatedly send packets without stopping, if your string smaller than len (self.LargeStr))
5) Renamed the NextPacket() method to MultiPacketReply(). You will need to rename any NextPacket() methods you have derived to MultiPacketReply. 6) Added functionality to allow you to call parent.send() from inside Process(). You can also specify self.sendreply=1 before calling parent.send(). This will then swap the ToNetName and FromNetName and the ToThread and the FromThread. It will also sort out the IP for the reply packet. This is only useful if you want to send more than one data sets from within the process() method, if the first packet needs to be a reply packet. 7) Added more examples. 8) Added new features to NetOptions. Highlights include being able to change the Port Numbers that NetAuto runs on. 9) Changed the Chat Controls to use a picture property of @s80 for the list of servers. (was previously @s10, which is a bit small). This template change will only take affect when you add the Chat controls to your application, it can't fix previous chat controls. To make use of this change, delete your Chat control template from your procedure and re-add it. 10) Added WAN (and Internet) support. You can now connect different machines over the Internet. You can either use the UseRemoteMachine Control Template to add this to your add. Or you can use the NetAutoRemote DLL function directly.
What changed in the Template:
1) Added an extension called Suppress_NetTalk
This is used in the following circumstances;
a) The programmer is making a MULTI-DLL product AND
b) NetTalk is NOT included in the product AND
c) This app is the ROOT DLL.
Symptom of not using it:
Link Error: Unresolved External NetAutoGetNetName in NetTalk.Obj
NetTalk is an ABC compliant class. This means that when you make a Root DLL Clarion includes _all_ ABC compliant classes in the Root DLL.
NetTalk makes use of the DOS and NET DLLs.
This means that even non-NetTalk projects would need to ship the DOS and NET DLLs
This template _removes_ NetTalk from the Root DLL, thus overcoming this problem.
2) Changed the "Use a NetTalk Procedure" Extension Template
This now conforms with all the standard embedding methods for abc objects in
an abc window. Specifically;
a) Go to Embeds, LocalObjects, and the object is there.
b) Go to Embeditor, Full Object prototype visible, and all methods can be embedited.
3) Changed the "Use a NetTalk Procedure" Extension Template Interface
Deriving from a standard NetTalk object has now been moved to an 'Advanced' tab, and generally the options have been greatly simplified by removing all unnecessary.
4) NetTalk now supports Multi-DLL apps. To use in a Multi-DLL app you need to:
a) Add the NetTalk global extension to the Root App.
b) Follow normal instructions everywhere else - i.e. add global and local extensions as required.
First public beta release of NetTalk.