I think, I’ve stumbled across 2 major bugs in Clarion 10 (even in build: 12567)
This only happens in Windows 10 (Tried it on Windows 10 Enterprise and Home Edition)
Multi DLL app only
And when the Remove or Build is called from Program Setup embed in the global dll
- Remove(file) command hangs and does not return control back.
- Build(File) hangs and does not return control back. With fewer records it is will work fine. It failed when I have 46000+ records.
The issues were noticed when I was converting our existing application from C6 to C10. It works perfect in the C6 application.
My test apps in the solution
I have created a multi dll app with Data Dll and Exe.
MyDLL.App (Data Dll)
1. REMOVE(FILE) hangs
In my MyDLL > Global Embeds > Program Setup I am calling a procedure called TestDelete. This function will look for a file called SAMPLE.TXT and try to delete it using REMOVE(‘SAMPLE.TXT’). If the Remove command issued, it will hang the application.
2. BUILD(FILE) hangs
In my MyDLL > Global Embeds > Program Setup I am calling a procedure called CreateCDSALES.
This procedure accepts a default long parameter and for the number of records to be created. The function uses STREAM, APPEND, FLUSH and BUILD. If I pass (0-45455) as records to be created, it will work fine. But, any value above 45455 will cause the BUILD(FILE) to hang.
EXCEPTION TO THE ABOVE SCENARIOS
If you call the above mentioned functions the EXE’s > Global Embed > Program Setup, it will work fine
If you call the above mentioned functions from menu options on a frame, it will work fine.
If you try this on a standalone application, it will work fine.
- The compile will produce TestApp.exe and MyDLL.dll
- You may pass the records as command line (Example: TestApp.exe RECORDS=50000).
- The application when run will give you 3 options when (Create CDSALES, DELETE(SAMPLE.TXT), CANCEL).
- You may try the CreateCDSALES OR DELETE(Sample.txt) from the menu
I am attaching the entire project as ZIP (MultiDLL.zip) for anyone to try.
The reason I have to do this is, some of our tables have few million records and it seem to take for ever to convert these files using FM when the structure was changed. Therefore, we always write our own custom code to convert our big file before FM.
Currently, I am stuck as I cannot continue with my C6 to C10 conversion.
Any help/suggestion on this is appreciated.