S/ENL - The Sprezzatura Electronic Newsletter (All the RevSoft News That's Fit To Print (And bits that probably aren't as well...))
Well since the last issue we've got another office in the same building (to accommodate our expansion - we still have the old office) so much fun was had recabling the network, moving furniture etc etc. At the same time we've moved to NT Server - fortunately we have Aaron Kaplan working with us at the moment so his vast skill made this a very easy process! In case you're wondering - we moved to NT server because our customers are. Personally we still prefer Novell - but hey - who are we to judge... oh yes, consultants... hmm. Well, having Aaron around has introduced some strange cultural differences. For instance, what the Brits call "Mince", the Yanks call "Ground Beef". What the Brits call "Mincemeat" is a confection made of sultanas, raisins and suet! I've had a weeks vacation and am felling well rested so its straight back to work! We seem to be picking up more 'stateside business lately. Perhaps we aren't charging enough, but with transatlantic travel frequently being cheaper than domestic people have been asking us to drop by and help out with their more complex consultancy problems. We're always willing to do this - anything to get close to a factory outlet mall! We spent a day in Kittery recently and it was four days too short! Lastly a note of apology - this SENL is DELIBERATELY later than it needed to be. When preparing it I misread the dates and assumed the last one was only a couple of weeks ago and sat on this for two weeks! Mea maxima culpa. Andrew P McAuley Well there has been interesting feedback on the Ceridian rumours from the last newsletter and essentially the scoop seems to be "ignore the rumours". As one source pointed out, there is no way that Ceridian can deliver product as quickly as they do using other development tools. Once you've got a finely honed OI programming team you can out produce anybody! Of course, given Ceridian's size they'll be using other development environments as well but they have no intention of dumping RevSoft products. Jim Aquaviva paid a flying visit to the UK recently and spent time with a couple of clients (ourselves naturally excepted <g>!) explaining the direction of the company etc etc. By coincidence we were in the US boning up on the dataset object technology. We expect to have some documentation available for this shortly. We've been doing some incredible stuff internally recently for our own pleasure and that of our clients. As an example, we have recently implemented Windows 97 style buttons in OI along with folder tabs which shrink and grow with an expanding screen. Hopefully the new revamped SLIST coming soon will show you what we mean! As an example of the classic marketing model proposed by a subscriber recently - Winghigh - the UK distributor, mailed the UK base with an offer "Order now - offer expires end of May". This was the remarkably good value upgrade for AREV/OI people. Well, what arrived in today's mail but an upgrade offer from RevSoft UK directly valid "from 1st May 1997 to 31st August 1997". Never mind - the more people this particular offer is available to the better. The RFD has been published so the call for votes is only a short while away. We'll drop a special Email to you all so that you can vote when the time comes. The new internet stuff in OI 3.3 is really starting to grow on us here at Sprezz. The primary use of the CGI server would seem to be for intranets - not for internets for reasons previously given. But imagine the power of being able to write a Doctor application where the user can go onto site with a Psion palmtop with Netscape and a mobile phone, and just call into the secure web server at the office and download patient details without having to be running OI locally - just in the office! Or the same for a sales person, or a consultant - the possibilities are endless! Stout work RevSoft fellas! Earth calling RevSoft - come in RevSoft... much amusement in the Sprezz office to see an article on the OpenInsight Tips and Techniques section of www.revelation.com entitled "Setting Up a 'Status Line' In OpenInsight. The author (who to spare his blushes will remain nameless) says "When this is set up correctly it can make for a very professional looking form. See example below:" and then goes on to show a screen dump. Well I don't know if someone has redefined professional in respect to Windows software development but our clients would kill us if we offered as standard keystrokes Alt-N, Alt-S and Alt-D respectively for New, Save and Delete (Ctrl-N, Ctrl-S and Ctrl-D in every Windows app we've seen) - and a white background on the status line... puhleese. If this is as the title suggests to be the "Revelation Software Sample Application" I hope it is reviewed by a Windows programmer before it ships! Ramblings will be cut this time to make room for the big OE/Delphi article so many of you have asked for. Goes without saying that if you need it we can provide consultancy on the subject at very reasonable rates! In parting - Meatloaf the singer has recently changed his name. He is now "The artist formerly known as mince"... Until next time.... CELEBRITY INTERVIEW - Eric the Emu >>Who are you?<< I'm Eric the Emu. I'm a 30 year old white Jewish male from Philadelphia, PA. Not really, but I wish I was. Let's get one thing straight - I'm only doing this for the T-shirt. >> Who do you work for? << I'm currently employed at the Black Stump Caravan Park, implementing a time and attendance system for all the native flora and fauna. >> What is your role in the RevSoft community?<< I ghost write in all the Compuserve and internet forums. Aaron Kaplan, Cameron Purdy, - those are all mine, really. I hate having to spell "Kaplan". The "whip me spank me treat me like a Sex God" signoff was my idea - Aaron changed it a bit. I have a contract where anything labelled "SYSOP" is mine. I do the answers, they do the questions. I also crop up from time to time in Compuserve as a helpless individual. People email me decompilers, hash algorithms and stuff. Then I sell their names back to Revsoft. The "works" CD was my idea. I had intended that it contain three applications, with source code - one payroll, one accounting, one OI information database. But they got the drive letter wrong and downloaded the complete Lotus Notes database from the web server instead. They only realised after they'd pressed 50,000 CD's. I'm waiting until CD 2, when the first CD will be really cheap. I did the Easter Egg in AREV 3.12. Until then Scroll-Lock wasn't supported in AREV. Had to get old JA really drunk to allow that one to get in.... >> How long have you been involved with RevSoft? << Since 1989. Late '89. Very late '89. In fact more like '96. >> Which products do you use? << I use the manuals a lot. As wallpaper. I recycle the licensing agreements, because there's a legal precedent where the supplier can't tell you how to use the product - they merely have to guarantee that it works. So the licensing agreements are used once, then flushed. I use the Unix version of AREV 2.12, the OS/2 version, Spindex - all the standard stuff. I develop on run-times because it's cheaper that way. Runtimes and BASC.EXE and BBASIC. They ship these with HR-1 nowadays, so it's easier and cheaper to use runtimes. >> What do you most like about RevSoft products? << Their anonymity in the marketplace. >> What do you most dislike about RevSoft products? << The general helpful nature of the developer community. >> If you HAD to use another database what would it be and why? << Cardfile in Windows 3.1 looks pretty good. They could use that instead of putting tab controls in OI. >> What are your favourite 3 books and why? << That's a pretty f@%&ing stupid question to ask an emu. Plain insensitive. When I was young, the park ranger once read me the Alice Springs phone book to put me to sleep. Great cast, rotten plot. >> What are your favourite 3 CDs/Albums and why? << Let's see what's on the turntable at present - Borland Delphi 1.0 for Windows. Apart from that, I'm into keyboards, musical arrangements & arrangers. I collect synthesizers... Dixie Dregs - Night of the Living Dregs (early Steve Morse on this one) Anything by Marty Feldman, Marty Paich... All Billy May's arrangements...brilliant and hilarious Michel LeGrand's bent stuff... Spike Jones, Marcel Marceau.... all favourites. As pianists go Oscar Peterson is God. >> What are your three favourite films and why? << Apocalypse Now (in Australia it was released as Eucalyptus Now). Experiment in Terror, especially for Mancini's score. Romper Stomper (I played keyboards in the band on that one) Heartbreak High (film release) (played keyboards on that one too) >> What event in history would you most like to have been present at? << The Garden of Eden. I don't think that those paintings were anatomically correct. I would have painted out the navels. >> Who is the best president/prime minister we never had and why? << Steven Wright in the U.S. for president.Erik Bloodax rules - U.K.In Australia, Mal Colston gets my vote. Or maybe the fishwife from hell. >> Your motto/witty aphorism << The road to wisdom is quite plain And simple to express Err and Err and Err again But less and less and less (Piet Hien) Life's too short.... (Eric Emu) Sure as hell ain't _(insert rival product name here)_ Ok - where's the Sprezzatura T-shirt? SPECIAL FEATURE - CARL PATES, SPREZZATURA LTD Interfacing Delphi v1.0 with OpenEngine Why Bother? Although OpenInsight deals with all the basic functions and controls of Windows, there are many instances where systems require more, such as graphing, scanning control, Word-Processing and Rich Text, Comms control etc. In many other development environments this is relatively easy, but the lack of ability to extend OpenInsight via VBX/ActiveX technology leaves developers with little option but to use a system that does. And there is also the issue of speed; even with the latest improvements in the system, there is no way that OpenInsight windows will ever execute as fast as those compiled in native machine code, as is the case with Delphi. Of course, the biggest drawback here is the loss or our beloved Basic+ language, and all it's advanced string-handling capabilities. I've found Delphi's to be marginally better than Visual Basic's, but nowhere near as good as OpenInsight, so if you need to do any intensive string-work, you're in for a slightly longer job....(unless you want to write the Basic+ functions in Pascal ...but that's another article....) Essential Ingredients 1) A copy of OpenEngine and supporting files 2) A copy of Delphi v1.0 3) A working knowledge of Delphi and Basic+ 4) A copy of the OpenEngine v1.5 Technical Reference Manual that is currently available from the Revelation Software Forum library on Compuserve REVSHELL and REVCAPI Access to OpenEngine is granted via several exported functions from two Dynamic Link Libraries; REVSHELL.DLL and REVCAPI.DLL. These functions are documented in the OpenEngine v1.5 Technical Reference Manual mentioned above. REVSHELL.DLL encapsulates the 'Shell API', which is what this article is concerned with. It contains many the useful functions for starting up the Engine, shutting it down, reading and writing Rows, running standard Basic+ functions (LIST_VOLUME, ATTACH_TABLE etc) and custom ones too. The Client API, REVCAPI.DLL, is more complex and works with OpenEngine at a lower level. To use this to it's best advantage you also need to structure your Basic+ functions carefully and be aware of what type of data you are passing back to the client. (It also takes a lot more explaining than I've got time for here!) Prototyping REVSHELL in Delphi Before you can use REVSHELL.DLL in your Delphi app you must first prototype the functions you want to use and declare any non-standard data types (such as HREQUEST) used in them. The example below should provide a good starting point (and do most of the hard work for you!) eg.Unit RevShell; Next, simply add 'RevShell' to the list of modules in the 'Uses' section of your Delphi source code to use the declared functions and types. Start your Engines! For your Delphi application to use OpenEngine you call the RevStartUp function which launches the Engine if it is not currently active, and gets you connected to it's queue as a client. (All requests to the engine are passed via this queuing system, which was originally intended to let the Engine handle more than one request at once. Don't get excited though - there's only ever one queue because RevSoft never got around to finishing it!) Also note that OpenEngine only supports 10 clients connected to it, of which OpenInsight is one, the System Editor is another etc, so be careful of how much you attach to it or RevStartUp will fail. Basically, one .EXE file equals one client.... Below is a sample piece of code that starts up OpenEngine. I usually use this as an internal Delphi function eg.
Note the three command-line parameters passed to RevStartUp: lpszAppName, lpszUserName, lpszPassword. These are exactly the same values as used when starting OpenInsight, and I pass them to Delphi the same way ie, /AP=MYAPP /UN= /PW=LETMEIN from the command line when starting the app... I usually declare them as Global variables so that I can access them from anywhere with the Delphi app. Eg. {Global variables defines at the top of the main source code file} Passing commands to OpenEngine Passing commands to OpenEngine is fairly straight forward, providing you follow a few basic rules. If you want to call a standard System Stored Procedure, many of them are declared as exported functions in REVSHELL, so you can call these directly: E.g. SSP Exported As and so on.. There are also REVSHELL functions for basic LH file processing, such as RevLock, RevReadRow, RevWriteRow, RevUnlock, all of which are explained in the OpenEngine manual If you want to call one of your own functions however, probably the easiest way is to use RevOmniFunction, which allows you to send a command using the same syntax you would use if you were using the Exec line in the System Editor. E.g. RUN SOME_FUNCTION "PARAM1","PARAM2" IMPORTANT!! NOTE: When calling OpenEngine functions, be sure that you allocate enough memory space in Delphi to cope with any parameters and/or returned values, otherwise you will get some spectacular GPFs! E.g. procedure PassCommandToOpenEngine(Param:String): Terminated ! One final thing to remember (which is a fairly standard part of Windows programming as a whole) is to always put your toys back in the box when you've finished playing with them! Basically this means calling the RevTerminate function which tells OpenEngine that your client no longer wants to use the Engine, and clears the link. If you don't do this, and you close your Delphi app, you will waste resources and get an irritating message when you try to shut down OpenEngine later, as it still thinks your app is attached. E.g. procedure TMainForm.FormClose(Sender: TObject; var Action: Back to another AREV tip this time! I don't know about you but I get fed up working on old systems which are all uppercase and poorly indented. I must rush to stress here that we are talking about OTHER PEOPLE'S older systems - ours are always gorgeous! <g>. So, in what seemed like a bright idea at the time, we put together a little utility to convert code and redo indentation at the same time. Without any further ado - here goes! $Insert SysInclude, Logical As this issue of S/ENL was put to bed we fed the inner man with:
S/ENL - (c) Copyright 1998, Sprezzatura Ltd. All rights reserved. REDISTRIBUTION is allowed only with permission. You may circulate copies of S/ENL by manually forwarding it, providing (1) you forward the issue in its entirety, (2) no fee is involved, and (3) you forward no more than three issues to any one individual. After that, please encourage your correspondents to send e-mail to admin@sprezzatura.com with SUBSCRIBE SENL in the subject line to get their own free subscription. Everyone is welcome! Tell your friends about S/ENL.
|
| Copyright © 2005 The Sprezzatura Group. All rights reserved. |