MBS Plugins 16.4 pre-releases


in this thread I want to post to you what’s new in 16.4 prerelease plugins.

download here:

or ask (in private message or email) to be added to the shared dropbox folder.

If you like our plugin, bookmark, like or forward this thread.
If not, well you can ignore it.

Thanks for supporting our plugin.

PS: for questions maybe post your question as a new discussion?



  • Added Raspberry Pi cameras classes.
  • Updated to DynaPDF
  • Fixed a bug for Japanese with Set Variable checking.
  • Improved DynaPDFOptimizeParamsMBS class for newer DynaPDF version.
  • Changed CIImageMBS.RenderPicture methods. If extend of image is infinite, we use the width and height you provide.
  • Fixed bug with ICDeviceBrowserMBS destructor.
  • Added GetStringsFromDataMBS function.
  • Fixed some issues with new Contacts classes.
  • Added new constructors for WindowsListMBS class to list child windows.


  • Fixed ArchiveWriterMBS.WriteHeader function.
  • Updated to DynaPDF
  • Added WVWebViewControlMBS control. Uses WebKit 2 for 64-bit, but fails back to older WebKit for 32-bit.
  • Added memory storage class to store data outside of app memory.
  • Fixed bug where volume reference number is returned wrong and volume size is not detected correctly.
  • Updated LCMS library to version 2.8.


  • Updated to DynaPDF
  • Added DynaPDFImageMBS.PictureData function.
  • Changed Twain plugin to also load TwainDMS if Twain is not available. This allows you to install open source twain for 64-bit.
  • Changed VolResolveIDMBS, NewFolderItemMBS, NewFolderItemMBS, GetFileFlagsMBS and GetFolderFlagsMBS to work in 64-bit.
  • Changed plugin linking to set install name to be name of plugin part plus .dylib on Mac.
  • Added various CFURLMBS class properties.

if you need SQLite 3.14.1 in our SQL Plugin, you can email me for a copy.


  • Updated to DynaPDF
  • Fixed FileListMBS on Mac to work well with file names who have slash in the name.
  • Merged a few plugin parts so we have less DLLs and plugins load better in the Windows Xojo IDE.
  • Added linux implementation for DirectorySizeMBS class.
  • Fixed an issue with FileListMBS.Item() function.
  • Updated SQLite to 3.14.1.
  • Fixed an issue with Twain scanners when we get several callbacks quickly.
  • Added file path utility functions to NSFileManagerMBS class.
  • Added NSURLRequestMBS.requestWithHandle, NSURLMBS.URLWithHandle, CFStringMBS.stringWithHandle, CFDictionaryMBS.dictionaryWithHandle and CFArrayMBS.arrayWithHandle functions.
  • Added SQLite3MBS.LoadExtension function.

I wish you did the same for OSX. There way too many plugin files generated for a simple app that uses MBS.
It does lengthen the verification process on macOS considerably.

The change affects Mac, too.
And I thought about checking which cocoa plugins could be merged as you use them always together.


  • Reduced number of internal plugin parts for Cocoa plugins.
  • Fixed a possible bug with HIDAPI on Mac when disconnecting device.
  • Added CreateStringMBS function.
  • Added WindowsFileStreamMBS class to list file streams on Windows.
  • Added methods to LargeBinaryStreamMBS to read/write/delete file streams on Windows.
  • Added Linux support to ExtendedAttributesMBS module.
  • Added CalculateCRC16MemoryMBS and CalculateCRC16StringMBS functions.
  • For SQLPreparedStatementMBS, the BindType is now optional. If no type is provided, we detect type by type of value.
  • Added SQLPreparedStatementMBS.Bind variant taking a dictionary.
  • Added SQLValueMBS.setVariant to set value (parameter) by variant.
  • Added SQLCommandMBS.SetParameters to set parameters by dictionary.
  • Added new methods to SQLValueMBS to prevent you from passing String/CLOB/LongText as memoryblock.
  • Added new methods to SQLValueMBS to pass blob/clob/longBinary/longText as folderitem or stream directly.
  • Added new methods to SQLValueMBS to pass memoryblock for BLOB, LongBinary and Bytes.
  • Added variants for ReadLongOrLob method on SQLFieldMBS and SQLParamMBS to read BLOB content directly to folderitem or writeable stream.
  • Changed SQL Plugin to set ODBCAddLongTextBufferSpace to false by default.
  • Changed SQLDatabaseMBS.Prepare to return a SQLPreparedStatementMBS directly, so you don’t need to cast it.
  • Added SQLValueReadMBS.asBLobMemory and SQLValueReadMBS.asBLobString to get blob data easier.
  • Added several overloads to SQLValueMBS setBlob methods to take memoryblocks directly. This avoids conversion to string.


  • Updated to DynaPDF
  • Added Has*Plugin constants to MBS module.
  • Changed NSProcessInfoMBS.NSActivityLatencyCritical to be a shared function to work around feedback case #31877.
  • Added Linux support for SystemInformationMBS.MACAddressMBS.
  • Fixed picture handling to accept HiDPI images for reading, so you can add a picture again to a page with DynaPDF directly.
  • Updated CanonEOSDigital plugin to load 3.x SDK and 2.x SDK. Please tell plugin if it’s 2.x or 3.x as 3.x uses 64-bit integers.
  • Changed email functions to raise exception if you pass email address, subject or message ID including newline character.
  • Added more checks to methods in ServiceManagementModuleMBS module. To raise exceptions with wrong parameters.
  • Fixed a bug with StyledText.RTFDataMBS function handling font sizes.
  • Added Argon2MBS class.
  • Fixed crashes with CURLSEMailMBS when having low memory. Now raises OutOfMemoryException.
  • Improved LargeBinaryStreamMBS to better handle long paths on Windows.


  • Added SplitMBS function.
  • Added InternalSQLiteLibraryMBS.Shell function.
  • Updated SQLite to 3.14.2.
  • Fixed ScreenShotDisplayMBS to return nil instead of black picture on Windows when copying screenshot fails.
  • Added NSLayoutManagerMBS.usesFontLeading property.
  • Added more GraphicsMagick functions.

Just curious and since I can’t find any documentation - what does it do?

I asked the same:

The built-in doesn’t work right on 64-bit as far as I see.
Until this bug is fixed, we have our own.
Christian Schmitz - 15 09 16 - 07:35

the documentation lists it:

I tried this afternoon and it works perfect with regular strings.
Still having issues with strings that have been set with DefineEncoding though.
With the build-in Split, the errors were random. I didn’t have time to check if the errors were consistent. If they are, I’ll try to forward an example within the next few days.

Do you mean strings with the UTF8 default encoding, or strings with no encoding?

I mean without using DefineEncoding. I think they’re otherwise UTF-8 by default no? Or that’s what I always thought,

But what I saw after a quick compile:

With the build-in Split:

  • If I don’t use DefineEncoding, all goes ok on 32-bit but randomly wrong on 64-bit.
  • If I use DefineEncoding (Greek, Arabic etc.) all goes ok on 32 bit but it goes wrong at the same points on 64 bits (black diamonds).

With SplitMBS:

  • If I don’t use DefineEncoding, all goes ok on both 32-bit and 64-bit.
  • If I use DefineEncoding (Greek, Arabic etc.) …
    It went wrong on 64 bit (black diamonds) but not sure if it was random, always at the same points or at the same points as the build-in Split.
    I didn’t test if it went wrong on both 32 and 64 bit

Let me optimize it for other encoding. The code in pr7 tries to convert anything to UTF-8 which may not be needed.


  • Changed AliasInfoMBS properties to be read only.
  • Changed SplitMBS to be encoding aware for 8bit encodings. So you now split a Windows ANSI string and get back Windows ANSI strings.

I tested SplitMBS on DefineEncoded strings and it’s working great for me now with 64-bit compiled Apps.
Great job. Thanks Christian!