-
Notifications
You must be signed in to change notification settings - Fork 26
/
Copy pathREADME.htm
1148 lines (1148 loc) · 42.3 KB
/
README.htm
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
959
960
961
962
963
964
965
966
967
968
969
970
971
972
973
974
975
976
977
978
979
980
981
982
983
984
985
986
987
988
989
990
991
992
993
994
995
996
997
998
999
1000
<style type="text/css">
code{
font-family: "Consolas", monospace;
}
pre{
border: 1px solid #ddd;
border-left: 3px solid #f36d33;
overflow: auto;
padding: 1em 1.5em;
display: block;
}
Blockquote{
border-left: 3px solid #d0d0d0;
padding-left: 0.5em;
margin-left:1em;
}
Blockquote p{
margin: 0;
}
table{
border:1px solid;
border-collapse:collapse;
}
th{ padding:5px;
border:1px solid;
}
td{
padding:5px;
border:1px solid;
}
</style>
<h1><strong>InstantObjects 4.2.2 for Delphi</strong> <a href="https://www.mozilla.org/en-US/MPL/2.0/"><img src="https://img.shields.io/badge/License-Mozilla%202.0-yellowgreen.svg" alt="License"/></a></h1>
<p><img src="https://github.com/EtheaDev/InstantObjects/wiki/instantobjects_logo.gif" alt="InstantObject Logo"/></p>
<p>Welcome to InstantObjects, the integrated framework for developing object-oriented business solutions in Delphi (from Delphi 10.1 to latest version)</p>
<p><img src="https://github.com/EtheaDev/InstantObjects/wiki/SupportingDelphi.jpg" alt="Support Delphi"/></p>
<p>Related links: https://www.embarcadero.com/ - https://learndelphi.org/</p>
<p>InstantObjects is a RAD technology that enables creation of applications based on persistent business objects. It simplifies the process of realizing ideas into products; shortens time-to-market, and helps keep business focus.</p>
<p>Even though it is still a bolted-on technology, InstantObjects integrates with the Delphi IDE and Object Pascal in a simple, flexible and intuitive manner. There are no sophisticated environments that have to be comprehended before application development can begin.</p>
<p><strong>InstantObjects offers:</strong></p>
<ul>
<li><p>Model realization in the Delphi IDE via integrated two-way tools (from editor to code)</p>
</li>
<li><p>Object persistence in the most common relational databases or flat XML-based files (also with FireDAC Broker)</p>
</li>
<li><p>Object presentation via standard data-aware controls.</p>
</li>
<li><p>Serialization/Deserialization of object using <a href="https://github.com/paolo-rossi/delphi-neon">delphi-neon</a> library</p>
</li>
</ul>
<h2>New Setup for automatic installation of components</h2>
<p>From 4.4.0 version a new “Installer” read-to-use is located in the Release area: <a href="https://github.com/EtheaDev/SVGIconImageList/releases/latest/download/SVGIconImageList_Setup.exe">Download the Installer</a>.</p>
<p>The Installer automatically detect your Delphi versions, install sources, build and install packages and add source paths.</p>
<p><img src="./Help/Setup.png" alt="Setup"/></p>
<p><strong>Documentation</strong></p>
<p>Follow the complete manual present in this <a href="https://ethea.it/docs/instantobjects/">site</a> and look at the PrimerCross demo to find out how to build applications with an Object Persistence Layer very flexible.</p>
<p><img src="https://raw.githubusercontent.com/wiki/EtheaDev/InstantObjects/PrimerDemo.gif" alt="Primer demo"/></p>
<p><strong>Project Status</strong></p>
<p>The project is still managed by <a href="https://www.ethea.it">Ethea S.r.l.</a>, an italian company that uses InstantObjects for <a href="https://ethea.it/prodotti/instantsolutions/">InstantSolution Framework</a>.</p>
<p>You can find more information about this Open-Source project in the wiki section.</p>
<p>InstantObjects source files are released under the Mozilla Public License Version 2.0. You may obtain a copy of the License at</p>
<p><a href="https://www.mozilla.org/en-US/MPL/2.0/">www.mozilla.org/en-US/MPL/2.0/</a></p>
<p><strong>Full DUnitX Tests</strong></p>
<p>InstantObjects contains over 400 Unit Tests written for DUnitX and ubMock framework.</p>
<p>From 3.0 version is also compatible with TestInsight test framework.</p>
<p><img src="/Tests/TestInsightRunning.png" alt="TestInsight Running"/></p>
<p><strong>Release Notes</strong></p>
<h2>VERSION HISTORY</h2>
<p>Version 4.2.2 (2025-01-01)</p>
<ul>
<li>New <a href="https://www.ethea.it/docs/InstantObjects/">Project Site</a></li>
<li>New Setup for automatic Installation of Components</li>
<li>Fixed some Tests for 64Bit platform</li>
</ul>
<p>Version 4.2.1 (2024-09-16)</p>
<ul>
<li>Added support for Delphi 12.2</li>
<li>Fixed Demos for 64 Bit</li>
<li>Added possibility to not trim strings (using IO_DISABLE_STRING_TRIM)</li>
</ul>
<p>Version 4.2.0 (2024-08-05)</p>
<ul>
<li>Added support for 64Bit Windows Platform</li>
<li>Added define USE_LARGEINT_FIELD_FOR_REF to create LargeIntField at Design-Time</li>
<li>Removed old defines for older Delphi Versions</li>
<li>Restored support for Delphi 10.1, 10.2, 10.3, 10.4</li>
</ul>
<p>Version 4.1.0 (2023-10-22)</p>
<ul>
<li>Added support for Delphi 12</li>
<li>Renamed packages (for Delphi 11 and Delphi 12)</li>
<li>Support for older Delphi Versions before Delphi 11 discontinued</li>
<li>Use Unidirectional cursors for optimize performances</li>
</ul>
<p>Version 4.0.0 (2023-07-20)</p>
<ul>
<li>Completed support for etherogeneus Databases (using IsDescription, IsPrimaryKey, ForeignKeys)</li>
<li>Refactoring Packages names:</li>
<li><strong>RunTime</strong>: (IOCore_4, IOIBFbCatalog_4, IOMSSqlCatalog_4, IOMySQLCatalog_4, IOADO_4, IODBX_4, IOIBX_4, IOXML_4, IOFireDAC_4, IOJSON_4)</li>
<li><strong>DesignTime</strong>: (dclIOCore_4, dclIOIBFbCatalog_4, dcldclIOMSSqlCatalog_4, dclIOMySQLCatalog_4, dclIOADO_4, dclIODBX_4, dclIOIBX_4, dclIOXML_4, dclIOFireDAC_4, dclIOJSON_4)</li>
</ul>
<p>Version 3.1.0 (2023-06-26)</p>
<ul>
<li><p>Added support for JSON Serialization via delphi-neon, requires: <a href="https://github.com/paolo-rossi/delphi-neon">github.com/paolo-rossi/delphi-neon</a>)</p>
</li>
<li><p>Added TInstantJSONConnector, TJSONFilesAccessor components</p>
</li>
<li><p>Added TInstantJSONBroker, TInstantJSONResolver, TInstantJSONTranslator, TInstantJSONQuery classes</p>
</li>
</ul>
<p>Version 3.0.0 (2021-08-27)</p>
<ul>
<li><p>Added support for Delphi 11 Alexandria</p>
</li>
<li><p>Updated Test Framework to DUnitX / TestInsight (only for D10.2, D10.3, D10.4, D11.0)</p>
</li>
</ul>
<p>Version 2.10.0 (2021-03-29)</p>
<ul>
<li><p>Fixed InstantDBX for compilation with IO_CONSOLE directive</p>
</li>
<li><p>Fixed FireDAC Broker for EncryptedPassword</p>
</li>
<li><p>Added OnIdChanged for TInstantObject class</p>
</li>
<li><p>Added Isolation property to FireDAC Broker</p>
</li>
</ul>
<p>Version 2.9.0 (2021-01-24)</p>
<ul>
<li><p>Added support delphi-NEON library
for serialization/deserialization of objects</p>
</li>
<li><p>Added support for MARS Rest server library</p>
</li>
<li><p>Refactoring FireDAC connector/broker</p>
</li>
<li><p>Changed font for editor to Segoe UI</p>
</li>
<li><p>Added OnAssignParamValue event for Brokers</p>
</li>
</ul>
<p>Version 2.8.0 (2020-08-25)</p>
<ul>
<li><p>Added support for Delphi 10.4 Sydney</p>
</li>
<li><p>Minor bug-fixing</p>
</li>
<li><p>Editor font updated</p>
</li>
</ul>
<p>Version 2.7.0 (2018-12-06)</p>
<ul>
<li><p>Added support for Delphi 10.3 Rio</p>
</li>
<li><p>Cleaned old LINUX/KYLIX support</p>
</li>
</ul>
<p>Version 2.6.0 (2017-04-04)</p>
<ul>
<li>Added support for Delphi 10.2 Tokyo</li>
</ul>
<p>Version 2.5.0 (2016-05-31)</p>
<ul>
<li>Added support for Delphi 10.1 Berlin</li>
</ul>
<p>Version 2.4.0 (2015-09-01)</p>
<ul>
<li>Added support for Delphi 10 Seattle</li>
</ul>
<p>Version 2.3.0 (2015-04-08)</p>
<ul>
<li><p>Added support for Delphi XE8</p>
</li>
<li><p>Added support for Delphi XE7</p>
</li>
</ul>
<p>Version 2.2.0 (2014-05-12)</p>
<ul>
<li><p>Full UNICODE support: based on UseUnicode flag of InstantConnection:
Exposers uses TWideStringField or TWideMemoField mapping string attributes</p>
</li>
<li><p>Virtual Containers (for SQL brokers):
Master-Detail relationship using a contaier without storage<br />
(read VirtualContainers.txt for more informations)</p>
</li>
<li><p>Added Broker for Embarcadero FireDac</p>
</li>
<li><p>Added support for Delphi XE5 and XE6</p>
</li>
<li><p>Updated UnitTesting for Exposers and Unicode Support</p>
</li>
</ul>
<p>Version 2.1.0 (2007-02-26)</p>
<ul>
<li><p>Support for SQL Server 2005; catalog support for SQL Server 7;
better support for SQL Server in general.</p>
</li>
<li><p>Support for ModelMaker 6.20 to 9; better ModelMaker support
in general in ObjectFoundry.</p>
</li>
<li><p>Support for InstantDate and InstantTime for date-only and
time-only attribute types.</p>
</li>
<li><p>Instant Model Explorer enhancements:</p>
</li>
<li><p>Class B has a base class A and subclasses C, D, etc.
making a three tier class hierarchy. If Class B is deleted
classes C, D, etc. will become subclasses of class A.
Previously they would become subclasses of TInstantObject.</p>
</li>
<li><p>New class B in model unit X has a base class A in model unit Y.
When adding new class B, unit Y will be automatically
added to the Interface uses clause of unit X.<br /></p>
</li>
<li><p>Whenever a unit is added to the uses clause of an interface
section, that unit is removed from the implementation
section uses clause if present. Whenever a unit is added to the
implementation section uses clause, check the interface section
uses clause and if the unit is there then don't add anything.</p>
</li>
<li><p>Instant model Explorer now uses the newer ToolsAPI on Delphi 7+.</p>
</li>
<li><p>Improved object circular reference detection.</p>
</li>
<li><p>Added ability to disable circular reference checking
by undefining IO_CIRCULAR_REFERENCE_CHECK.</p>
</li>
<li><p>Enhanced SQL statement logging: now logs all statements,
including select statements.</p>
</li>
<li><p>BDE broker: fixed incomplete implementation of IdDataType
and IdSize.</p>
</li>
<li><p>ADO broker: fixed incomplete implementation of IdDataType
and IdSize.</p>
</li>
<li><p>XML broker: now only creates one file for each object,
in the concrete class' folder.</p>
</li>
<li><p>XML broker: removed support for versioning and
utf-8 “BOT” encoding.</p>
</li>
<li><p>XML broker: fixed failure on query refresh.</p>
</li>
<li><p>XML broker restructured for easier customization.</p>
</li>
<li><p>Refactored InstantPersistence.pas into:
InstantPersistence.pas - Remains the main 'IO interface' unit.
InstantBrokers.pas - Contains the descendant brokers, connectors classes.
InstantMetadata.pas - Contains the metadata, scheme, etc. classes.
InstantTypes - Contains some type declarations.</p>
</li>
<li><p>Ubmock and fpcunit integrated into the source tree
for easier test development.</p>
</li>
<li><p>Help file has been greatly improved.</p>
</li>
<li><p>Added explanatory document for IO to InterBase
and Firebird data type mappings.</p>
</li>
<li><p>Various fixes and enhancements (see tracker).</p>
</li>
</ul>
<p>Version 2.0.1 (2006-08-07)</p>
<ul>
<li>All 2.0 RC changes.</li>
</ul>
<p>Version 1.9.3 (2006-05-07)</p>
<ul>
<li><p>Help file has been improved.</p>
</li>
<li><p>Bug fix for # 1496971 Bug In Model Explorer Setting Index and
Required properties.</p>
</li>
<li><p>Bug fix for # 1475841. “TInstantContainer.Sort error if empty”.</p>
</li>
<li><p>Bug fix for # 1475982. Rebuilding a Firebird database creates
disabled PKs.</p>
</li>
<li><p>Changed the visibility of the
TInstantReferences.ObjectReferenceList property from private to
protected.</p>
</li>
<li><p>Bug fix for # 1479652. “Problem with PrimeCross demo and
InstantReference.Reset”.</p>
</li>
<li><p>Changed TInstantSQLBroker.AcquireDataSet method to virtual.</p>
</li>
<li><p>Added a protected, virtual method UndoRecordBuffer to
TInstantCustomExposer to enable customization of its Undo
method.</p>
</li>
<li><p>Bug fix for # 1466586. Minor Error in Attribute Editor.
Force the main definition tabsheet to be active before trying
to focus the attribute Name or Size edit controls.</p>
</li>
<li><p>Fix for bug # 1467511. When adding a new attribute in
ModelMaker, in the attribute editor there aren't field types
other than “part” and “parts” available.</p>
</li>
<li><p>Updated unit tests. Added TestInstantObjectReference.pas unit
to the Tests folder. This new unit contains tests for the
TInstantObjectReference class.</p>
</li>
<li><p>InstantPart and InstantReference tests updated.</p>
</li>
<li><p>Bug Fix for # 1464661. TInstantReference.Assign causes AV. Check
for nil needed before trying to clone a TInstantReference
attribute object.</p>
</li>
</ul>
<p>Version 1.9.3 (2006-03-31)</p>
<ul>
<li><p>The IDE menu item “Build Database…” has been changed
to “Build InstantObjects Database…“.</p>
</li>
<li><p>The BDS IDEs do not have a “Database” Main menu item, so
the “&Build InstantObjects Database…” menu item is
inserted in the Main View menu item under the “Data Explorer”
item if it exists. Otherwise it is appended.</p>
</li>
<li><p>Fixed bug # 1410657, where TInstantSelector.GetIsChanged
fetches all non-retrieved objects looking for changes.</p>
</li>
<li><p>Fixed bug #1416083 (Storage Name ignored for external
Part attributes).</p>
</li>
<li><p>IBX: Internal transaction now AutoCommits.
Fix for bug 1402383 “Hanging Transactions”.
Warning: the bug is not fixed if you use Delphi 5.</p>
</li>
<li><p>Fix for Bug 1423157. Parts Attribute Insert causes Error.</p>
</li>
<li><p>Fixed Bug 1385748 “Nested calls to Store cause Stack Overflow”.</p>
</li>
<li><p>Added new public property RefItems to TInstantReferences.
This is an indexed property that returns the
TInstantObjectReference from the internal list, allowing you
to get a list of referenced object IDs without retrieving them.</p>
</li>
<li><p>FR # 1424512 - Added fields to enter user name, password,
sql role and character set name to IBX's ConnectionDef form.
InternalCreateDatabase uses current character set to create
physical database.</p>
</li>
<li><p>Added fields for user name, password, sql role, character
set and db library name for UIB broker. FR # 1424520.</p>
</li>
<li><p>Fixed leakage using TInstantObject instance via interface
pointer. Bug # 1424540.</p>
</li>
<li><p>PrimerCross: added ability to refresh grid contents
through the F5 key.</p>
</li>
<li><p>Test: minor changes to Model.pas to allow required circular
reference test structures.</p>
</li>
<li><p>Added test procedures to TestInstantReferences.pas to
facilitate memory leak testing for object structures
with circular references.</p>
</li>
<li><p>Added another test procedure to TestInstantReferences.pas
to facilitate memory leak testing for object structures
with circular references:
A -> B -> C -> A
|</p>
<ul>
<li>-> D -> E
then delete E.</li>
</ul>
</li>
<li><p>Test case to demostrate the infinite loop in
FreeCircularReferences.</p>
</li>
<li><p>Many fixes and enhancements in demos and tests.</p>
</li>
<li><p>Fixed leakage using TInstantObject instance via interface pointer.
Bug # 1424540.</p>
</li>
<li><p>Fixed bug # 1410138 where in some situations a Selector raises
an exception because database component name wasn't uploaded
from stream.</p>
</li>
<li><p>Fixed leakages with part and parts attributes in circular
reference check effort.</p>
</li>
<li><p>Unsupported column types found in the database no longer stop
the build/evolution process.</p>
</li>
<li><p>Fix for bug #1426929. For an application compiled in D2006,
adding entries into a new record in a DbGrid with an attached
Selector results in an application crash (stack overflow)
when trying to tab from the second column.</p>
</li>
<li><p>InstantExplorer memory leak resolved (bug n. 1423344).</p>
</li>
<li><p>Fix for bug #1423177 - Memory leak handling exceptions.</p>
</li>
<li><p>Fix for Bug 1375131: Evolving database with part attributes
causes “Class Not Registered” error when object is retrieved.</p>
</li>
<li><p>Changed how packages include resource files: we're back to the
standard approach of one res file per package.</p>
</li>
<li><p>Implemented overloaded version of TInstantParts.DestroyObject
and TInstantReferences.DestroyObject that receives a
TInstantObject parameter.</p>
</li>
<li><p>Fixed an unwished disconnection inside FreeCircularReference
method.</p>
</li>
<li><p>Fixes for ZeosDBO broker and catalog:</p>
</li>
<li><p>Changed SQLGenerator's drop index for MySQL database,
that doesn't support DROP INDEX statement. Bug # 1434240;</p>
</li>
<li><p>Built own SQLDelimiter method, because ZeosDBO's method
is available only when database (or at least the driver)
is connected;</p>
</li>
<li><p>Changed GetDBMSName method to return property value for
disconnected databases;</p>
</li>
<li><p>Changed physical IB/FB creation to support codepage
parameter (Character Set);</p>
</li>
<li><p>Fixed evolve error. Bug # 1429529;</p>
</li>
<li><p>Performed work arounds for MySQL driver (Bug # 1434244) that:</p>
<ol>
<li>doesn't name Primary Key;</li>
<li>return wrong value for Unique fields (true/false).</li>
</ol>
</li>
<li><p>Fixed AV (bug # 1434585) and leakage (bug # 1434710) inside
TInstantNavigationalQuery.</p>
</li>
<li><p>Fixed a leakage with some kinds of circular references.</p>
</li>
<li><p>Fixed bug # 1430106.</p>
</li>
<li><p>New Remember/Revert mechanism; fixed bugs:
1232576 Deleting from Selectors without eoAutoApply;
1410736 Revert method is overriding References attributes;
1430109 InternalRemoveObject of Exposers doesn't refresh grid;
1430117 Add/InsertObject (Exposers) with inconsistent behavior;
1430119 Leakage inserting record;
1430127 Leakage with InternalCancel and DeferInsert checked;
1436858 Exposer.AutoDispose disposing referenced object.</p>
</li>
<li><p>Fixed Info.Conflict assignment into
TInstantSQLResolver.ExecuteStatement method.</p>
</li>
<li><p>Fixed exception into D5 and IBX.
InternalCommit and InternalRollback methods.</p>
</li>
<li><p>Fixed bug #1430106 - TInstantBlobAttribute.Assign doesn't work
properly because LoadDataFromStream doesn't clear stream.</p>
</li>
<li><p>Fixed bug #1410143 - When an EditForm of a Person with image
that was just edited is opened, Primer raises an exception
with message “Unsupported graphic stream format”, “Metafile
is not valid” or “Stream read error”.</p>
</li>
<li><p>Fix for bug 1437815 - Exposer.RemoveObject messes up TDataSet
data.</p>
</li>
<li><p>Fixed bug # 1438840 Exposers with DeferInsert doesn't own object
before store.</p>
</li>
<li><p>Implemented Revert buffer for objects removed through
RemoveObject method.</p>
</li>
<li><p>Implemented bmp with TGraphicHeader recognition
(bug # 1439017).</p>
</li>
<li><p>Fixed bug # 1439025 Apply/RestoreState decrementing StateLevel.</p>
</li>
<li><p>Fixed bug # 1436858 Exposer.AutoDispose disposing referenced
object.</p>
</li>
<li><p>FR# 1440209 - Pass the object instance to OnGenerateId.</p>
</li>
<li><p>Fixed Bug # 1439851 - Required fields not checked in Exposers.</p>
</li>
<li><p>Fixed Bug # 1439234 - Params not working with MS Access.</p>
</li>
<li><p>Fixed bug # 1439091 - Exposer.AddObject duplicating object
(sorted lists).</p>
</li>
<li><p>Implemented Exposer's eoNotDisposeReferences option.</p>
</li>
<li><p>Fixed stack overflow due to recursive calls to
IsInsideCircularReference function;
Improvements into circular reference check.</p>
</li>
<li><p>Update of tests suite to be compatible with D5.
Need ubMock project files modified for compatibility with
D5 to compile and run the tests in D5.</p>
</li>
<li><p>Fixed Index out of Bounds error into FreeCircularReference.</p>
</li>
<li><p>Fixed bugs [SF #1447789] in InstantRtti.pas related to
compilation and handling of Boolean type in private unit
function AccessProperty.</p>
</li>
<li><p>Bug fix [SF #1447794] for ObjectFoundry.</p>
</li>
<li><p>Fixed bug [1446833] - Currency fields receives odd values.</p>
</li>
<li><p>Update to NexusDB Broker. The modifications mainly apply
to the connection dialog of the Remote server version.
Modifications to the Embedded version were due to
resource string renaming and some extra connection
dialog
button hints. Main changes:</p>
</li>
<li><p>The default Servername 'NexusDB@localhost' has been removed.
The default is now an empty string.</p>
</li>
<li><p>There is no longer an initial delay when launching the
connection
dialog as there is no checking of available
NexusDB servers until requested via the 'Load Servers' button.</p>
</li>
<li><p>The 'Load Servers' speed button has been enlarged and has a
caption to make its function more obvious.</p>
</li>
<li><p>There is more user feedback in the entry combo boxes to
indicate current status. Popup hints are also available on
the speed buttons.</p>
</li>
<li><p>A bug fix for enablement of the OK button when using alias
as path entries.</p>
</li>
<li><p>Implemented TInstantCustomExposer.Remove method.</p>
</li>
<li><p>Implemented eoAutoRemember option.</p>
</li>
<li><p>Fixed bug # 1461222 - “ORA-01722: invalid number” with
DBX broker.</p>
</li>
<li><p>Many small bug fixes and improvements.</p>
</li>
</ul>
<p>Version 1.9.2 (2006-01)</p>
<ul>
<li><p>Fixed possible AV in TInstantBrokerCatalog.</p>
</li>
<li><p>Many fixes to the circular references management code.</p>
</li>
<li><p>ZeosDBO: added IB/Fb/MySQL database creation support.</p>
</li>
<li><p>UIB: fixed AV that was raised trying to disconnect
UIBDatabase while it's being destroyed.</p>
</li>
<li><p>Delphi 2005/6: added InstantObjects entry for the
start up splash screens using the handled sphere icon.</p>
</li>
<li><p>ModelMaker: added a version resource to show in
ModelMaker's Tools/Expert Manager dialog.</p>
</li>
<li><p>Fixed bug #1403489. Fix for the problem that in some
situations, where there aren't circular references,
an object is incorrectly detached from a References
attribute.</p>
</li>
<li><p>Fix for EOleException in ModelMaker when cancelling
the dialog during the addition of a new IOAttribute.</p>
</li>
<li><p>Various internal refactorings and optimizations.</p>
</li>
<li><p>Removal of several memory leaks and sources of AVs.</p>
</li>
</ul>
<p>Version 1.9.1 (2005-11)</p>
<ul>
<li><p>Added support for Delphi 2006/Win32 (experimental).</p>
</li>
<li><p>Help file updated (Work In Progress).</p>
</li>
<li><p>Added new BPGs for easier installation (Work In
Progress).</p>
</li>
<li><p>Added support for UIB in Delphi 2005.</p>
</li>
<li><p>Added MSSqlCatalog in Delphi 2005.</p>
</li>
<li><p>Fixed infinite loop on application shutdown with
TInstantDBBuilder.</p>
</li>
<li><p>Fixes for compatibility with Delphi 5 Professional.</p>
</li>
<li><p>Several other bug fixes and small improvements.</p>
</li>
<li><p>A growing suite of unit tests. Now over 300.
(see the Tests folder).</p>
</li>
<li><p>Fixed a bug, which would cause memory leakage if the
public method TInstantReferences.LoadObjectsFromStream
was used.</p>
</li>
<li><p>Primer demo applications updated to reduce object memory
leakage.</p>
</li>
<li><p>Added ReferencedBy counting and processing to resolve
memory leaks caused by the reference counting semantics
of InstantObjects in circular references.</p>
</li>
<li><p>Added enhanced Remember/Revert functionality for
TInstantCustomExposer. Also includes Remember/Revert
functionality for IO Memo attributes (assumes text only data).</p>
</li>
<li><p>Added ZeosDBO (ZeosLib project, see http://zeosforum.net.ms/)
broker.</p>
</li>
<li><p>Changes for Kylix 3: Removed emf support under Linux and
added catalogs. Removed unecessary files for PrimerK3.</p>
</li>
<li><p>The storage name of a references attribute is now stored
into metadata, so when you reopen the class editor you
haven't lost this information.</p>
</li>
<li><p>InternalRefreshObjects for TInstantNavigationalQuery and
TInstantSQLQuery now uses a BusyObjects list with ownership
reference added to InstantObjects. This ensures that the
InstantObjects in the list are not destroyed prematurely
causing AVs.</p>
</li>
<li><p>Object ownership behaviour of TInstantNavigationalResolver
was made consistent with TInstantSQLResolver. Adding or
inserting objects to an InstantSelector now behaves
consistently for Navigational and SQL based brokers.</p>
</li>
<li><p>Fix bug in TInstantSQLResolver.ExecuteStatement that only
indicated Info.Success as true if executed query returned
one row.</p>
</li>
<li><p>Fix bug in TInstantNavigationalQuery.SetRowNumber so that
loop iteration does not try to go past Dataset.Eof.</p>
</li>
<li><p>TInstantQuery.GetConnector now uses the global function
InstantCheckConnector that will try to assign the
DefaultConnector if one has not already been assigned.</p>
</li>
<li><p>Embedded and External Parts now behave similarly with respect
to their contained InstantObjects (ie RefCounts and
ownership).</p>
</li>
<li><p>Enhanced TInstantCodeAttribute.GetSingularName function.</p>
</li>
<li><p>TInstantObject.RestoreState now checks that the object is
in the ObjectStore cache before trying to remove it.</p>
</li>
<li><p>Removed TInstantNavigationalQuery.TranslateCommand method
(duplicated code).</p>
</li>
<li><p>Now using old DB builder for catalog-less brokers, and new one
for the others.</p>
</li>
<li><p>Connection events don't work when database is not connected
through TInstantConnector decendant. They have been removed.</p>
</li>
<li><p>Fix for bug # 1285523: Parts of Parts Are Lost when
UpdateExternalPartsMap. When Model include a parts of parts
schema, sometimes when store first level part the second
level parts are lost in DataBase.</p>
</li>
<li><p>Allow for catalogs that don't support reading all metadata
(like an XML catalog).</p>
</li>
</ul>
<p>Version 2.0 Alpha 1 (1.9.0.1) (2005-07)</p>
<ul>
<li><p>Added UIB (Unified InterBase, see http://www.progdigy.com/modules.php?name=UIB)
broker.</p>
</li>
<li><p>Added support for Delphi 2005 (D9), Win32 personality only.
Brokers supported: ADO, BDE, DBX, IBX, NexusDbSQL, XML.</p>
</li>
<li><p>Removed UsePreparedQuery support; switch to the new StatementCache.</p>
</li>
<li><p>New TInstantConnector.OnGenerateId event, used to supply a custom
Id generation strategy. Use it together with IdDataType/IdSize.</p>
</li>
<li><p>IdDataType and IdSize: see IdDataType_and_IdDataSize.txt.</p>
</li>
<li><p>Many fixes and improvenet to the new external storage mapping strategy.</p>
</li>
<li><p>StatementCache: see Statement_Cache.txt.</p>
</li>
<li><p>New performance tests (Retrieve and Statement Cache) in Primer.</p>
</li>
<li><p>A growing suite of unit tests (see the Tests folder).</p>
</li>
<li><p>TInstantPump: see InstantPump.txt.</p>
</li>
<li><p>Database structure evolution:
see [RFC]_IO-001_Database_Structure_Evolution.txt
until more complete docs are available.</p>
</li>
<li><p>Many bug fixes and small improvements. Please see our trackers:</p>
<p>http://sourceforge.net/tracker/?group_id=94747&atid=608935
http://sourceforge.net/tracker/?group_id=94747&atid=608938</p>
</li>
</ul>
<p>Version 1.6.7 (2004-11-17) UNOFFICIAL</p>
<ul>
<li><p>Added support for IOMETADATA Keyword in metadata class definition and
upgrade of ObjectFoundry for ModelMaker 7 & 8 support.
Please refer to IOMETADATA_Keyword.txt for details.</p>
</li>
<li><p>ExternalPart, ExternalParts and ExternalReferences support.</p>
</li>
<li><p>Added InstantNexusSQL Broker</p>
</li>
<li><p>Changes to IBX Broker:</p>
</li>
<li><p>option to disable the use of delimited identifiers in dialect 3 databases</p>
</li>
<li><p>implemented InternalCreateDatabase and GetDatabaseExists</p>
</li>
<li><p>LoginPrompt support and OnLogin event in Connections based on TCustomConnection</p>
</li>
</ul>
<p>Version 1.6.6 (2004-07-29) UNOFFICIAL</p>
<ul>
<li><p>Currency Support:
Look into Primer Demo for a little explanation.</p>
</li>
<li><p>Graphic Support:
Look into Primer Demo for a little explanation.</p>
</li>
<li><p>PrimerCross chaged for Currency and Graphic support</p>
</li>
<li><p>ConnectionManager changes:</p>
</li>
<li><p>ConnectionDefs moved from Form to ConnectionManager</p>
</li>
<li><p>ConnectByName method added in ConnectionManager to connect without showing form</p>
</li>
<li><p>atOpen option added in ConnectionManager to Open connections file (.con or .xml)</p>
</li>
<li><p>UsePreparedQuery support:
Added UsePreparedQuery support for TInstantSQLBroker
(more details in Preprared_Query_Support.txt).</p>
</li>
<li><p>Primer demo: PerformanceView form changed to make tests with UsePreparedQuery
and other options</p>
</li>
<li><p>Added support for XML streaming in blob fields (Part, Parts, References)
(more details in XML_Blob_Streaming_release_notes.txt)</p>
</li>
<li><p>Added OnAddClassFieldDef event and BreakThorough method to speed-up exposer's fieds creation.</p>
</li>
<li><p>Exposer's Undo method now is Virtual and UndoBuffer is available.</p>
</li>
</ul>
<p>Version 1.6.5 (2004-05-23) UNOFFICIAL</p>
<ul>
<li><p>Kylix Porting (design, core and DbExpress broker).
More details in Kylix3_porting_release_notes.txt.</p>
</li>
<li><p>Kylix porting of Primer Demo.</p>
</li>
<li><p>XML format for connection file managed by connectionmanager.</p>
</li>
</ul>
<p>Version 1.6.0 (2003-12-19) LAST COMMERCIAL VERSION</p>
<ul>
<li><p>SQL based broker architecture introduced.</p>
</li>
<li><p>dbExpress broker added. (InterBase, MSSQL, DB2, Oracle, MySQL)</p>
</li>
<li><p>IBX broker now SQL based.</p>
</li>
<li><p>ADO/MSSQL broker now SQL based.</p>
</li>
<li><p>Object caching improved.</p>
</li>
<li><p>ObjectFoundry: Added attribute IsRequired awareness.</p>
</li>
<li><p>ObjectFoundry: Added attribute DefaultValue awareness.</p>
</li>
<li><p>ObjectFoundry: Fixed bug when applying attribute options and methods.</p>
</li>
<li><p>TInstantRelationalQuery.RecNoOfObject now returns correct record number when sequenced.</p>
</li>
<li><p>TInstantObject.AttributeAddress now protected and virtual.</p>
</li>
<li><p>Added keyword 'embedded' to non-stored classes with no attributes to improve ModelMaker support.</p>
</li>
<li><p>InstantRtti.AccessProperty; Fixed 'Invalid type' error on Boolean properties.</p>
</li>
<li><p>TInstantCustomExposer.LoadFieldValue; Fixed bug causing strings to be copied beyond buffer size.</p>
</li>
<li><p>TInstantCustomExposer: FieldDefs are now created from Fields to improve performance when using
persistent fields.</p>
</li>
</ul>
<p>Version 1.5.0 (2003-02-25)</p>
<ul>
<li><p>Added IProviderSupport to TInstantExposer and TInstantSelector.</p>
</li>
<li><p>Added Params to TInstantSelector and all brokers.</p>
</li>
<li><p>TInstantIQL; Added support for Params in; “:[ParamName]” format.</p>
</li>
<li><p>Added eoSyncEdit to TInstantExposerOptions to enable refreshing
of current edit buffer when in edit mode and object changes elsewhere.</p>
</li>
<li><p>Added foRecurseNesting to TInstantFieldOptions to control recursive creation
of nested DataSet fields.</p>
</li>
<li><p>Added option 'required' to attributes.</p>
</li>
<li><p>Added TInstantAttribute.IsRequired.</p>
</li>
<li><p>Added TInstantAttribute.IsMandatory.</p>
</li>
<li><p>TInstantObject; SaveState, ApplyState and RestoreState are now virtual.</p>
</li>
<li><p>TInstantIndexMetadata.Options changed to TIndexOptions to support additional
options.</p>
</li>
<li><p>Added TInstantObjectNotifiers.AcceptItem.</p>
</li>
<li><p>Added TInstantRelationalQuery.CreateTranslator.</p>
</li>
<li><p>Added TInstantCustomExposer.ReleaseObject.</p>
</li>
<li><p>Added TInstantRelationalQuery.RecNoOfObject to support non-sequenced datasets
in GotoObject/InternalIndexOfObject.</p>
</li>
<li><p>Added TInstantCustomExposer.RefreshCurrentObject.</p>
</li>
<li><p>Added ConvertToText and ConvertToBinary methods to allow XML streaming.</p>
</li>
<li><p>Changed streaming to allow XML streaming of foreign objects.</p>
</li>
<li><p>XML-processor now accepts blanks in stream.</p>
</li>
<li><p>Model can now be exported to XML via Model Explorer.</p>
</li>
<li><p>Fixed problem when loading class metadatas from DLL resource.</p>
</li>
<li><p>TInstantCustomExposer: Fixed bug causing metadata of inherited attributes
to be ignored during field generation.</p>
</li>
<li><p>InstantCustomExposer.GotoObject now moves cursor to the specified
object if it exists regardless whether it has been loaded or not.</p>
</li>
<li><p>TInstantCustomExposer.GotoObject: Fixed bug preventing object from being
found when called immediately after opening dataset.</p>
</li>
<li><p>TInstantCustomExposer.ApplyChanges now calls PostChanges first to commit any
pending changes.</p>
</li>
<li><p>TInstantSelector.RefreshData now refreshes objects from storage.</p>
</li>
<li><p>Fixed bugs in TInstantBlob causing content to be repeated or truncated.</p>
</li>
<li><p>TInstantRelationalTranslator.EmbraceString now uses LeftDelimiter and
RightDelimiter.</p>
</li>
<li><p>Fixed refresh problem in exposers at design time when changing model via code.</p>
</li>
<li><p>Fixed various issues with TInstantExposer when used with DataSnap.</p>
</li>
<li><p>Added support for varOleStr, varNull and varEmpty to InstantCompareValues.</p>
</li>
<li><p>TInstantRelationalBroker; Fixed bug causing objects not to be refreshed if
updates were performed by another session.</p>
</li>
<li><p>TInstantSelector; Fixed AV error that occured when the selector is loading
and its associated connector is not yet loaded.</p>
</li>
<li><p>TInstantBlobStream.Create; No longer fails if attribute cannot be found.</p>
</li>
<li><p>InstantFindAttribute; Fixed attempt to traverse through unassigned object
property.</p>
</li>
<li><p>Added ADS, DBISAM and FF brokers to Delphi 7 version.</p>
</li>
</ul>
<p>Version 1.3.0 (2002-09-12)</p>
<ul>
<li><p>FlashFiler broker added.</p>
</li>
<li><p>DBISAM 3.16 supported.</p>
</li>
<li><p>TInstantConnector.Objects array added.</p>
</li>
<li><p>TInstantConnector.GenerateId added.</p>
</li>
<li><p>TInstantIBXBroker: Fixed duplicate index name error.</p>
</li>
<li><p>TInstantAttribute: GetValue/SetValue is now virtual.</p>
</li>
</ul>
<p>Version 1.2.2 (2002-07-30) - Delphi 7 Companion CD</p>
<ul>
<li><p>Delphi 7 supported.</p>
</li>
<li><p>TInstantExposer: When exposing TCollection instances items are now created
with TCollectionItem.Create to ensure proper initialization.</p>
</li>
<li><p>TInstantCustomExposer: Fixed access violation when deleting objects that are
not TInstantObject instances.</p>
</li>
<li><p>Runtime package: Fixed bug hindering model from being loaded.</p>
</li>
<li><p>ADO broker: Added DB2 awareness.</p>
</li>
<li><p>TInstantDateTime: 'TIME' can now be used as default value for current time.</p>
</li>
<li><p>TInstantDateTime: Fixed convert error when setting default value.</p>
</li>
<li><p>TInstantObject: When refreshing object that was disposed by another session,
the object is now marked as non-persistent and all attributes are reset.</p>
</li>
<li><p>TInstantCustomExposer: Added RemoveObject and DeleteObject.</p>
</li>
<li><p>TInstantObject: Added IsOperationAllowed and VerifyOperation.</p>
</li>
<li><p>Primer demo: Import/export of multiple objects added.</p>
</li>
</ul>
<p>Version 1.2.1 (2002-06-28)</p>
<ul>
<li><p>InstantGetClass: Now returns nil instead of raising exception if class is
not TInstantObject descendant.</p>
</li>
<li><p>Added InstantGetClasses to allow class enumeration.</p>
</li>
<li><p>Metadata: 'DATE' is now recognized as default value for DateTime attributes.</p>
</li>
<li><p>Fixed bug causing run-time model to be out of sync when removing or adding
model units without changing code.</p>
</li>
<li><p>Exposer/Selector: Fixed bug causing data to be left in record buffer
when adding a new row to an empty dataset and cancelling.</p>
</li>
<li><p>Exposer/Selector: Added Options property. Property AutoApply changed to
eoAutoApply option.</p>
</li>
<li><p>Exposer/Selector: Added eoDeferInsert option to control whether objects are
inserted immediately when inserting/appending new rows or when posting
the row.</p>
</li>
<li><p>Exposer/Selector: Cursor no longer moves to first row when cancelling insert
and Sorted is True.</p>
</li>
<li><p>BDE broker: Fixed bug in SQL translation for MS SQL Server via ODBC</p>
</li>
<li><p>BDE broker: Fixed bug in SQL translation for DB2 (ODBC and SQL Link)</p>
</li>
<li><p>DBISAM broker: Fixed bug causing remote databases being treated as local.</p>
</li>
<li><p>ObjectFoundry Expert: Fixed problem with classes not descending from
TInstantObject being imported as embedded</p>
</li>
<li><p>ObjectFoundry Expert: Fixed error “Too many arguments in metadata” for
long metadata sections.</p>
</li>
</ul>
<p>Version 1.2.0 (2002-05-16)</p>
<ul>
<li><p>ObjectFoundry enabled.</p>
</li>
<li><p>DBISAM broker compiled with DBISAM 3.10.</p>
</li>
<li><p>Model Explorer now shows relations of non-stored classes in relation-view.</p>
</li>
<li><p>Fixed error causing Memo attributes to become String attributes when defined via
the Attribute Editor.</p>
</li>
<li><p>Added virtual TInstantObject.GenerateId for generating custom Ids.</p>
</li>
<li><p>Added TInstantObject.Unchanged to allow ignoring changes.</p>
</li>
<li><p>Added TInstantReference.DestroyObject and TInstantReferences.DestroyObject to
release object without clearing reference.</p>
</li>
<li><p>Added TInstantObject.OwnerChanged to notify when owner changes.</p>
</li>
<li><p>Fixed error when reading empty values from XML file.</p>
</li>
<li><p>Fixed stream position bug when streaming multiple objects from XML file.</p>
</li>
<li><p>Fixed bug causing objects read from stream to be only partly stored.</p>
</li>
<li><p>Added InstantReadObjects and InstantWriteObjects to read and write multiple objects
from and to a stream.</p>
</li>
<li><p>BuildDatabase with IBX broker now fails on string fields without size.</p>
</li>
</ul>
<p>Version 1.11 (2002-04-22)</p>
<ul>