Delphi Twain interface needed.
This is a very specific requirement, so if you do not have experience with the environment, please don’t bid.
High level description
Twain-enabled scanning Module written in Delphi (Pascal).
Requirements:
Must be written to compile and build in Delphi 2005-2007 (no Delphi 7, no Delphi 2009-2010). I just don’t want to fight the String issues introduced in Delphi 2009.
There are some freeware source codes rolling around out there that could be used to help you, and as long as it’s legal, I don’t care if you use them or not, as long as you provide the entire source when you are finished. If you deliver something to me without source or with source that is not legal, I WILL NOT pay you, and WILL report you to the authorities, and I don’t mean ScriptLance authorities.
Must work with any scanner that is Twain compatible, but just so you’ll know, I will be testing it on an HP J6400.
The code must stand alone as an independent Delphi Unit and be completely self-contained. …and please, clean up your compiler hints and warnings before delivery!! I like to see 0 hints, 0 warnings and of course 0 errors in all my source code.
You will need to provide a throw away test stub framework to demonstrate function, but I will not be using it long-term. I will incorporate the core unit into an existing system, so there is no need to name buttons, label frames, or make it pretty in any way… just quick and dirty buttons and a preview frame to prove the functionality is working. You should also be able to save it (Standard save dialog) in any of the standard formats that the Twain interogation of the scanner driver software provides.
I need the following entry points (Procedures/Functions) written, fully parameterized and independent of global environment.
Procedure SelectScanner (VAR Scanner : OLEVariant);
This routine scans the local machine for all registered Twain capable devices and displays a dialog for selection. You can either write this as a unit or call an existing dialog within this routine, but the main unit must be set up to use it and encapsulate it.
Procedure ScanDocument (Scanner : Variant; OutputType : _ValidOutputType; ScannedImageBLOB : Variant);
Parameters
Scanner : ID of the scanner to use, set by calling the SelectScanner Procedure;
Procedure ScanPicture (Scanner : Variant; OutputType : _ValidOutputType; ScannedImageBLOB : Variant);
I really want to keep the variables untyped to ensure ubiquity of function across platforms/drivers.
Finally, in order to call this project complete, we are going to need to scan both a picture and a document, be able to view a preview and subsequently save the results to an appropriate file.
Again, please don’t bid if you don’t have experience with driver-level coding. I’m a programmer, but I’ve been too busy with other things lately to do this myself, however, I can smell bad code from a mile away – so do us both a favor and don’t bid unless you can do the work.
Here’s the REALLY good news: This code will be used in an Electronic Medical Records system and our business is starting to really take off. If I can find someone that I can trust who does good work, is reliable and understands technology, there will be MANY more projects just like this one in the future.
100% ESCROW WILL BE POSTED BEFORE YOU BEGIN WORK WHETHER YOU REQUEST IT OR NOT… Like I said, I’m a consultant also!
Thank you for your attention. I look forward to seeing your bids.