-
Notifications
You must be signed in to change notification settings - Fork 10
/
291_3sort_visual_thread.txt
730 lines (650 loc) · 20.6 KB
/
291_3sort_visual_thread.txt
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
//Example of the memo, thread load and save capabilities of the VCL
//Task: Make the 3rd algo too as a solution!
//Get the text and write your memo memories, locs=455
//BubbleSortArray: TSortArray;
//SelectionSortArray: TSortArray;
//QuickSortArray: TSortArray;
Program Sorting_Form_ThreadDemo_3Solution;
//uses StringGridTools, TThread Class;
const LBASE = 20;
TBASE = 25;
VARRSIZE = 200;
WIDE = 200;
SLOWBUBBLE = 0; SLOWSELECT = 0; SLOWQUICK = 0; //visual slowmotion of thread
//**************************************************
type
//TThreadSortArray = array[0..MaxInt div SizeOf(Integer) - 1] of Integer;
TmSortArray = array[0..VARRSIZE] of Integer;
var
mymemo: TMemo;
mpaint, mpaint2, mpaint3: TPaintBox;
inFrm: TForm;
stat: TStatusbar;
BubbleSArray,SelectionSArray,QuickSArray: TSortArray;
selectedFile: string;
ArraysRandom: boolean;
FA, FB, FI, FJ: Integer;
ThreadsRun: byte;
procedure PaintLine(Canvas: TCanvas; I, Len: Integer); forward;
procedure RandomizeArrays;
var i: Integer;
begin
assert2(high(BubbleSArray) <= 180, 'array too big');
//Check(high(BubbleSortArray) <= 170, 'array too big');
if not ArraysRandom then begin
Randomize;
writeln(inttostr(ARRSIZE))
for i:= 1 to ARRSIZE - 1 do
BubbleSArray[I]:= Random(170);
SelectionSArray:= BubbleSArray;
QuickSArray:= BubbleSArray;
stat.simpletext:= 'Just random array done';
end;
end;
procedure PaintRandomArray;
var I: integer;
begin
mPaint2.Canvas.Pen.Color:= clblue;
for I:= Low(SelectionSArray) to High(SelectionSArray) do
PaintLine(mpaint2.Canvas, I, SelectionSArray[I]);
mPaint.Canvas.Pen.Color:= clgreen;
for I:= Low(BubbleSArray) to High(BubbleSArray) do
PaintLine(mpaint.Canvas, I, BubbleSArray[I]);
mPaint3.Canvas.Pen.Color:= clpurple;
for I:= Low(QuickSArray) to High(QuickSArray) do
PaintLine(mpaint3.Canvas, I, QuickSArray[I])
end;
procedure PaintLine(Canvas: TCanvas; I, Len: Integer);
begin
canvas.moveTo(0, I * 2 + 1)
canvas.LineTo(Len, I * 2 + 1)
//Canvas.PolyLine([Point(0, I * 2 + 1), Point(Len, I * 2 + 1)]);
end;
procedure DoVisualSwap2;
begin
with mpaint2 do begin
//invalidate;
Canvas.Pen.Color:= clBtnFace;
PaintLine(Canvas, FI, FA);
PaintLine(Canvas, FJ, FB);
Canvas.Pen.Color:= clGreen;
PaintLine(Canvas, FI, FB);
PaintLine(Canvas, FJ, FA);
end;
end;
procedure DoVisualSwap;
begin
with mpaint do begin
//invalidate;
Canvas.Pen.Color:= clBtnFace;
//Canvas.Pen.Color:= clBlue;
PaintLine(Canvas, FI, FA);
PaintLine(Canvas, FJ, FB);
Canvas.Pen.Color:= clRed;
PaintLine(Canvas, FI, FB);
PaintLine(Canvas, FJ, FA);
end;
end;
procedure VisualSwap2(A, B, I, J: Integer);
begin
//symbol rename
FA:= A; FB:= B;
FI:= I; FJ:= J;
//DoVisualSwap;
DoVisualSwap2;
end;
procedure VisualSwap(A, B, I, J: Integer);
begin
//symbol rename
FA:= A;
FB:= B;
FI:= I;
FJ:= J;
//if bolTHslowmotion then
// sysutils.sleep(5);
DoVisualSwap;
DoVisualSwap2;
end;
procedure TmSelectionSort(var A: TmSortArray);
// syncedit
var
indx, J, T: Integer;
begin
for indx:= Low(A) to High(A) - 1 do
for J:= High(A) downto indx + 1 do
if A[indx] > A[J] then begin
VisualSwap(A[indx], A[J], indx, J);
T:= A[indx];
A[indx]:= A[J];
A[J]:= T;
//if Terminated then Exit;
end;
end;
{ TBubbleSort }
procedure TmBubbleSort(var A: TmSortArray);
var
I, J, T: Integer;
begin
for I:= High(A) downto Low(A) do
for J:= Low(A) to High(A) - 1 do
if A[J] > A[J + 1] then begin
VisualSwap2(A[J], A[J + 1], J, J + 1);
T:= A[J];
A[J]:= A[J + 1];
A[J + 1]:= T;
end;
end;
procedure QuickSort(var A: TmSortArray; iLo, iHi: Integer);
var
Lo, Hi, Mid, T: Integer;
begin
Lo:= iLo;
Hi:= iHi;
// inline variable
Mid:= A[(Lo + Hi) div 2];
repeat
while A[Lo] < Mid
do Inc(Lo);
while A[Hi] > Mid
do Dec(Hi);
if Lo <= Hi then begin
VisualSwap(A[Lo], A[Hi], Lo, Hi);
T:= A[Lo];
A[Lo]:= A[Hi];
A[Hi]:= T;
Inc(Lo);
Dec(Hi);
end;
until Lo > Hi;
if Hi > iLo then QuickSort(A, iLo, Hi);
if Lo < iHi then QuickSort(A, Lo, iHi);
//if Terminated then Exit;
end;
procedure TmQuickSort(var A: TmSortArray);
begin
QuickSort(A, Low(A), High(A));
end;
Function getRandomText: string;
var i, getback: integer;
begin
for i:= 1 to 1400 do begin
getback:= Random(58)+65
if (getback < 91) OR (getback > 96) then
result:= result + Chr(getback) +Chr(32)
end;
end;
//Event Handler - Closure ***************************************
Procedure GetMediaData(self: TObject);
begin
if PromptForFileName(selectedFile, 'Text files (*.txt)|*.txt','',
'Select your mX3 test file',
ExePath+'examples\', False) // Means not a Save dialog !
then begin
// Display this full file/path value
ShowMessage('Selected file = '+selectedFile);
Stat.simpletext:= selectedFile;
mymemo.lines.LoadFromFile(selectedFile);
end;
end;
//Event Handler - Closure
procedure ThreadDone(Sender: TObject);
begin
Dec(ThreadsRun);
if ThreadsRun = 0 then begin
//StartBtn.Enabled:= True;
//randArray.ArraysRandom:= False;
stat.simpletext:= 'All '+inttoStr(threadsRun)+' threads gone';
end;
end;
procedure BtnStartClick(self: TObject);
begin
//mymemo.lines.savetofile(ExePath+'\examples\mymemo5.txt');
mymemo.lines.text:= getRandomText;
mPaint.invalidate;
mPaint2.invalidate;
mPaint3.invalidate;
ThreadsRun:= 3;
RandomizeArrays;
//PaintRandomArray;
{with TSortThread.Create(mPaint, bubblesarray) do begin
slowmotion:= 200; end;}
//marr:= TRandomArray.create;
//marr.RandomizeArrays(inFrm, false)
//marr.PaintArray(mPaint)
//bubblesortbox
with TBubbleSort.Create(mpaint, BubbleSArray) do begin
writeln('Thrd Sort ID :'+intToStr(CurrentThreadID))
bolTHslowmotion:= true;
slowmotion:= SLOWBUBBLE;
//sort run
OnTerminate:= @ThreadDone;
end;
//selectionsortbox
with TSelectionSort.Create(mpaint2, SelectionSArray) do begin
writeln('Thrd Selection ID :'+intToStr(CurrentThreadID))
bolTHslowmotion:= true;
slowmotion:= SLOWSELECT;
OnTerminate:= @ThreadDone;
end;
//quicksortbox
with TQuickSort.Create(mpaint3, QuickSArray) do begin
writeln('Thrd Quick ID :'+intToStr(CurrentThreadID))
bolTHslowmotion:= true;
slowmotion:= SLOWQUICK;
OnTerminate:= @ThreadDone;
end;
//TmSelectionSort(selectionSortArray)
//TmBubbleSort(bubbleSortArray)
//mymemo.lines.SaveToFile(selectedFile);
Stat.simpletext:= ' Start has been sorted' ;
end;
procedure GetRandom(self: TObject);
begin
//mymemo.lines.savetofile(ExePath+'\examples\randthread.txt');
mymemo.lines.text:= getRandomText;
mPaint.invalidate;
mPaint2.invalidate;
mPaint3.invalidate;
RandomizeArrays;
PaintRandomArray;
end;
procedure BtnCleanClick(self: TObject);
begin
//PaintRandomArray;
mPaint.invalidate;
mPaint2.invalidate;
mPaint3.invalidate;
//mymemo.lines.SaveToFile(selectedFile);
//Stat.simpletext:= selectedFile+ ' has been saved' ;
end;
procedure LabelFactory(l,t,w,h: smallint; atxt: shortstring);
begin
with TLabel.create(self) do begin
parent:= infrm;
setbounds(l,t,w,h);
font.size:= 15;
font.color:= clpurple;
font.style:= [fsitalic];
caption:= atxt;
end;
end;
//***********************Form Builder*********************************
procedure SetForm;
var
mi, mi1, mi2, mi3: TMenuItem;
mt: TMainMenu;
mPanel: TPanel;
begin
inFrm:= TForm.Create(self);
mPaint:= TPaintBox.Create(inFrm);
mPaint2:= TPaintBox.Create(inFrm);
mPaint3:= TPaintBox.Create(inFrm);
stat:= TStatusbar.Create(inFrm);
mymemo:= TMemo.create(inFrm);
with inFrm do begin
caption:= '********ThreadSortMonster3************';
height:= 630;
width:= 1100;
Position:= poScreenCenter;
//onClose:= @CloseClick;
Show;
end;
mPanel:= TPanel.Create(infrm);
with mPanel do begin
Parent:= inFrm;
SetBounds(LBASE+10,TBASE+75,590,364)
BevelOuter:= bvLowered
end;
LabelFactory(LBASE+20,TBASE+40,WIDE,WIDE*2,'BubbleSort ');
with mPaint do begin
Parent:= mPanel;
SetBounds(LBASE-10,TBASE-10,WIDE,WIDE*2)
//onpaint:= @closeclick;
end;
LabelFactory(LBASE+220,TBASE+40,WIDE,WIDE*2,'SelectionSort ');
with mPaint2 do begin
Parent:= mPanel;
SetBounds(LBASE+190,TBASE-10,WIDE,WIDE*2)
end;
LabelFactory(LBASE+420,TBASE+40,WIDE,WIDE*2,'QuickSort ');
with mPaint3 do begin
Parent:= mPanel;
SetBounds(LBASE+390,TBASE-10,WIDE,WIDE*2)
end;
with mymemo do begin
Parent:= inFrm;
SetBounds(LBASE+620,TBASE+40,WIDE*2,WIDE*2)
font.size:= 14;
color:= clsilver;
font.color:= clwhite;
wordwrap:= true;
scrollbars:= ssVertical;
end;
with TBitBtn.Create(inFrm) do begin
Parent:= inFrm;
setbounds(LBASE+ 590, TBASE+ 460,150, 55);
caption:= 'Random';
font.size:= 12;
glyph.LoadFromResourceName(getHINSTANCE,'CL_MPPAUSE');
mXButton(05,05,width, height,12,12,handle);
//event handler
onclick:= @GetRandom;
end;
with TBitBtn.Create(inFrm) do begin
Parent:= inFrm;
setbounds(LBASE+ 430, TBASE+460,150, 55);
caption:= 'Clear';
font.size:= 12;
glyph.LoadFromResourceName(getHINSTANCE,'CL_MPEJECT');
mXButton(05,05,width, height,12,12,handle);
onclick:= @BtnCleanClick;
end;
with TBitBtn.Create(inFrm) do begin
Parent:= inFrm;
setbounds(LBASE+750,TBASE+460,150, 55);
caption:= 'Start Sort';
font.size:= 12;
//(getHINSTANCE,'PREVIEWGLYPH');
glyph.LoadFromResourceName(getHINSTANCE,'CL_MPSTEP');
mXButton(05,05,width, height,12,12,handle);
SetFocus;
onclick:= @BtnStartClick;
end;
with TLabel.create(inFrm) do begin
parent:= inFrm;
setbounds(LBASE+15,TBASE-15,180,20);
font.size:= 28;
font.color:= clteal;
font.style:= [fsunderline]
caption:= 'Thread Sort Box ';
end;
with TLabel.create(inFrm) do begin
parent:= inFrm;
setbounds(LBASE+622,TBASE-1,180,20);
font.size:= 18;
font.color:= clteal;
font.style:= [fsunderline]
caption:= 'Random Text:';
end;
mt:= TMainMenu.Create(infrm)
with mt do begin
//parent:= frmMon;
end;
mi:= TMenuItem.Create(mt)
mi1:= TMenuItem.Create(mt)
mi2:= TMenuItem.Create(mt)
mi3:= TMenuItem.Create(mi)
with mi do begin
//parent:= frmMon;
Caption:='Play Media';
Name:='ITEM';
mt.Items.Add(mi);
//OnClick:= @GetMediaData;
end;
with mi1 do begin
Caption:='Show Video';
Name:='ITEM2';
mt.Items.Add(mi1) ;
//OnClick:= @GetVideoData
end;
with mi2 do begin
Caption:='Open CD Player';
Name:='ITEM3';
mt.Items.Add(mi2);
//OnClick:= @OPenCD;
end;
with mi3 do begin
Caption:='Open maXbook';
Name:='ITEM4';
//mi.Items[0].add(mi3);
end;
with Stat do begin
parent:= inFrm;
stat.SimplePanel:= true;
end;
end;
begin
memo2.font.size:= 14;
SetForm;
mymemo.lines.text:= getRandomText;
getRandom(self);
//SearchAndOpenDoc(ExePath+MEDIAPATH)
//mylistview:= TFormListView.Create(self);
maxForm1.color:= clsilver;
//ShellExecute Parallels in W64
//ExecuteCommand('cmd','/k FC /L /N C:\maxbook\maxbox3\maxbox391.exe c:\maxbook\maxbox3\maxbox3.exe')
//ExecuteCommand('cmd','/k FC /L /N C:\maxbook\maxbox3\maxboxdef1.ini c:\maxbook\maxbox3\maxboxdef2.ini')
writeln('HEXtester '+#65+' '+chr($41)+' '+chr(65))
if IsMultiThread then writeln('is multithread');
End.
//-------------------------------------------------
source is tlistview
target is tform
procedure TfMerit.SourceLVStartDrag(Sender: TObject;
var DragObject: TDragObject);
var TargetLV:TListView;
begin
// TargetLV:=nejak urcit dle potreby
TargetLV.BeginDrag(True)
end;
procedure TfMerit.SourceLVMouseDown(Sender: TObject;
Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
begin
MouseIsDown:=True;
end;
procedure TfMerit.SourceLVMouseUp(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
begin
MouseIsDown:=False;
if (Sender as TListView).Dragging then
(Sender as TListView).EndDrag(False);
end;
procedure TfMerit.SourceLVMouseMove(Sender: TObject; Shift: TShiftState;
X, Y: Integer);
begin
if (Sender.ClassNameIs('TListView')) then
begin
if MouseIsDown and ((Sender as TListView).SelCount>0) then
(Sender as TListView).BeginDrag(True);
end;
end;
procedure TfMerit.TargetLVDragOver(Sender, Source: TObject; X,
Y: Integer; State: TDragState; var Accept: Boolean);
var T:TListView;
begin
T:=Sender as TListView;
Accept:=Assigned(T.GetItemAt(X,Y));
end;
procedure TfMerit.TargetLVDragDrop(Sender, Source: TObject; X,
Y: Integer);
var It:TListItem;
LV1,LV2:TListView;
begin
LV1:=Source as TListView;
LV2:=Sender as TListview;
It:=LV2.GetItemAt(X,Y);
if Assigned(It) then
begin
// zpracuj polozku ze zdrojoveho listview
end;
end;
procedure TControlParentR(Self: TControl; var T:TWinControl); begin T:= Self.Parent; end;
procedure TControlParentW(Self: TControl; T: TWinControl); begin Self.Parent:= T; end;
RegisterPropertyHelper(@TControlParentR, @TControlParentW, 'PARENT');
RegisterProperty('Parent', 'TWinControl', iptRW);
procedure TTXPTool.LVPFFDblClick(Sender: TObject);
var
tmpList : TListItem;
fn ; string;
ft : integer;
fs : integer;
begin
tmpList := LVPFF.Selected;
if tmplist<>nil then
begin
fn := tmpList.Caption
ft := tmpList.SubItems.Strings[1];
fs := tmpList.SubItems.Strings[3];
if pos('Wave', ft)>0 then
PlayThisOne1Click(nil);
if pos('Jpg', ft)>0 then
ShowJpg1Click(nil);
if pos('Targa', ft)>0 then
ShowTga1Click(nil);
if pos('Pcx', ft)>0 then
ShowPcx1Click(nil);
if pos('Mission Sound Collection', ft)>0 then
ShowPwf1Click(nil);
end;
end;
Changes to V3.9 (five !!)
//NoErrMsg variable
//- Controls whether the application displays an error message when a runtime error
//occurs.
{CompareValue function
- Returns the relationship between two numeric values.}
{SameValue function
- Indicates whether two floating-point values are (approximately) equal.}
{Sign function
- Indicates whether a numeric value is positive, negative, or zero.}
{SimpleRoundTo function
- Rounds a floating-point value to a specified digit or power of ten using
asymmetric arithmetic rounding.}
{AddExitProc procedure
- Add procedure to exit list.}
{ExitCode variable
- Contains the application's exit code.}
{UnicodeToUtf8 function
- Converts a string of Unicode characters into a UTF-8 string.}
{WideCharToStrVar procedure
- Converts Unicode string to a single or multi byte character data.}
{CreateClassID function
- CreateClassID generates a new GUID and returns it as a string.
{OleStrToString function
- Copies data received from a COM interface to a string.
{Supports function
- Indicates whether a given object or interface supports a specified interface.
{VarComplexToPolar procedure
- Computes the polar coordinates that correspond to a custom Variant that
represents a complex number.}
FindDatabaseID function
- Returns the ID of a specified database.
FindFieldID function
- Returns the ID of a specified field.
FindTableID function
- Returns the ID of a specified table.
GetAttrID function
- Returns the ID of the attribute set associated with a field.
{AnsiToNative function
- Converts a string from the ANSI character set to the character set associated
with a given locale.}
{NativeCompareStr function
- Compares strings based on a database locale case sensitively.
NativeCompareStrBuf function
- Compares null-terminated strings based on a database locale case sensitively.
{PasswordDialog function
- Displays a dialog box that prompts the user for the password of a local
password-protected table.}
{CheckSqlTimeStamp procedure
- Checks whether a TSQLTimeStamp value represents a valid date and time.}
{DateTimeToSQLTimeStamp function
- Converts a TDateTime value to a TSQLTimeStamp value.}
{NullSQLTimeStamp constant
- Represents a NULL TSQLTimeStamp value.}
{IsAbortResult function
- Checks the return value from a modal form dialog and indicates whether the user
selected Abort or Cancel.}
{LoginDialog function
- Brings up the database Login dialog to allow the user to connect to a database
server.
LoginDialogEx function
- Brings up the database Login dialog to allow the user to connect to a database
server. }
{RemoteLoginDialog function
- Brings up the database Login dialog to allow the user to connect to a database
server. }
{StripAllFromResult function
- Converts a TModalResult value from a constant that refers to all to the
corresponding simple constant.}
{AcquireExceptionObject function
- Allows an exception object to persist after the except clause exits.}
(*ExtractShortPathName function
- Converts a file name to the short 8.3 form.
IncludeTrailingBackslash function
- Ensures path name ends with delimiter
IncludeTrailingPathDelimiter function
- Ensures path name ends with delimiter.
IsPathDelimiter function
- Indicates whether the byte at position Index of a string is the path delimiter.*)
{FloatToTextFmt function
- Converts a floating-point value to to an unterminated character string, using
a specified format. }
(*CreateGrayMappedRes function
- Remaps the standard gray colors in a bitmap resource with the system grays.
CreateMappedBmp function
- Changes the color table in a bitmap. *)
{GetDefFontCharSet function
- Returns the character set of the default system font.}
{GraphicExtension function
- Returns the default file-name extension of a graphics object.}
{GraphicFilter function
- Returns a file filter compatible with the Filter property of an Open or Save
dialog.}
{GetExtensionVersion function
- Returns the name and version number of an ISAPI or NSAPI application.}
{Rename procedure
- Changes the name of an external file.} // there are 2 renames!!
{Truncate procedure
- Deletes all the records after the current file position.}
SameFileName function
- Compares file names based on the current locale.*)
{DefaultTextLineBreakStyle variable
- Specifies the characters that are used by default to separate lines in text.}
{GetEnvironmentVariable function
- Returns environment variable value..!!!}
{Slice function
- Returns a sub-section of an array.}
{UnloadPackage procedure
- Unloads a package. !!!}
{Exclude procedure
- Removes an element from a set.}
{Include procedure
- Adds an element to a set.!!!}
{FindClass function
- Finds and returns a class that is derived from TPersistent.}
{FindClassHInstance function
- Returns the instance handle for the module in which a class type is defined.
{GetClass function
- Returns a registered persistent class given its name.
IntToIdent function
- Uses a mapping array to convert integers into their corresponding string
identifiers. }
{BeginThread function
- Spawns a separate thread of execution.
CheckSynchronize function
- Allows background threads to synchronize their execution with the main thread.
EndThread function
- Terminates the execution of a thread.
ForegroundTask function
- Indicates whether the current thread is running in the foreground.
IsMultiThread variable
- Indicates whether the application spawned additional threads using BeginThread
or TThread objects.
WakeMainThread variable
- Represents a method (event handler) that is forced into the main threads queue.
{FindCustomVariantType function
- Retrieves the object that implements a custom Variant type.
GetVariantManager procedure
- Returns the entry points of the routines that define variant behavior.
IsVariantManagerSet function
- Indicates whether variant support is implemented in an application.}
{VarToStr function
- Converts a variant to a string. !!!}
AllocateHwnd function
- Creates a window that implements a specified window procedure.
DestroyMetaPict procedure
- Frees a metafile resource given its handle.
NewStyleControls variable
- Determines whether controls are drawn using the Windows 3.x look.}
SameNamespace function
- Indicates whether a specified node is defined within a specified namespace.