Components
& Utils
Vigenere
encoding unit
simple string encoding using Vigenere algorithm
Ascii2XML
utility (ver.1.1)
enables to transform any Ascii /flat file with fixed length fields to a XML
file, according the template of your choice.
For using it, follow these steps:
-
get both files: the Ascii /flat file you want to convert (you may call
it source.txt), and the template file you have defined (you may call it
template.xml)
-
open your Delphi IDE and compile AsciiToXML.dpr: you will get AsciiToXML.exe
-
in cmd /dos console, run : "Ascii2XML.exe -source source.txt -template
template.xml -target target.xml" (where target.xml is the name of the
file to be created).
-
now, you have get target.xml -> open it and look how it looks like
Nb: Requires JCLStrings.pas (from Jedi Component Library) and UParseReplace.pas
TEditableCtrlHolder
(ver.3.3)

TEditableCtrlHolder is a data validator of any 'TEditableCtrl'(1) controls
of your TForm. For each of TEditableCtrl, you can set their DataType, MaxLength
and NullForbidden property. Check the validity of what you entered into each
TEditableCtrl against the properties defined above. You can also loop into all
TEditableCtrl to check if the entered values have been modified.
Version2 adds support to RxLib controls (TRxCheckListBox).
Version3 adds a OnValidate event-handler + support RxLib date-time picker controls
(TDateEdit and TDBDateEdit)
(1): a TEditableCtrl can be any of editable controls, ie TEdit, TComboBox, TListBox, TCheckBox, TMemo, ..
For using it, follow these steps:
-
add EditableCtrlHolder.pas to your 'custom user package', compile your package.
-
open the demo project
TAlignedEdit3
derived of TAlignedEdit from Peter Below (TeamB) that enables left, center
or right justification of the text in a TEdit. This version enables text focusing
when the TEdit becomes active, by removing the multi-line capability.
TDBTreeView
(ver.1.04)

Represents TDataSet records in a standard TTreeView.
click [here] for the screenshot
for a Delphi5 compatible version, click [here]
TMELabel
(ver.3.0)

Like a TLabel component with a MEFont property that sets the font on CMMouseEnter
Windows message.
Usefull with AboutBox type forms, when you want to link your TLabel with internet.
Nb: may be same component /behaviour as TJvLinkLabel from JVCL
GETVALUE
function for QuickReport
Enable to refer to other TQRPrintable controls (TQRExpr or TQRLabel) to get
their value.
Usefull when you don't want to repeat TQRExpr expression every time you want
to use it in your calculations.
To use it:
-
add this unit to your 'custom user package', compile your package.
-
put a TQRExpr on your TQuickReport, and set it's function property as 'GETVALUE([TQRPrintable name])'.
Parse
& Replace utility (ver.2)
You simply want to parse your html file that contains some custom tags, and
replace these tags by the required strings.
When used with TPageProducer, advantage of this method comparing with using the TPageProducer's OnHTMLTag
event handler:
-
HTML tags are handled in the same procedure as the Response.Content procedure.
This prevents from using external variables, avoids multiple 'if then else'
in the OnHTMLTag procedure, and make a more compact and quick program.
-
better control of the parse & replace by using the internal Delphi
parser CopyPrsr (uses CopyPrsr;).
- enables to chose the way you're going to replace in case the replacement
tag is not found : or it is replaced by a null string, or it does not replace
it and keeps the original <TagName>
[back to top]
Programs
Many programs are arleady built. Among them:
Executive dash-board:
severall 'dash-board' based products are available, depending on your power
/autonomy requirements:
-
application fully integrated dash-board: all the reports are integrated
in the application code.
-
selectable dash-board: all the reports are available in opening external
files.
-
'visual customizable' dash-board: all the reports are available in opening
external files. You can build these files yourself with 'drag and dropping'
components in a form. No line of code is at this level required.
-
'fully customizable' dash-board: all the reports are available in opening
external files. You can build these files yourself with a fully independant
'report-designer'. The 'report-designer' enables you to build wysiwyg forms,
and to write genuine Pascal-Delphi script on all the event handlers needed.
Creating such a report can require development capabilities.
In anyway and as a preliminary, these dash-boards must be connected to any
either specific or open database, the one of your entreprise.
Scrivitt :
a program that enables to build standardised letters, simply in adding custom
paragraphs.
Document-Explorer:
Store your documents in a folder, and organize them as you wish with my TDBTreeView
component.
Archieve-Explorer:
Store your favourite magazines in the programm, and search them with the fields
and key-words of your choice.
BdCC: a front-office
configurator to your ERP, and add comprehensiveness and security to your business.
BCRx: a web application
that enable order entry and query +e-mail communication between customer and
company.
Data Dictionnary:
a simple data-dictionnary management software. Store your data in the required
XML format, and view /filter them in your browser with the required presentation.
Implemented with Delphi +XML +XSLT.
Reminder: don't
forget what you and your co-workers have planned !!
1. setup an open and unique database with the events you (or your co-workers)
want to be reminded for
2. receive at the right time an e-mail reminding you the event.
NB: for more infos, please contact me
[back to top]
Tips
WebSnap simple project
Have you ever heard of WebSnap technology being deprecated by CodeGear /Embarcadero®?
I hope they won't do that, because WebSnap is a really nice technology to work with if you have any web development to do with Delphi.
Here is a simple project /tutorial that shows some things that are neither hard to understand nor to implement, and that you simply cannot do with WebBroker framework.
[here] the source code of the project.
How to get selected a text drawn on a TCustomControl descendant, depending on
mouse click: [here]
the source code of the example and the component.
How to buid an intranet search engine using MS index server and ADO DB
connection 
Main steps will be to:
-
add to MS index server configuration pane the catalogs you want to scan.
[click here for more details].
-
check that both IIS and MS index server are running. [click
here for more details]
-
develop a simple Delphi CGI application that will use ADO DB connection for accessing to MS index server database.
Details of 3. are following:
-
Nb: for Delphi versions that do not support ADO, download and install the excellent TaoADODataSet components from http://www.alohaoi.com/Software.
for adapting to MS index server field type, modify the aoADODB.pas, procedure
TaoADODataSet.InternalInitFieldDefs.
click here for more details
click here for collapsing
Copy this and paste it on line #4447:
if (FADOConnection.Provider = 'MSIDXS') then
case FADORecordSet.Fields.Item[i].Type_ of
0 : FieldType:= ftUnknown; {adEmpty 0 No value was specified}
2 : FieldType:= ftInteger; {adSmallInt 2 A 2-byte signed integer}
3 : FieldType:= ftInteger; {adInteger 3 A 4-byte signed integer}
4 : FieldType:= ftFloat; {adSingle 4 A single-precision floating point value}
5 : FieldType:= ftFloat; {adDouble 5 A double-precision floating point value
}
6 : FieldType:= ftCurrency; {adCurrency 6 A currency value (8-byte signed
integer scaled by 10,000)}
7 : FieldType:= ftDateTime; {adDate 7 A Date value}
8 : FieldType:= ftString; {adBSTR 8 A null-terminated character string (Unicode)}
9 : FieldType:= ftUnknown; {adIDispatch 9 A pointer to an IDispatch interface
on an OLE object }
{$IFNDEF NEED_DBTABLES}
10 : FieldType:= ftLargeInt; {adError 10 A 32-bit error code}
{$ELSE}
10 : FieldType:= ftInteger;
{$ENDIF}
11 : FieldType:= ftBoolean; {adBoolean 11 A Boolean value}
12 : FieldType:= ftString; {adVariant 12 An OLE Automation Variant}
13 : FieldType:= ftUnknown; {adIUnknown 13 A pointer to an IUnknown interface
on an OLE object}
14 : FieldType:= ftFloat; {adDecimal 14 An exact numeric value with a fixed
precision and scale}
17 : FieldType:= ftInteger; {adUnsignedTinyInt 17 A 1-byte unsigned integer}
16 : FieldType:= ftInteger; {adTinyInt 16 A 1-byte signed integer}
18 : FieldType:= ftInteger; {adUnsignedSmallInt 18 A 2-byte unsigned integer}
19 : FieldType:= ftInteger; {adUnsignedInt 19 A 4-byte unsigned integer}
20 : FieldType:= ftInteger; {adBigInt 20 An 8-byte signed integer}
21 : FieldType:= ftInteger; {adUnsignedBigInt 21 An 8-byte unsigned integer}
72 : FieldType:= ftUnknown; {adGUID 72 A globally unique identifier (GUID)}
128: FieldType:= ftTypedBinary; {adBinary 128 A binary value}
129: FieldType:= ftString; {adChar 129 A String value}
130: FieldType:= ftString; {adWChar 130 A null-terminated Unicode character
string }
131: FieldType:= ftFloat; {adNumeric 131 An exact numeric value with a fixed
precision and scale}
132: FieldType:= ftUnknown; {adUserDefined 132 A user-defined variable}
133: FieldType:= ftDate; {adDBDate 133 A date value (yyyymmdd), contributed
by David Harlowe }
134: FieldType:= ftTime; {adDBTime 134 A time value (hhmmss) - contributed
by Kim Madsen}
135: FieldType:= ftDateTime; {adDBTimeStamp 135 A date-time stamp (yyyymmddhhmmss
plus a fraction in billionths)}
139: FieldType:= ftFloat; {adVarNumeric 139 - contributed by Kim Madsen.}
200: FieldType:= ftString; {adVarChar 200 A String value (Parameter object
only)}
201: FieldType:= ftMemo; {adLongVarChar 201 A long String value (Parameter
object only)}
202: FieldType:= ftString; {adVarWChar 202 A null-terminated Unicode character
string (Parameter object only)}
203: FieldType:= ftMemo; {adLongVarWChar 203 A long null-terminated string
value (Parameter object only)}
204: FieldType:= ftUnknown; {adVarBinary 204 A binary value (Parameter object
only)}
205: FieldType:= ftBlob; {dLongVarBinary 205 A long binary value (Parameter
object only)} // changed for BlobSupport by Heiko Wenzel
else FieldType:= ftUnknown;
end;
Nb: to avoid this, we could look at modifying directly the data type
entry values in MS index server property pane. But this must be confirmed.
-
Open the simple CGI search project and compile
it (not run) to c:\inetpub\scripts directory. Nb: don't change this path
unless you do the same within your search.htm file.
For Delphi versions that do not support ADO and have installed the third-party ADO library (above), you can download the search project here.
-
open search.htm with your favorite web browser and test your new custom intranet search engine ..
How to check memory leaks on a CGI web application (use Delphi5 professional)
NB: with higher versions of Delphi, use FastMem memory checker and the IDE web app debugger 
-
Install Gabriel Corneanu CGI debugger. (get it from here)
-
Install Vincent Mahon excellent memory leaks checker. (get it from here)
-
On your CGI application (.dpr), do as follows:
- activate both CGI debugger and memory leaks checker. Nb: see respective
documentations for that.
- set application's parameter to 'debug' (not 'debug loop')
-
run (not only compile) your .dpr
-
open your web browser and call the url that you want to check
-
If some memory leaks still exist in your application, a log document will
pop-up telling you where the leaks stay.
[back to top]
Games
|
Le Mot le Plus Long
(v 1.01) , d'après le célèbre
jeu télévisé ..
|
|
Programme exécutable (sans le dictionnaire)
|
[cliquez ici] (262 Ko)
|
|
Sources Delphi (sans le dictionnaire):
|
[cliquez ici] (23 Ko)
|
|
Dictionnaire français (en format texte)
|
[cliquez ici] (638 Ko)
|
|
|
Le Compte est Bon, d'après
le célèbre jeu télévisé ..
|
|
Programme exécutable
|
[cliquez ici] (171 Ko)
|
|
Sources Delphi
|
[cliquez ici] (3 Ko)
|
[back to top]
[back to top]
Updated on dec 19th 2009 