History / Changelog History: { 2-Dec-2005 Benjamin Maggi's initial notes (with English corrected) from AltME "Rebol3" world, "COM Support" group: The goal I would like to achieve is to have a dialect to "talk" to COM objects. Is this to hard to do ? Do we realy need this ? All questions are welcome. To start I've wrapped a library called DispHelper, made it a .dll and try to see if we can get any thing to work. You can find some alpha releases in this link: http://www.geocities.com/benjaminmaggi/data/COMLib.zip and some documentation here: http://www.geocities.com/benjaminmaggi/doc/comlib.html 2-Dec-2005 Downloaded all the docs and the zipped examples published in "COM Support" group. 3-Dec-2005 Emailed Ben with a few questions and to see what the status of COMLib is. Decided to push ahead and fork, Forked the COMLib project as "COMLib-Anton" and started cleaning it up. Tried COMLib, getting an error (callback! gives trouble in View 1.3.60 and 1.3.61, so went back to View 1.3.1) corrected spelling errors, fixed function specification errors (/locals), making it style guide compliant, a bit of optimizing to be more rebolish. Managed to get com2rebol.dll to compile in DevCPP, basically copied com2rebol.c into DecCPP's dllmain.c file, corrected small spelling errors. 4-Dec-2005 Cleaned and tested all examples (renamed a bit so they go in one directory): - BUGGY: word_open_save.r - These all work: word_formatted_text.r word_formatted_table.r word_picture.r word_print.r word_save_html.r excel_chart.r ~ 3 hours - Compared Benjamin's disphelper.c with original. Noted (in header comment) that only difference to code was in dhShowException. Some comments were added by Ben here and there. Some whitespace (newlines) were added which I removed. - Compared Benjamin's disphelper.h with original. Noted (in header comment) that Ben only added RebolErrorHandler callback declaration. ~ 1 hour - reworked genericGetVal to be more rebolish, tested all examples are working the same ~ 2 hours 10-Dec-2005 - organised COMLib todo items - evaluating rebol.org vs neusteps.com for COMLib homepage ~ 2 hours 11-Dec-2005 - choosing neusteps.com - checked out Ben's sources.zip, noted all differences between them and my distribution, emailed him a RAR of my changes. ~ 2 hours 12-Dec-2005 - created doc/COMLib-overview-diagram.r ~ 1 hour 13-Dec-2005 - setting up neusteps.com website and writing documentation (and grinding my teeth at make-doc-pro's user interface) ~ 3 hours - messing around getting demos/outlook-contacts.r and outlook-calendar.r to work outlook-calendar.r is actually working :) ~ 5 hours - decided to keep my distro separate from Ben's, one directory each on neusteps.com Emailed Benjamin about it. 15-Dec-2005 - reworking com2rebol.c: - disphelper.h: removed RebolErrorHandler prototype so now is exactly the same as original disphelper.h - created com2rebol.h - removed some redundant code by adding #define DISPHELPER_INTERNAL_BUILD - started redoing exceptionhandling - fixed some compiler typecasting warnings in com2rebol.c: Fixed AnsiToUnicode type casting warnings. Had some compiler warnings, fixed by using or casting to the right types: from LPCWSTR -> LPWSTR and LPOLESTR -> LPCOLESTR and casting the CoTaskMemFree argument to the right type (PVOID) - rebuilt the DLL ~ 6 hours 17-Dec-2005 - setErrorHandler routine now correctly returns void 5-Jun-2006 - rearranged the directory structure a bit so most of the source and intermediate files are in a subdirectory source/ - fixed a few bugs in comlib.r - tested successfully with excel-chart.r - made a nice (rebol-like) commented header for the DLL C file ~ 6 hours 10-Jun-2006 - removed makeContainer, was not properly functioning and was not used anywhere - reworking exception handling ~ 6 hours 13-Jun-2006 ~ 9 hours 14-Jun-2006 - removed buggy exception system I added to com2rebol.c, which duplicated some code in disphelper.c ~ 10 hours 15-Jun-2006 ~ 8 hours 16-Jun-2006 researching ways to pass strings back safely and make thread-safe (no conclusion to that) ~ 10 hours 18-Jun-2006 Looks like rebol helpfully copies strings from the DLL for you. However, you have to tell the DLL to let go of its string afterwards, if the DLL does not automatically handle this. ~ 9 hours 20-Jun-2006 Implemented exception handling for most of the main functions. excel.r seems to be working well again. ~ 8 hours 23-Jun-2006 Investigating how WITH macro is implemented. Testing GetString memory stability. Also discovered that format string with inline parameters can cause Excel to eat all memory before throwing an exception (If you're lucky). ~ 2 hours 25-Jun-2006 Tested PutValue and GetString at high speed, alternating the value, to see if there are any latency problems. No problems noticed so far. Adding EnumNextObject, FOR_EACH (untested). ~ 3 hours 26-Jun-2006 Working on website issues, documentation. ~ 6 hours 27-Jun-2006 More work on website building. ~ 5 hours 28-Jun-2006 More website building, published website and announced on AltME ~ 5 hours 29-Jun-2006 Added a minimum-usage example script, simple-start-comlib.r, which shows the new do/args way of using COMLib. Converted about ten demos. ~ 5 hours 30-Jun-2006 Converted more demos. Added contact information to the home page. ~ 4 hours 2-Jul-2006 Got EnumBegin, EnumNextObject and FOR_EACH working properly (testing with ado.r) ~ 4 hours 7-Jul-2006 Added putRef and PutRef (testing with speech.r) ~ 2 hours 8-Jul-2006 Trying to get Agent to talk in speech.r (unsuccessfully) Revising and investigating outlook-calendar.r and outlook-contacts.r ~ 5 hours 10-Jul-2006 Split up Anton's COMLib Notes.txt into notes.txt, history.txt, future.txt and function-lists.txt and added them to website. ~ 1 hour 11-Jul-2006 COMLib.r cleanup now releases forgotten objects, and some other bugfixes. ~ 2 hours }