Xojo Conferences
MBSOct2019CologneDE
XDCMarch2020NashvilleUS
Our Blog, Filemaker only, Xojo only, Archive (older)

Follow us on Twitter, Xing, LinkedIn or Facebook.

Windows DLL Loading errors


When you try to load a DLL on Windows via our plugins, you may get back an error message on failure.

Error 126: The specified module could not be found.

You passed an invalid path to the DLL or you tried to load a DLL and it refers to another DLL, which could not be found. For example several DLLs belong together and they should all be in same folder, so Windows can find them. Or a Visual Studio Runtime DLL is missing for the version of the C runtime needed by this DLL.

You can use Dependency Walker application to figure out which DLL is missing.

Error 127: The specified procedure could not be found.

The DLL was loaded, but then an expected function was not found. This could happen if you load the wrong DLL, which doesn't have the functions at all. Or if you have an older DLL, which does not yet export the required function.

Error 193: This is not a valid Win32 application.

Either this is really not a DLL or you mixed 32 and 64bit platforms and got the wrong one. Please make sure you use 32-bit DLL for a 32-bit application and a 64-bit DLL for a 64-bit application.

Error 998: Invalid access to memory location.

The path passed may be invalid and cause a memory access error.

Error 1114: A dynamic link library (DLL) initialization routine failed.

The DLL got loaded, but the initialization routine returned an error message. This may happen with Visual C libraries, if you try to load more statically linked libraries, then you have handles available. Memory may be available, but some handles have a limited list and loading too many DLLs (over 500) can run into a limit.

Connect to Oracle via MBS Xojo SQL Plugin


We recently had a client asking how to connect to Oracle database with MBS Xojo SQL Plugin. So first install Instant Client. For that download it, unzip the folder and put it somewhere you like to have it, e.g. in a C:\Oracle folder. Next you need to add the folder to the PATH variable, so you go to My Computer -> Properties -> Advanced -> Environment Variables -> PATH and add in the list as first item the path to the folder with the instant client libraries, e.g. C:\Oracle\instantclient_19_3.

Now you can use SQLDatabaseMBS or SQLConnectionMBS classes to connect. You may need to specify the database connection string. As we use Oracle, it starts with "Oracle:", so SQLDatabaseMBS knows which driver to use. Next you specify hostname with optional port and service name in format <hostname>[:<port>][/<service_name>]. Please also set option with kOptionLibraryOracle constant to the path pointing to the DLL file. You can either use SetFileOption with folder item, Option() with file path or just let it away and the plugin will look for oci.dll itself. Here some example code:

Dim db As New SQLDatabaseMBS // where is the oci.dll library? Dim fa As FolderItem = GetFolderItem("C:\Oracle\instantclient_19_3\oci.dll", FolderItem.PathTypeNative) DB.SetFileOption(SQLConnectionMBS.kOptionLibraryOracle, fa) DB.DatabaseName = "Oracle:" + "localhost:1521/XE" DB.UserName = "zEPI" DB.Password = "root" if DB.Connect then MsgBox "We are connected. Server Version: " + db.ServerVersionString else MsgBox db.ErrorMessage end if
Please do not hesitate to contact us with your questions.

Under the Radar Podcast


Once again Xojo Inc. sponsors an episode of the Under the Radar podcast.

Originally pointed to by Paul Lefebvre's tweet, I quickly subscribed as they talk about various topics for independent app developers and those episodes are very interesting. They face similar issues as myself and so I like to hear their solutions.

Thanks to David Smith and Marco Arment for their apps and the podcast.

Thanks to Xojo Inc. for supporting the shows.

Do you like this podcast? Or any other good podcasts not to miss?

Combine PDFs 5.4


Monkeybread Software today is proud to announce Combine PDFs 5.4, an update to their popular PDF merge and split tool for Mac OS. With a focus on ease-of-use, Combine PDFs is a lightweight utility which allows anyone to merge PDF files and images into a single PDF file. The user need only drag & drop files onto the program icon. The main window appears, allowing the user to set the order in which the files are joined.

Changes in Version 5.4:
  • Requires MacOS 10.10 or newer.
  • Upgraded to Xojo 2019r1 for dark mode support.
  • Notarized.
Combine PDFs Website

Requires MacOS 10.10 or newer for 64-bit. Older 32-bit version stays available and still works very well.

This application is made with Xojo 2019r1.

MBS Xojo Plugins, version 19.4pr2


New in this prerelease of the 19.4 plugins: Download: monkeybreadsoftware.com/xojo/download/plugin/Prerelease/.
Or ask us to be added to our shared Dropbox folder.

Vision Framework for Xojo


For the next MBS Xojo Plugins, we worked on including the Vision framework from Apple. Our new vision plugin part (in MacFrameworks) covers the whole framework with all 49 classes and one module for globals. We even include the new features coming with MacOS 10.15 Catalina release. All functions can be used asynchronously with delegates for the callbacks. The plugin makes sure those callbacks execute on main thread to avoid threading issues in Xojo.

The Vision framework performs face and face landmark detection, text detection, barcode recognition, image registration, and general feature tracking. Vision also allows the use of custom Core ML models for tasks like classification or object detection.

With Catalina you also get classification, text recognition, attention and object based saliency, animal and human detection.

You can read Apple's documentation here.

Here our new classes:
A few examples are in the make, but please let us know what you'd like to see.

Find Xojo Consultants and Jobs


Looking for someone to hire?

Please visit the Find a Developer website on Xojo.com to submit a job offer or a consultation request. Your job offer is forwarded to a list of Xojo developers, who may contact you for details and make an offer to help.

Looking for work?

If you are professionally working with Xojo as a development tool, you probably already have a Xojo Pro license. With that license comes access to a special forum section for consulting leads, where the requests from the find a developer form above are posted as well as any direct inquires to Xojo's customer support.

An official Xojo Consultants list

We made recently the case in Feedback for an official Xojo consultants list. See Feedback Case 55135. We see the benefits of the FileMaker Business Alliance and would enjoy a similar program for Xojo to increase visibility of the thousands of Xojo developers out there. We tried ourselves to make such a list for Germany, but it needs to be integrated with the Xojo website and accounts.

For example it could be that there is a checkbox in the Xojo account to request being listed on a consulting list, just like the checkbox for the beta program. Xojo Inc. could ask you to provide details for a listing if they accept your wish. By making it dependent on having an active Pro license, they could make sure you can serve all customers as you can use all product features. It may be a good idea to ask for an example of your work to see if you are indeed doing development on a professional level. And if you quit Xojo and stop updating your license, you would automatically be delisted. Great way to avoid having outdated entries in the list.

If you check the FBA requirements, you may see that beside the fee to pay and having a postal address, you need to be one year in business, show customer references and show a sample of custom app work. In the FBA program, you can improve your listing with taking the certification test, but that may be a different topic for Xojo.

One month left for early bird offer to Xojo Developer Conference 2020


Just one month left for the early bird offer to XOJO.CONNECT event hosted by Xojo Inc.
Tickets are available for $799 USD till 15th September 2019.



It will be held March 25-27, 2020 in Nashville, TN at the Sheraton Music City Hotel. Registration is currently $200 off full price till 15th Sep 2019 ($799 instead of $999). Please sign up early to get the best deal.

Check out our conference highlights video if you want to see what it's like - or ask one of the many attendees from the forum!

Looking for a conference this year? Join the European Xojo Conference 2019 in Cologne, October 24-25th.

CURL Up 2020


The CURL conference for 2020 is announced:

curl up 2020 will take place in Berlin, Germany in mid May.

When: May 9-10, 2020
Where: Berlin, Germany
Venue: Co.up Community

Anyone interested in the CURL project is welcome to join the conference!
For details, please check the website.

Maybe we can arrange some developer meeting with our Xojo and FileMaker clients, too?

MBS Xojo Plugins, version 19.4pr1


New in this prerelease of the 19.4 plugins:
  • Improvements for next Xojo version.
  • Implemented own FSRef/FSSpec conversion for Xojo 2019r2 to use older code paths, e.g. for our ResourceFork class for Mac 32-bit.
  • Fixed a crash with DarwinGroupMBS when using UserName function with negative index and a crash with too small array allocated internally.
  • Deprecated CarbonEventsScrapMBS, CarbonApplicationEventsMBS and CarbonWindowsEventsMBS classes.
  • Fixed crash with nil folderItem passed to Read, Constructor or Ping methods in GMImageMBS class.
  • Upgraded KindMBS method in FolderItem class to use newer API.
  • Fixed problem with LaunchServicesFindApplicationForInfoMBS function.
  • Deprecated ApplicationFileMBS and ApplicationCreatorCodeMBS in Application class.
  • Duplicated some Application class extension to ConsoleApplication class.
  • Fixed TextArea.RTFDataMBS declaration for console app.
  • Changed to Application extensions for Xojo 2019r2.
  • Fixed declaration for WinSendMessage in RemoteControlMBS module.
  • Added more constants to NSAppearanceMBS class.
  • Renamed BindedValues and BindedTypes properties in SQLPreparedStatements to BoundValues and BoundTypes.
  • Fixed a problem with loading LDAP.framework on Mac for use in CURL.
  • Added CACertFile property for LDAPMBS class.
  • Rewrote VolumeSizeKBMBS and VolumeSizeMBS for FolderItem class to use newer APIs on MacOS.
  • Added NativePath property to FolderItem for Real Studio.
  • Fixed title property for NSSavePanelMBS to avoid NSException for empty string.
  • Improved pretty formatting for JSON arrays for JSONMBS class.
  • Updated DynaPDF to version 4.0.30.89.
Download: monkeybreadsoftware.com/xojo/download/plugin/Prerelease/.
Or ask us to be added to our shared Dropbox folder.

MonkeyBread Software Releases updated Xojo Kits


Nickenich, Germany (August 6th, 2019) -- Monkeybread Software releases new versions of their Xojo Kits, powerful add-ons to Xojo with additional functionality provided as source code.

We offer six kits aiming to provide additional functionality for iOS projects in Xojo: Addressbook, Events, Audio Player, Encryption, Network and UDP Socket. Our desktop kits Updater, Bugreporter and WebStarter provide valuable code to add to your projects, but may require additional plugins from us.

All Kits have been updated to make sure they work in Xojo 2019.
If you have a current license, bought within the last 12 months, you can use the updates for free.
Otherwise you can order licenses on our websites or in the Xojo store as needed.

The webshop offers the iOS related kits in a discounted bundle named iOS Kit Set. (more)

NativePath vs. AbsolutePath


For years Xojo had three types of paths on the folderItem class:
  • AbsolutePath
    For Mac the old MacClassic style for paths with semicolon as divider. For Windows and Linux this is native path.
  • NativePath, the native path for the OS, so you get the POSIX style path on MacOS. Same as absolute path for Linux and Windows. Introduced with Xojo 2013.
  • ShellPath, the escaped path for use in shell commands with shell class.
AbsolutePath has been deprecated for a while and may finally go with the next Xojo version. Time enough for us to look through thousands (Sic!) of examples and code snippets to find all places with AbsolutePath. Often we had code like this already:

#If RBVersion < 2013 Then
MsgBox "Failed to create file " + f.AbsolutePath
#Else
MsgBox "Failed to create file " + f.NativePath
#EndIf

But it is very annoying to write #If into hundreds of projects.

We got a nice idea to keep projects compiling in Real Studio (doesn't know NativePath) and the future Xojo versions (doesn't know AbsolutePath): Via plugin we add NativePath for Real Studio. All our projects can use NativePath and compile in older/newer versions.

So if you have AbsolutePath in the projects, it may be a good idea to replace it! Same for PathTypeAbsolute.

Hotel rooms for European MBS Xojo Conference 2019 in Cologne


We extended our hotel contingent for August, so you can still get a few rooms for Dorint Hotel.

Monkeybread Software is pleased to announce the European MBS Xojo Conference in metropolitan Cologne, Germany. We meet in the lovely Dorint Hotel in the center of Cologne. The hotel is in the city center and in walking distance to the main station. Beside our two conference days we have accompanying social programme with our dinner event and optional two training days. For the evenings we have casual get-together in the hotel bar or beer garden.

To give you an update, we have already over 50 attendees signed up from 15 countries:
🇩🇪, 🇬🇧, 🇳🇱, 🇫🇷, 🇨🇭, 🇺🇸, 🇬🇷, 🇸🇮, 🇦🇹, 🇮🇹, 🇺🇦, 🇪🇸, 🇯🇴, 🇧🇪, & 🇨🇦.



The schedule:

Oct 23rd: Xojo Training in English
Oct 24th: Conference, first day with dinner event
Oct 25th: Conference, second day
Oct 26th: Xojo Training in German

Registration is open. Attending the conference costs regularly 699 Euro plus VAT, including food and beverage in the Dorint Hotel as well as an accompanying social program.

Sessions are to be held in English. Our conference is conceived as a networking event for the Xojo community. The conference is an ideal opportunity for sharing your thoughts and your own development experience with fellow users and developers.

See also conference website, Things to do in Cologne beside our conference and European Xojo Conference FAQ.

Notarized MBS Xojo Plugins


When loading our plugin for Xojo on MacOS 10.15 Catalina, you may have seen such a dialog.

We now made a notarized version of the download: MBS-Xojo-Plugins193-notarized.dmg

This plugin download is notarized. We removed a few old examples with compiled code, but otherwise the same.
We hope to be able to notarize all downloads in the future for our 19.4 release to avoid friction.

Three months till European MBS Xojo Conference 2019 in Cologne


Just three months left before our conference & training for Xojo starts. The hotel contingent has been extended for another month.

Monkeybread Software is pleased to announce the European MBS Xojo Conference in metropolitan Cologne, Germany. We meet in the lovely Dorint Hotel in the center of Cologne. The hotel is in the city center and in walking distance to the main station. Beside our two conference days we have accompanying social programme with our dinner event and optional two training days. For the evenings we have casual get-together in the hotel bar or beer garden.

To give you an update, we have already over 50 attendees signed up from 15 countries:
🇩🇪, 🇬🇧, 🇳🇱, 🇫🇷, 🇨🇭, 🇺🇸, 🇬🇷, 🇸🇮, 🇦🇹, 🇮🇹, 🇺🇦, 🇪🇸, 🇯🇴, 🇧🇪, & 🇨🇦.



The schedule:

Oct 23rd: Xojo Training in English
Oct 24th: Conference, first day with dinner event
Oct 25th: Conference, second day
Oct 26th: Xojo Training in German

Registration is open. Attending the conference costs regularly 699 Euro plus VAT, including food and beverage in the Dorint Hotel as well as an accompanying social program.

Sessions are to be held in English. Our conference is conceived as a networking event for the Xojo community. The conference is an ideal opportunity for sharing your thoughts and your own development experience with fellow users and developers.

See also conference website, Things to do in Cologne beside our conference and European Xojo Conference FAQ.

MonkeyBread Software Releases the MBS Xojo Plugins in version 19.3


Nickenich, Germany - (July 24th, 2019) -- MonkeyBread Software today is pleased to announce MBS Xojo Plugins 19.3 for macOS, Linux and Windows, the latest update to their product that is easily the most powerful plugin collection currently available for Xojo. MBS Xojo Plugins have been updated and now includes over 2500 classes and 65,000 documented features, and the versatile plugins have gained more new functions:

For DynaPDF we got support for ZUGFeRD 2.0 and Factur-X. Our new example project shows you how to create invoices in PDF format with embedded XML invoices. The Optimize function in DynaPDFMBS got new flags to convert existing images to grayscale, RGB or CMYK color spaces. With kofReplaceJP2KWithJPEG option, you can convert JPEG 2000 images into regular JPEG Images. Calls to our Graphics class integration can now be logged to text file with our trace feature. Drawing strings can now be multi line.

For MacOS we implemented the OpenDirectory framework from Apple, so our new ODQueryMBS, ODRecordMBS, ODNodeMBS and ODSessionMBS classes allow you to query LDAP and Active Directory servers. We still provide LDAPMBS class for a cross platform solution.

We got a new sort method in JSONMBS class. It allows you to sort your values in the array including numbers, booleans and text. The Convert method to convert between JSONMBS and dictionaries, arrays and variants can now include JSONMBS objects in the variants.

In our OpenSSLMBS module we got a new PKCS7SignedData function to read content of P7M files. In Italy digitally signed e-invoices in CAdES format include an embedded XML payload in a signed P7M file.

Our SQL Plugin got new BindedValues and BindedTypes properties for SQLPreparedStatements class, so you can inspect bindings in debugger for your prepared statements. We added constants for CubeSQL libraries. We still provide a built-in CubeSQL library.

With NSWorkspaceMBS.requestAuthorization you can request an authorization for a file manager operation. You may receive an event later with the NSWorkspaceAuthorizationMBS object. Then with NSFileManagerMBS.fileManagerWithAuthorization you request the authorized file manager, which can be used to do privileged function like replacing a system file. Please code sign your app with the right entitlement to use this feature.

Our BarcodeGeneratorMBS class got an upgrade to a newer library version. New barcode types are added for MailMark, UPNQR and Vin. The new WindowsADSystemInfoMBS class allows you to query Active Directory details for current user. For SceneKit on MacOS we got new classes for geometry source, geometry tessellator and level of detail.

Finally we updated CURL to version 7.65.3, DynaPDF to 4.0.30.87, libcpuid to 0.4.1, libiconv to 1.16, libPNG to 1.6.37, libxlst to 1.1.33, libxml2 to 2.9.9, libzint to 2.6.3, OpenSSL to 1.1.1c, PCRE to 8.43, SQLite to 3.29.0, WinSparkle to 0.6.

See release notes for a complete list of changes.

MBS Xojo Plugins, version 19.3pr7


New in this prerelease of the 19.3 plugins:
  • Changed NSColorMBS constructor and colorValue property to always use generic RGB for compatibility to Xojo.
  • Updated DynaPDF to version 4.0.30.87.
  • Updated CURL to version 7.65.3.
  • Fixed HTML tags for JSONMBS.ToHTML function.
  • Patched a bug in Optimize method of DynaPDFMBS class.
Download: monkeybreadsoftware.com/xojo/download/plugin/Prerelease/.
Or ask us to be added to our shared Dropbox folder.

DynaPDF Manual online updated


DynaPDF has it's own documentation, which you can find included with our plugin: dynapdf_help.pdf.

In order to read it in a browser and for search engines to soon index it, I put the manual online as a webpage version:

monkeybread.net/DynaPDF-Manual/

Maybe it helps people. From time to time I can update it with current PDF file.

Embedded links with MBS and DynaPDF in Xojo


Perhaps you have a PDF document and want to add some links to the PDF. You want to add some page links to navigate inside the PDF Document and jump to the right pages or websites. Maybe you want to change the target of a linked url in the document. With the MBS Xojo DynaPDF Plugin for Xojo you can do it in an easy way. Now I want to show you how to do it.

Initialize and load PDF
At first we need to initialized DynaPDF and put, if you have one, the license key in the document:

Dim pdf As New MyDynapdfMBS

Then we call the open dialog for choosing the PDF for import. Next we ask the user where to store the final PDF file. If the saving dialog is canceled (outFile=Nil) the script return.

Dim f As FolderItem = GetOpenFolderItem(MyFileTypes.Pdf)
Dim outFile As folderitem = GetSaveFolderItem(MyFileTypes.Pdf, "PDF with links.pdf")
If outFile = Nil Then Return


Now we create a new and empty PDF at the given file. Pass nil instead to create an in-memory PDF:

Call pdf.CreateNewPDF(outFile)

We subsequently set flags for the import. We want pages (not templates) and get all parts of the pages. By asking to use visible coordinates, our coordinates are relative to pages crop box (if existent) and honors the orientation of the page.

dim flags as integer = Bitwise.BitOr(pdf.kifImportAsPage, pdf.kifImportAll)
Call pdf.SetImportFlags(flags)
Call pdf.SetUseVisibleCoords(True)


kifImportAsPage constant set the import options for import the page as pages and not as a template. With the setting kifImportAll all elements of the source PDF are imported. For example you can only import the bookmarks or all elements except the annotations.

After that we open our import file and import it page wise to our pdf:

Call pdf.openimportFile(f, pdf.kptopen, "")
Call pdf.ImportPDFFile(pdf.GetPageCount + 1, 1.0, 1.0)
call pdf.CloseImportFile


pdf.GetPageCount+1 define the destination page number. We use this to be able to call import in a loop and import new pages after existing ones. (more)

MBS Xojo Plugins, version 19.3pr6


New in this prerelease of the 19.3 plugins:
  • Updated CURL to version 7.65.2.
  • Added LinuxWebViewMBS.IsLoading function.
  • Fixed geometrySourceWithData function in SCNGeometrySourceMBS class.
  • Implemented WebKit2 support for Linux partially.
  • Updated SQLite to version 3.29.0.
  • Updated DynaPDF to version 4.0.30.86.
Download: monkeybreadsoftware.com/xojo/download/plugin/Prerelease/.
Or ask us to be added to our shared Dropbox folder.

Older blog entries:

2019-07-15 Customer Distribution
2019-07-14 MBS Xojo Plugins, version 19.3pr5
2019-07-11 Hotel rooms for European Xojo Conference 2019 in Cologne
2019-07-10 SMTP Server Settings
2019-07-06 RecordSet to JSON and back
2019-07-05 TextInputCanvas for GTK3 and 64-bit
2019-07-03 European Xojo Conference Planning Update
2019-07-01 xDev 17.4
2019-06-28 MBS Xojo Plugins, version 19.3pr4
2019-06-27 MBS Xojo Plugins Mailinglist
2019-06-25 Four months till European MBS Xojo Conference 2019 in Cologne
2019-06-24 DynaPDF 4 for PHP
2019-06-22 JSON Sort
2019-06-22 Xojo Stammtisch in Wien
2019-06-21 MBS Xojo Plugins, version 19.3pr3
2019-06-19 MBS SQLite Extension in version 1.5
2019-06-18 MBS Plugins @ XDC 2019
2019-06-15 Tip of the day: Folderitem items sorted
2019-06-14 ZUGFeRD 2.0 and Factur-X for Xojo
2019-06-13 Ideas from WWDC

Archives

Aug 2019
Jul 2019
Jun 2019
May 2019
Apr 2019
Mar 2019
Feb 2019
Jan 2019
Dec 2018
Nov 2018
Oct 2018
Sep 2018
Aug 2018
Jul 2018
Jun 2018
May 2018
Apr 2018
Mar 2018
Feb 2018
Jan 2018
Dec 2017
Nov 2017
Oct 2017
Sep 2017
Aug 2017
Jul 2017
Jun 2017
May 2017
Apr 2017
Mar 2017
Feb 2017
Jan 2017
Dec 2016
Nov 2016
Oct 2016
Sep 2016
Aug 2016
Jul 2016
Jun 2016
May 2016
Apr 2016
Mar 2016
Feb 2016
Jan 2016
Dec 2015
Nov 2015
Oct 2015
Sep 2015
Aug 2015
Jul 2015
Jun 2015
May 2015
Apr 2015
Mar 2015
Feb 2015
Jan 2015
Dec 2014
Nov 2014
Oct 2014
Sep 2014
Aug 2014
Jul 2014
Jun 2014
May 2014
Apr 2014
Mar 2014
Feb 2014
Jan 2014
Dec 2013
Nov 2013
Oct 2013
Sep 2013
Aug 2013
Jul 2013
Jun 2013
May 2013
Apr 2013
Mar 2013
Feb 2013
Jan 2013
Dec 2012
Nov 2012
Oct 2012
Sep 2012
Aug 2012
Jul 2012
Jun 2012
May 2012
Apr 2012
Mar 2012
Feb 2012
Jan 2012
Dec 2011
Nov 2011
Oct 2011
Sep 2011
Aug 2011
Jul 2011
Jun 2011
May 2011
Apr 2011
Mar 2011
Feb 2011
Jan 2011
Dec 2010
Nov 2010
Oct 2010
Sep 2010
Aug 2010
Jul 2010
Jun 2010
May 2010
Apr 2010
Mar 2010
Feb 2010
Jan 2010
Dec 2009
Nov 2009
Oct 2009
Sep 2009
Aug 2009
Jul 2009
Apr 2009
Mar 2009
Feb 2009
Dec 2008
Nov 2008
Oct 2008
Aug 2008
May 2008
Apr 2008
Mar 2008
Feb 2008
XML: RSS Feed XML: Atom Feed