source: oup/releases/0.33a/Helper_LevelDB.pas@ 1121

Last change on this file since 1121 was 58, checked in by alloc, 18 years ago
File size: 39.7 KB
Line 
1unit Helper_LevelDB;
2
3interface
4
5uses
6 Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
7 Dialogs, ComCtrls, StdCtrls, StrUtils;
8
9type
10 TForm_LevelDB = class(TForm)
11 group_progress: TGroupBox;
12 progress: TProgressBar;
13 lbl_progress: TLabel;
14 btn_abortok: TButton;
15 lbl_estimation: TLabel;
16 procedure btn_abortokClick(Sender: TObject);
17 private
18 procedure HandleFile(ext: String; fileid: LongWord; dir_dat2db: Boolean);
19 procedure stop_convert;
20 public
21 procedure CreateDatabase(Source, target: String);
22 procedure CreateLevel(Source, target: String);
23 end;
24
25
26var
27 Form_LevelDB: TForm_LevelDB;
28
29implementation
30
31{$R *.dfm}
32
33uses ABSMain, ABSDecUtil, Main, Functions, Data,
34 OniImgClass, DataStructures, OniDataClass;
35
36type
37 THandler = procedure(fileid: LongWord; dir_dat2db: Boolean);
38
39 TConvertHandlers = record
40 Ext: String[4];
41 needed: Boolean;
42 Handler: THandler;
43 end;
44
45var
46 ConvertHandlers: array of TConvertHandlers;
47 loaded_filename: String;
48 converting: Boolean = False;
49 abort: Boolean = False;
50 DataBase: TABSDatabase;
51 Query: TABSQuery;
52 MimeCoder: TStringFormat_MIME64;
53
54var
55 DatHeader: THeader;
56 FilesHeader: TFilesMap;
57 NamedFilesHeader: TNamedFilesMap;
58 ExtensionsHeader: TExtensionsMap;
59 Stream_Body, Stream_Names: TMemoryStream;
60 Stream_Dat, Stream_Raw, Stream_Sep: TFileStream;
61
62
63
64
65procedure TForm_LevelDB.CreateLevel(Source, target: String);
66var
67 files: LongWord;
68
69 i, j: LongWord;
70 temps, temps2: String;
71 Data, rawdata: Tdata;
72 absolutebegintime, begintime: Double;
73 step: Byte;
74 rawlist: TRawList;
75 extlist: TExtensionsMap;
76 fileinfo: TFileInfo;
77 datlinks: TDatLinks;
78 OniImage: TOniImage;
79 levelid: LongWord;
80 timeformat: TFormatSettings;
81const
82 steps: Byte = 3;
83
84
85
86
87 procedure DoStep(stepname: String);
88 begin
89 Inc(step);
90 if stepname <> 'FIN' then
91 group_progress.Caption :=
92 'Creating Dat (Step ' + IntToStr(step) + '/' + IntToStr(steps) + ': ' + stepname + ')'
93 else
94 group_progress.Caption := 'Creating Dat (FINISHED)';
95 end;
96
97begin
98
99 //
100 // FILE EXISTS CHECK FÜR DAT/RAW/SEP!!!
101 //
102
103 timeformat.LongTimeFormat := 'hh:nn:ss';
104 timeformat.TimeSeparator := ':';
105
106 if not CreateDataConnection(Source, ODB_ADB) then
107 begin
108 ShowMessage('Could not connect to .oldb-file');
109 Exit;
110 end;
111 levelid := OniDataConnection.LevelInfo.LevelNumber;
112 levelid := (levelid * 2) * 256 * 256 * 256 + $01;
113 OniImage := TOniImage.Create;
114
115 absolutebegintime := Time;
116
117 Self.Visible := True;
118 Form_Main.Visible := False;
119 step := 0;
120 converting := True;
121 abort := False;
122 btn_abortok.Caption := '&Abort...';
123 btn_abortok.Default := False;
124 absolutebegintime := Time;
125
126 Stream_Body := TMemoryStream.Create;
127 Stream_Names := TMemoryStream.Create;
128 Stream_Dat := TFileStream.Create(target, fmCreate);
129 Stream_Raw := TFileStream.Create(AnsiReplaceStr(target, '.dat', '.raw'), fmCreate);
130 if OniDataConnection.OSisMac then
131 Stream_Sep := TFileStream.Create(AnsiReplaceStr(target, '.dat', '.sep'), fmCreate);
132
133 DoStep('Creating header');
134 progress.Position := 0;
135 lbl_progress.Caption := '';
136 lbl_estimation.Caption := 'Estimated finishing time: unknown';
137 Application.ProcessMessages;
138
139 NamedFilesHeader := TOniDataADB(OniDataConnection).GetNamedFilesMap;
140 extlist := OniDataConnection.GetExtendedExtensionsList;
141 for i := 0 to High(DatHeader.Ident) do
142 DatHeader.Ident[i] := OniDataConnection.LevelInfo.Ident[i];
143 DatHeader.Files := OniDataConnection.GetFilesCount;
144 DatHeader.NamedFiles := Length(NamedFilesHeader);
145 DatHeader.Extensions := Length(extlist);
146 DatHeader.DataAddr := 0;
147 DatHeader.DataSize := 0;
148 DatHeader.NamesAddr := 0;
149 DatHeader.NamesSize := 0;
150 for i := 0 to High(DatHeader.Ident2) do
151 DatHeader.Ident2[i] := 0;
152 SetLength(FilesHeader, DatHeader.Files);
153 SetLength(ExtensionsHeader, DatHeader.Extensions);
154
155 DoStep('Writing extensions-header');
156 progress.Max := Length(OniDataConnection.GetExtensionsList);
157 Application.ProcessMessages;
158
159 for i := 0 to High(ExtensionsHeader) do
160 begin
161 ExtensionsHeader[i].Ident := extlist[i].Ident;
162 ExtensionsHeader[i].Extension := extlist[i].Extension;
163 SetLength(temps, 4);
164 for j := 0 to 3 do
165 temps[j + 1] := ExtensionsHeader[i].Extension[3 - j];
166 ExtensionsHeader[i].ExtCount :=
167 Length(OniDataConnection.GetFilesList(temps, '', False, stIDAsc));
168 progress.Position := i + 1;
169 lbl_progress.Caption := 'Extensions done: ' + IntToStr(i + 1) + '/' +
170 IntToStr(Length(extlist));
171 Application.ProcessMessages;
172 end;
173
174 DoStep('Storing files-data');
175 progress.Position := 0;
176 progress.Max := DatHeader.Files;
177 lbl_progress.Caption := '';
178 lbl_estimation.Caption := 'Estimated finishing time: unknown';
179 Application.ProcessMessages;
180
181 begintime := Time;
182 for i := 0 to DatHeader.Files - 1 do
183 begin
184 fileinfo := OniDataConnection.GetFileInfo(i);
185 for j := 0 to 3 do
186 FilesHeader[i].Extension[j] := fileinfo.Extension[4 - j];
187 if fileinfo.Size > 0 then
188 begin
189 // DatLinks:=;
190 FilesHeader[i].DataAddr := Stream_Body.Size + 8;
191 Data := OniDataConnection.LoadDatFile(i);
192 Data[4] := (levelid) and $FF;
193 Data[5] := (levelid shr 8) and $FF;
194 Data[6] := (levelid shr 16) and $FF;
195 Data[7] := (levelid shr 24) and $FF;
196
197 if (Pos(UpperCase(fileinfo.Extension), UpperCase(raws)) mod 4) = 1 then
198 begin
199 rawlist := OniDataConnection.GetRawList(i);
200 if Length(rawlist) > 0 then
201 begin
202 for j := 0 to High(rawlist) do
203 begin
204 if rawlist[j].raw_size > 0 then
205 begin
206 if (UpperCase(fileinfo.Extension) = 'TXMP') and
207 ((Data[$88] and $01) > 0) then
208 begin
209 OniImage.LoadFromTXMP(i);
210 OniImage.GetMipMappedImage(rawdata);
211 rawlist[j].raw_size := OniImage.GetImageDataSize(True);
212 Data[$90] := $08;
213 Data[$89] := 32;
214{ if data[$90]<>OniImage.StoreType then begin
215 data[$90]:=OniImage.StoreType;
216 data[$89]:=(data[$89] and $CF) or $20;
217 end;
218} end
219 else
220 begin
221 SetLength(rawdata, rawlist[j].raw_size);
222 OniDataConnection.LoadRawFile(i, rawlist[j].src_offset, @rawdata[0]);
223 end;
224 // data[$88]:=data[$88] and $FE;
225
226 if rawlist[j].loc_sep then
227 begin
228 rawlist[j].raw_addr := Stream_Sep.Size;
229 Stream_Sep.Write(rawdata[0], Length(rawdata));
230 end
231 else
232 begin
233 rawlist[j].raw_addr := Stream_Raw.Size;
234 Stream_Raw.Write(rawdata[0], Length(rawdata));
235 end;
236 end
237 else
238 rawlist[j].raw_addr := 0;
239 Data[rawlist[j].src_offset + 0] := (rawlist[j].raw_addr) and $FF;
240 Data[rawlist[j].src_offset + 1] := (rawlist[j].raw_addr shr 8) and $FF;
241 Data[rawlist[j].src_offset + 2] := (rawlist[j].raw_addr shr 16) and $FF;
242 Data[rawlist[j].src_offset + 3] := (rawlist[j].raw_addr shr 24) and $FF;
243 end;
244 end;
245 end;
246
247 Stream_Body.Write(Data[0], Length(Data));
248 //
249 end
250 else
251 FilesHeader[i].DataAddr := 0;
252 if Length(fileinfo.Name) > 0 then
253 begin
254 FilesHeader[i].NameAddr := Stream_Names.Size;
255 temps := fileinfo.Extension + fileinfo.Name + Chr(0);
256 Stream_Names.Write(temps[1], Length(temps));
257 end
258 else
259 FilesHeader[i].NameAddr := 0;
260 FilesHeader[i].FileSize := fileinfo.Size;
261 FilesHeader[i].FileType := fileinfo.FileType;
262
263 if ((i mod 10) = 0) and (i >= 100) then
264 lbl_estimation.Caption := 'Estimated time left: ' + TimeToStr(
265 (Time - begintime) / i * (progress.Max - i + 1) * 1.1 );
266 progress.Position := i + 1;
267 lbl_progress.Caption := 'Files done: ' + IntToStr(i + 1) + '/' + IntToStr(progress.Max);
268 Application.ProcessMessages;
269 end;
270
271 Stream_Dat.Write(DatHeader, SizeOf(DatHeader));
272 for i := 0 to High(FilesHeader) do
273 Stream_Dat.Write(FilesHeader[i], SizeOf(FilesHeader[i]));
274 for i := 0 to High(NamedFilesHeader) do
275 Stream_Dat.Write(NamedFilesHeader[i], SizeOf(NamedFilesHeader[i]));
276 for i := 0 to High(ExtensionsHeader) do
277 Stream_Dat.Write(ExtensionsHeader[i], SizeOf(ExtensionsHeader[i]));
278
279 DatHeader.DataSize := Stream_Body.Size;
280 DatHeader.NamesSize := Stream_Names.Size;
281 DatHeader.DataAddr := Stream_Dat.Size;
282 Stream_Body.Seek(0, soFromBeginning);
283 Stream_Dat.CopyFrom(Stream_Body, Stream_Body.Size);
284 DatHeader.NamesAddr := Stream_Dat.Size;
285 Stream_Names.Seek(0, soFromBeginning);
286 Stream_Dat.CopyFrom(Stream_Names, Stream_Names.Size);
287
288 Stream_Dat.Seek(0, soFromBeginning);
289 Stream_Dat.Write(DatHeader, SizeOf(DatHeader));
290
291 Stream_Dat.Free;
292 Stream_Body.Free;
293 Stream_Names.Free;
294 Stream_Raw.Free;
295 if OniDataConnection.OSisMac then
296 Stream_Sep.Free;
297
298 progress.Position := progress.Max;
299 lbl_progress.Caption := 'Files done: ' + IntToStr(progress.Max) + '/' +
300 IntToStr(progress.Max);
301 lbl_estimation.Caption := 'FINISHED (duration: ' + TimeToStr(Time - absolutebegintime, timeformat) + ')';
302
303 DoStep('FIN');
304 btn_abortok.Caption := '&OK';
305 btn_abortok.Default := True;
306
307 OniImage.Free;
308
309 converting := False;
310
311 CloseDataConnection;
312end;
313
314
315
316
317procedure TForm_LevelDB.HandleFile;
318var
319 i: Byte;
320begin
321 for i := 1 to Length(ConvertHandlers) do
322 if UpperCase(ConvertHandlers[i].Ext) = UpperCase(ext) then
323 if ConvertHandlers[i].needed then
324 begin
325 ConvertHandlers[i].Handler(fileid, dir_dat2db);
326 Break;
327 end
328 else
329 Break;
330end;
331
332
333
334
335procedure TForm_LevelDB.CreateDatabase(Source, target: String);
336var
337 i, j: LongWord;
338 temps, temps2: String;
339 Data: Tdata;
340 absolutebegintime, begintime: Double;
341 step: Byte;
342 rawlist: TRawList;
343 extlist: TExtensionsMap;
344 fileinfo: TFileInfo;
345 timeformat: TFormatSettings;
346const
347 steps: Byte = 4;
348
349
350
351
352 procedure DoStep(stepname: String);
353 begin
354 Inc(step);
355 if stepname <> 'FIN' then
356 group_progress.Caption :=
357 'Creating DB (Step ' + IntToStr(step) + '/' + IntToStr(steps) + ': ' + stepname + ')'
358 else
359 group_progress.Caption := 'Creating DB (FINISHED)';
360 end;
361
362begin
363 if not CreateDataConnection(Source, ODB_Dat) then
364 begin
365 ShowMessage('Could not connect to .dat-file');
366 Exit;
367 end
368 else
369 begin
370 TOniDataDat(OniDataConnection).UnloadWhenUnused := False;
371 end;
372
373 Self.Visible := True;
374 Form_Main.Visible := False;
375 step := 0;
376 converting := True;
377 abort := False;
378 btn_abortok.Caption := '&Abort...';
379 btn_abortok.Default := False;
380 loaded_filename := target;
381
382 absolutebegintime := Time;
383
384 DataBase := TABSDatabase.Create(Self);
385 DataBase.DatabaseName := 'OLDB';
386 DataBase.DatabaseFileName := target;
387 DataBase.CreateDatabase;
388
389 DoStep('Creating tables');
390 progress.Position := 0;
391 lbl_progress.Caption := '';
392 lbl_estimation.Caption := 'Estimated finishing time: unknown';
393 Application.ProcessMessages;
394
395 Query := TABSQuery.Create(Self);
396 Query.DatabaseName := 'OLDB';
397 Query.SQL.Text :=
398 'CREATE TABLE globals ( id AUTOINC PRIMARY KEY, name STRING(128), value STRING(128) );';
399 Query.ExecSQL;
400 Query.SQL.Text :=
401 'CREATE TABLE linkmap ( id AUTOINC PRIMARY KEY, src_id INTEGER, src_link_offset INTEGER, target_id INTEGER );';
402 Query.ExecSQL;
403 Query.SQL.Text :=
404 'CREATE TABLE rawmap ( id AUTOINC PRIMARY KEY, src_id INTEGER, src_link_offset INTEGER, sep BOOLEAN, size INTEGER, data BLOB BlobCompressionMode 9 BlobBlockSize 1024 BlobCompressionAlgorithm ZLib );';
405 // Query.SQL.Text:='CREATE TABLE rawmap ( id AUTOINC PRIMARY KEY, src_id INTEGER, src_link_offset INTEGER, size INTEGER, data BLOB BlobCompressionAlgorithm None );';
406 Query.ExecSQL;
407 Query.SQL.Text :=
408 'CREATE TABLE datfiles ( id INTEGER PRIMARY KEY, extension CHAR(4), name STRING(128), contenttype INTEGER, size INTEGER, data BLOB BlobCompressionMode 9 BlobBlockSize 1024 BlobCompressionAlgorithm ZLib );';
409 // Query.SQL.Text:='CREATE TABLE datfiles ( id INTEGER PRIMARY KEY, extension CHAR(4), name STRING(128), contenttype INTEGER, size INTEGER, data BLOB BlobCompressionAlgorithm None );';
410 Query.ExecSQL;
411 Query.SQL.Text :=
412 'CREATE TABLE extlist ( id AUTOINC PRIMARY KEY, ext CHAR(4), ident CHAR(16) );';
413 Query.ExecSQL;
414
415 Query.SQL.Text := 'INSERT INTO globals (name,value) VALUES ("dbversion","' +
416 dbversion + '");';
417 Query.ExecSQL;
418 SetLength(Data, Length(OniDataConnection.LevelInfo.Ident));
419 for i := 0 to High(OniDataConnection.LevelInfo.Ident) do
420 Data[i] := OniDataConnection.LevelInfo.Ident[i];
421 temps := CreateHexString(Data, True);
422 Query.SQL.Text := 'INSERT INTO globals (name,value) VALUES ("ident","' + temps + '");';
423 Query.ExecSQL;
424 Query.SQL.Text := 'INSERT INTO globals (name,value) VALUES ("lvl","' +
425 IntToStr(OniDataConnection.LevelInfo.LevelNumber) + '");';
426 Query.ExecSQL;
427 if OniDataConnection.OSisMAC then
428 Query.SQL.Text := 'INSERT INTO globals (name,value) VALUES ("os","MAC");'
429 else
430 Query.SQL.Text := 'INSERT INTO globals (name,value) VALUES ("os","PC");';
431 Query.ExecSQL;
432
433 DoStep('Writing extensionslist');
434 progress.Max := Length(OniDataConnection.GetExtensionsList);
435 Application.ProcessMessages;
436
437 extlist := OniDataConnection.GetExtendedExtensionsList;
438 for i := 0 to High(extlist) do
439 begin
440 SetLength(Data, Length(extlist[i].Ident));
441 for j := 0 to High(extlist[i].Ident) do
442 Data[j] := extlist[i].Ident[j];
443 temps := CreateHexString(Data, True);
444 temps2 := extlist[i].Extension[3] + extlist[i].Extension[2] +
445 extlist[i].Extension[1] + extlist[i].Extension[0];
446 Query.SQL.Text := 'INSERT INTO extlist (ext,ident) VALUES ("' +
447 temps2 + '","' + temps + '");';
448 Query.ExecSQL;
449 progress.Position := i;
450 lbl_progress.Caption := 'Extensions done: ' + IntToStr(i) + '/' +
451 IntToStr(Length(extlist));
452 Application.ProcessMessages;
453 if abort then
454 begin
455 stop_convert;
456 Exit;
457 end;
458 end;
459 lbl_progress.Caption := '';
460
461 progress.Position := 0;
462 lbl_progress.Caption := 'Files done: ' + IntToStr(0) + '/' + IntToStr(
463 OniDataConnection.GetFilesCount);
464 lbl_estimation.Caption := 'Estimated finishing time: unknown';
465
466 DoStep('Loading .dat into memory');
467 Application.ProcessMessages;
468
469 progress.Max := OniDataConnection.GetFilesCount;
470 begintime := Time;
471 DoStep('Writing .dat-fileslist');
472 Application.ProcessMessages;
473
474 Database.StartTransaction;
475 for i := 0 to OniDataConnection.GetFilesCount - 1 do
476 begin
477 fileinfo := OniDataConnection.GetFileInfo(i);
478 if (fileinfo.FileType and $02) = 0 then
479 begin
480 mimecoder := TStringFormat_MIME64.Create;
481 Data := OniDataConnection.LoadDatFile(i);
482 Query.SQL.Text :=
483 'INSERT INTO datfiles (id,extension,name,contenttype,size,data) VALUES (' +
484 IntToStr(i) + ',"' + fileinfo.Extension + '","' + fileinfo.Name + '","' + IntToHex(
485 fileinfo.FileType, 8) + '",' + IntToStr(fileinfo.Size) + ',MimeToBin("' +
486 MimeCoder.StrTo(@Data[0], Length(Data)) + '") );';
487 Query.ExecSQL;
488 mimecoder.Free;
489
490 rawlist := OniDataConnection.GetRawList(i);
491 if Length(rawlist) > 0 then
492 begin
493 for j := 0 to High(rawlist) do
494 begin
495 if rawlist[j].raw_size > 0 then
496 begin
497 SetLength(Data, rawlist[j].raw_size);
498 OniDataConnection.LoadRawFile(i, rawlist[j].src_offset, Data);
499 mimecoder := TStringFormat_MIME64.Create;
500 Query.SQL.Text :=
501 'INSERT INTO rawmap (src_id,src_link_offset,sep,size,data) VALUES (' +
502 IntToStr(i) + ',' + IntToStr(rawlist[j].src_offset) + ',' + BoolToStr(
503 rawlist[j].loc_sep) + ',' + IntToStr(rawlist[j].raw_size) + ',MimeToBin("' +
504 MimeCoder.StrTo(@Data[0], rawlist[j].raw_size) + '") );';
505 Query.ExecSQL;
506 mimecoder.Free;
507 end
508 else
509 begin
510 Query.SQL.Text :=
511 'INSERT INTO rawmap (src_id,src_link_offset,sep,size) VALUES (' +
512 IntToStr(i) + ',' + IntToStr(rawlist[j].src_offset) + ',' + BoolToStr(rawlist[j].loc_sep) + ',0);';
513 Query.ExecSQL;
514 end;
515 end;
516 end;
517
518 HandleFile(fileinfo.Extension, i, True);
519 end
520 else
521 begin
522 Query.SQL.Text :=
523 'INSERT INTO datfiles (id,extension,name,contenttype,size) VALUES (' +
524 IntToStr(i) + ',"' + fileinfo.Extension + '","' + fileinfo.Name + '","' + IntToHex(
525 fileinfo.FileType, 8) + '",0);';
526 Query.ExecSQL;
527 end;
528 if ((i mod 100) = 0) and (i > 0) then
529 begin
530 Database.Commit(False);
531 Database.StartTransaction;
532 end;
533 if ((i mod 10) = 0) and (i >= 100) then
534 lbl_estimation.Caption := 'Estimated time left: ' + TimeToStr(
535 (Time - begintime) / i * (progress.Max - i + 1) * 1.1 );
536 progress.Position := i;
537 lbl_progress.Caption := 'Files done: ' + IntToStr(i) + '/' + IntToStr(progress.Max);
538 Application.ProcessMessages;
539 if abort then
540 begin
541 stop_convert;
542 Exit;
543 end;
544 end;
545 Database.Commit(False);
546 progress.Position := progress.Max;
547 lbl_progress.Caption := 'Files done: ' + IntToStr(progress.Max) + '/' +
548 IntToStr(progress.Max);
549
550 timeformat.LongTimeFormat := 'hh:nn:ss';
551 timeformat.TimeSeparator := ':';
552 lbl_estimation.Caption := 'FINISHED (duration: ' + TimeToStr(Time - absolutebegintime, timeformat) + ')';
553
554 DoStep('FIN');
555 btn_abortok.Caption := '&OK';
556 btn_abortok.Default := True;
557
558 converting := False;
559
560 database.Close;
561 database.Free;
562
563 CloseDataConnection;
564end;
565
566
567
568
569procedure TForm_LevelDB.stop_convert;
570begin
571 btn_abortok.Caption := '&Close';
572 btn_abortok.Default := True;
573 converting := False;
574 lbl_estimation.Caption := 'ABORTED';
575 group_progress.Caption := 'Creating DB (ABORTED)';
576 DataBase.Close;
577 if MessageBox(Self.Handle, PChar('Delete the unfinished DB-file?'),
578 PChar('Delete file?'), MB_YESNO) = idYes then
579 begin
580 DeleteFile(loaded_filename);
581 end;
582end;
583
584
585
586
587procedure TForm_LevelDB.btn_abortokClick(Sender: TObject);
588begin
589 if converting then
590 begin
591 if MessageBox(Self.Handle,
592 PChar('Do you really want to cancel the convert-progress?'),
593 PChar('Warning: Converting'), MB_YESNO) = idYes then
594 abort := True;
595 end
596 else
597 begin
598 Self.Visible := False;
599 Form_Main.Visible := True;
600 end;
601end;
602
603
604
605
606procedure InsertDatLinkToDB(fileid: LongWord; offset: LongWord);
607var
608 link: LongWord;
609begin
610 OniDataConnection.LoadDatFilePart(fileid, offset, 4, @link);
611 if link = 0 then
612 link := $FFFFFFFF
613 else
614 link := link div 256;
615 Query.SQL.Text := 'INSERT INTO linkmap (src_id,src_link_offset,target_id) VALUES (' +
616 IntToStr(fileid) + ',' + IntToStr(offset) + ',' + IntToStr(link) + ');';
617 Query.ExecSQL;
618end;
619
620
621
622
623procedure AISA(fileid: LongWord; dir_dat2db: Boolean);
624var
625 packages: Word;
626 i: LongWord;
627begin
628 if dir_dat2db then
629 begin
630 OniDataConnection.LoadDatFilePart(fileid, $1E, 2, @packages);
631 if packages > 0 then
632 begin
633 for i := 0 to packages - 1 do
634 InsertDatLinkToDB(fileid, $20 + i * $160 + $28);
635 for i := 0 to packages - 1 do
636 InsertDatLinkToDB(fileid, $20 + i * $160 + $150);
637 end;
638 end
639 else
640 begin
641 end;
642end;
643
644
645
646
647procedure AKEV(fileid: LongWord; dir_dat2db: Boolean);
648var
649 i: LongWord;
650begin
651 if dir_dat2db then
652 begin
653 for i := 0 to 16 do
654 InsertDatLinkToDB(fileid, $8 + i * 4);
655 end
656 else
657 begin
658 end;
659end;
660
661
662
663
664procedure AKOT(fileid: LongWord; dir_dat2db: Boolean);
665var
666 i: LongWord;
667begin
668 if dir_dat2db then
669 begin
670 for i := 0 to 4 do
671 InsertDatLinkToDB(fileid, $8 + i * 4);
672 end
673 else
674 begin
675 end;
676end;
677
678
679
680
681procedure CBPI(fileid: LongWord; dir_dat2db: Boolean);
682var
683 i: LongWord;
684begin
685 if dir_dat2db then
686 begin
687 for i := 0 to 56 do
688 InsertDatLinkToDB(fileid, $8 + i * 4);
689 end
690 else
691 begin
692 end;
693end;
694
695
696
697
698procedure CBPM(fileid: LongWord; dir_dat2db: Boolean);
699var
700 i: LongWord;
701begin
702 if dir_dat2db then
703 begin
704 for i := 0 to 18 do
705 InsertDatLinkToDB(fileid, $8 + i * 4);
706 end
707 else
708 begin
709 end;
710end;
711
712
713
714
715procedure CONS(fileid: LongWord; dir_dat2db: Boolean);
716var
717 i: LongWord;
718begin
719 if dir_dat2db then
720 begin
721 for i := 0 to 1 do
722 InsertDatLinkToDB(fileid, $24 + i * 4);
723 end
724 else
725 begin
726 end;
727end;
728
729
730
731
732procedure CRSA(fileid: LongWord; dir_dat2db: Boolean);
733var
734 packages: LongWord;
735 i: LongWord;
736begin
737 if dir_dat2db then
738 begin
739 OniDataConnection.LoadDatFilePart(fileid, $14, 4, @packages);
740 if packages > 0 then
741 for i := 0 to packages - 1 do
742 InsertDatLinkToDB(fileid, $20 + i * 1100 + $A0);
743 end
744 else
745 begin
746 end;
747end;
748
749
750
751
752procedure DOOR(fileid: LongWord; dir_dat2db: Boolean);
753begin
754 if dir_dat2db then
755 begin
756 InsertDatLinkToDB(fileid, $08);
757 InsertDatLinkToDB(fileid, $10);
758 end
759 else
760 begin
761 end;
762end;
763
764
765
766
767procedure DPGE(fileid: LongWord; dir_dat2db: Boolean);
768begin
769 if dir_dat2db then
770 begin
771 InsertDatLinkToDB(fileid, $40);
772 end
773 else
774 begin
775 end;
776end;
777
778
779
780
781procedure HPGE(fileid: LongWord; dir_dat2db: Boolean);
782begin
783 if dir_dat2db then
784 begin
785 InsertDatLinkToDB(fileid, $0C);
786 end
787 else
788 begin
789 end;
790end;
791
792
793
794
795procedure IGHH(fileid: LongWord; dir_dat2db: Boolean);
796begin
797 if dir_dat2db then
798 begin
799 InsertDatLinkToDB(fileid, $24);
800 InsertDatLinkToDB(fileid, $28);
801 end
802 else
803 begin
804 end;
805end;
806
807
808
809
810procedure IGPA(fileid: LongWord; dir_dat2db: Boolean);
811var
812 links: LongWord;
813 i: LongWord;
814begin
815 if dir_dat2db then
816 begin
817 OniDataConnection.LoadDatFilePart(fileid, $1C, 4, @links);
818 if links > 0 then
819 for i := 0 to links - 1 do
820 InsertDatLinkToDB(fileid, $20 + i * 4);
821 end
822 else
823 begin
824 end;
825end;
826
827
828
829
830procedure IGPG(fileid: LongWord; dir_dat2db: Boolean);
831var
832 i: LongWord;
833begin
834 if dir_dat2db then
835 begin
836 for i := 0 to 1 do
837 InsertDatLinkToDB(fileid, $1C + i * 4);
838 end
839 else
840 begin
841 end;
842end;
843
844
845
846
847procedure IGSA(fileid: LongWord; dir_dat2db: Boolean);
848var
849 links: LongWord;
850 i: LongWord;
851begin
852 if dir_dat2db then
853 begin
854 OniDataConnection.LoadDatFilePart(fileid, $1C, 4, @links);
855 if links > 0 then
856 for i := 0 to links - 1 do
857 InsertDatLinkToDB(fileid, $20 + i * 4);
858 end
859 else
860 begin
861 end;
862end;
863
864
865
866
867procedure IMPT(fileid: LongWord; dir_dat2db: Boolean);
868begin
869 if dir_dat2db then
870 begin
871 InsertDatLinkToDB(fileid, $10);
872 end
873 else
874 begin
875 end;
876end;
877
878
879
880
881procedure IPGE(fileid: LongWord; dir_dat2db: Boolean);
882begin
883 if dir_dat2db then
884 begin
885 InsertDatLinkToDB(fileid, $0C);
886 end
887 else
888 begin
889 end;
890end;
891
892
893
894
895procedure KEYI(fileid: LongWord; dir_dat2db: Boolean);
896var
897 i: LongWord;
898begin
899 if dir_dat2db then
900 begin
901 for i := 0 to 9 do
902 InsertDatLinkToDB(fileid, $08 + i * 4);
903 end
904 else
905 begin
906 end;
907end;
908
909
910
911
912procedure M3GA(fileid: LongWord; dir_dat2db: Boolean);
913var
914 links: LongWord;
915 i: LongWord;
916begin
917 if dir_dat2db then
918 begin
919 OniDataConnection.LoadDatFilePart(fileid, $1C, 4, @links);
920 if links > 0 then
921 for i := 0 to links - 1 do
922 InsertDatLinkToDB(fileid, $20 + i * 4);
923 end
924 else
925 begin
926 end;
927end;
928
929
930
931
932procedure M3GM(fileid: LongWord; dir_dat2db: Boolean);
933var
934 i: LongWord;
935begin
936 if dir_dat2db then
937 begin
938 for i := 0 to 6 do
939 InsertDatLinkToDB(fileid, $0C + i * 4);
940 end
941 else
942 begin
943 end;
944end;
945
946
947
948
949procedure MTRL(fileid: LongWord; dir_dat2db: Boolean);
950begin
951 if dir_dat2db then
952 begin
953 InsertDatLinkToDB(fileid, $10);
954 end
955 else
956 begin
957 end;
958end;
959
960
961
962
963procedure OBDC(fileid: LongWord; dir_dat2db: Boolean);
964var
965 packages: Word;
966 i: LongWord;
967begin
968 if dir_dat2db then
969 begin
970 OniDataConnection.LoadDatFilePart(fileid, $1E, 2, @packages);
971 if packages > 0 then
972 for i := 0 to packages - 1 do
973 InsertDatLinkToDB(fileid, $20 + i * $18 + $4);
974 end
975 else
976 begin
977 end;
978end;
979
980
981
982
983procedure OBOA(fileid: LongWord; dir_dat2db: Boolean);
984var
985 packages: Word;
986 i: LongWord;
987begin
988 if dir_dat2db then
989 begin
990 OniDataConnection.LoadDatFilePart(fileid, $1E, 2, @packages);
991 if packages > 0 then
992 for i := 0 to packages - 1 do
993 begin
994 InsertDatLinkToDB(fileid, $20 + i * 240 + $0);
995 InsertDatLinkToDB(fileid, $20 + i * 240 + $4);
996 InsertDatLinkToDB(fileid, $20 + i * 240 + $8);
997 end;
998 end
999 else
1000 begin
1001 end;
1002end;
1003
1004
1005
1006
1007procedure OFGA(fileid: LongWord; dir_dat2db: Boolean);
1008var
1009 packages: LongWord;
1010 i: LongWord;
1011begin
1012 if dir_dat2db then
1013 begin
1014 OniDataConnection.LoadDatFilePart(fileid, $1C, 4, @packages);
1015 if packages > 0 then
1016 for i := 0 to packages - 1 do
1017 InsertDatLinkToDB(fileid, $20 + i * 12 + $04);
1018 end
1019 else
1020 begin
1021 end;
1022end;
1023
1024
1025
1026
1027procedure ONCC(fileid: LongWord; dir_dat2db: Boolean);
1028var
1029 i: LongWord;
1030begin
1031 if dir_dat2db then
1032 begin
1033 InsertDatLinkToDB(fileid, $28);
1034 InsertDatLinkToDB(fileid, $434);
1035 InsertDatLinkToDB(fileid, $438);
1036 InsertDatLinkToDB(fileid, $43C);
1037 InsertDatLinkToDB(fileid, $C3C);
1038 InsertDatLinkToDB(fileid, $C40);
1039 InsertDatLinkToDB(fileid, $C44);
1040 InsertDatLinkToDB(fileid, $C48);
1041 InsertDatLinkToDB(fileid, $C88);
1042 InsertDatLinkToDB(fileid, $C8C);
1043 end
1044 else
1045 begin
1046 end;
1047end;
1048
1049
1050
1051
1052procedure ONCV(fileid: LongWord; dir_dat2db: Boolean);
1053begin
1054 if dir_dat2db then
1055 begin
1056 InsertDatLinkToDB(fileid, $08);
1057 end
1058 else
1059 begin
1060 end;
1061end;
1062
1063
1064
1065
1066procedure ONLV(fileid: LongWord; dir_dat2db: Boolean);
1067var
1068 i: LongWord;
1069begin
1070 if dir_dat2db then
1071 begin
1072 for i := 0 to 5 do
1073 InsertDatLinkToDB(fileid, $48 + i * 4);
1074 for i := 0 to 5 do
1075 InsertDatLinkToDB(fileid, $64 + i * 4);
1076 InsertDatLinkToDB(fileid, $300);
1077 end
1078 else
1079 begin
1080 end;
1081end;
1082
1083
1084
1085
1086procedure ONOA(fileid: LongWord; dir_dat2db: Boolean);
1087var
1088 packages: LongWord;
1089 i: LongWord;
1090begin
1091 if dir_dat2db then
1092 begin
1093 OniDataConnection.LoadDatFilePart(fileid, $1C, 4, @packages);
1094 if packages > 0 then
1095 for i := 0 to packages - 1 do
1096 InsertDatLinkToDB(fileid, $20 + i * 8 + $04);
1097 end
1098 else
1099 begin
1100 end;
1101end;
1102
1103
1104
1105
1106procedure ONSK(fileid: LongWord; dir_dat2db: Boolean);
1107begin
1108 if dir_dat2db then
1109 begin
1110 InsertDatLinkToDB(fileid, $08);
1111 InsertDatLinkToDB(fileid, $0C);
1112 InsertDatLinkToDB(fileid, $10);
1113 InsertDatLinkToDB(fileid, $14);
1114 InsertDatLinkToDB(fileid, $18);
1115 InsertDatLinkToDB(fileid, $20);
1116 InsertDatLinkToDB(fileid, $44);
1117 end
1118 else
1119 begin
1120 end;
1121end;
1122
1123
1124
1125
1126procedure ONVL(fileid: LongWord; dir_dat2db: Boolean);
1127var
1128 packages: LongWord;
1129 i: LongWord;
1130begin
1131 if dir_dat2db then
1132 begin
1133 OniDataConnection.LoadDatFilePart(fileid, $1C, 4, @packages);
1134 if packages > 0 then
1135 for i := 0 to packages - 1 do
1136 InsertDatLinkToDB(fileid, $20 + i * 4);
1137 end
1138 else
1139 begin
1140 end;
1141end;
1142
1143
1144
1145
1146procedure ONWC(fileid: LongWord; dir_dat2db: Boolean);
1147begin
1148 if dir_dat2db then
1149 begin
1150 InsertDatLinkToDB(fileid, $28);
1151 InsertDatLinkToDB(fileid, $34);
1152 InsertDatLinkToDB(fileid, $40);
1153 InsertDatLinkToDB(fileid, $54);
1154 InsertDatLinkToDB(fileid, $58);
1155 InsertDatLinkToDB(fileid, $5C);
1156 InsertDatLinkToDB(fileid, $60);
1157 InsertDatLinkToDB(fileid, $6FC);
1158 InsertDatLinkToDB(fileid, $700);
1159 end
1160 else
1161 begin
1162 end;
1163end;
1164
1165
1166
1167
1168procedure OPGE(fileid: LongWord; dir_dat2db: Boolean);
1169begin
1170 if dir_dat2db then
1171 begin
1172 InsertDatLinkToDB(fileid, $0C);
1173 end
1174 else
1175 begin
1176 end;
1177end;
1178
1179
1180
1181
1182procedure PSPC(fileid: LongWord; dir_dat2db: Boolean);
1183begin
1184 if dir_dat2db then
1185 begin
1186 InsertDatLinkToDB(fileid, $50);
1187 end
1188 else
1189 begin
1190 end;
1191end;
1192
1193
1194
1195
1196procedure PSPL(fileid: LongWord; dir_dat2db: Boolean);
1197var
1198 packages: LongWord;
1199 i: LongWord;
1200begin
1201 if dir_dat2db then
1202 begin
1203 OniDataConnection.LoadDatFilePart(fileid, $1C, 4, @packages);
1204 if packages > 0 then
1205 for i := 0 to packages - 1 do
1206 InsertDatLinkToDB(fileid, $20 + i * 8 + $4);
1207 end
1208 else
1209 begin
1210 end;
1211end;
1212
1213
1214
1215
1216procedure PSUI(fileid: LongWord; dir_dat2db: Boolean);
1217var
1218 i: LongWord;
1219begin
1220 if dir_dat2db then
1221 begin
1222 for i := 0 to 43 do
1223 InsertDatLinkToDB(fileid, $08 + i * 4);
1224 end
1225 else
1226 begin
1227 end;
1228end;
1229
1230
1231
1232
1233procedure STNA(fileid: LongWord; dir_dat2db: Boolean);
1234var
1235 packages: Word;
1236 i: LongWord;
1237begin
1238 if dir_dat2db then
1239 begin
1240 OniDataConnection.LoadDatFilePart(fileid, $1E, 2, @packages);
1241 if packages > 0 then
1242 for i := 0 to packages - 1 do
1243 InsertDatLinkToDB(fileid, $20 + i * 4);
1244 end
1245 else
1246 begin
1247 end;
1248end;
1249
1250
1251
1252
1253procedure TRAC(fileid: LongWord; dir_dat2db: Boolean);
1254var
1255 packages: Word;
1256 i: LongWord;
1257begin
1258 if dir_dat2db then
1259 begin
1260 InsertDatLinkToDB(fileid, $18);
1261 OniDataConnection.LoadDatFilePart(fileid, $1E, 2, @packages);
1262 if packages > 0 then
1263 for i := 0 to packages - 1 do
1264 InsertDatLinkToDB(fileid, $20 + i * 12 + 8);
1265 end
1266 else
1267 begin
1268 end;
1269end;
1270
1271
1272
1273
1274procedure TRAM(fileid: LongWord; dir_dat2db: Boolean);
1275begin
1276 if dir_dat2db then
1277 begin
1278 InsertDatLinkToDB(fileid, $40);
1279 InsertDatLinkToDB(fileid, $44);
1280 end
1281 else
1282 begin
1283 end;
1284end;
1285
1286
1287
1288
1289procedure TRAS(fileid: LongWord; dir_dat2db: Boolean);
1290begin
1291 if dir_dat2db then
1292 begin
1293 InsertDatLinkToDB(fileid, $08);
1294 end
1295 else
1296 begin
1297 end;
1298end;
1299
1300
1301
1302
1303procedure TRBS(fileid: LongWord; dir_dat2db: Boolean);
1304var
1305 i: LongWord;
1306begin
1307 if dir_dat2db then
1308 begin
1309 for i := 0 to 4 do
1310 InsertDatLinkToDB(fileid, $08 + i * 4);
1311 end
1312 else
1313 begin
1314 end;
1315end;
1316
1317
1318
1319
1320procedure TRCM(fileid: LongWord; dir_dat2db: Boolean);
1321var
1322 i: LongWord;
1323begin
1324 if dir_dat2db then
1325 begin
1326 for i := 0 to 2 do
1327 InsertDatLinkToDB(fileid, $5C + i * 4);
1328 end
1329 else
1330 begin
1331 end;
1332end;
1333
1334
1335
1336
1337procedure TRGA(fileid: LongWord; dir_dat2db: Boolean);
1338var
1339 i: LongWord;
1340 packages: Word;
1341begin
1342 if dir_dat2db then
1343 begin
1344 OniDataConnection.LoadDatFilePart(fileid, $1E, 2, @packages);
1345 if packages > 0 then
1346 for i := 0 to packages - 1 do
1347 InsertDatLinkToDB(fileid, $20 + i * 4);
1348 end
1349 else
1350 begin
1351 end;
1352end;
1353
1354
1355
1356
1357procedure TRGE(fileid: LongWord; dir_dat2db: Boolean);
1358begin
1359 if dir_dat2db then
1360 begin
1361 InsertDatLinkToDB(fileid, $20);
1362 end
1363 else
1364 begin
1365 end;
1366end;
1367
1368
1369
1370
1371procedure TRIG(fileid: LongWord; dir_dat2db: Boolean);
1372begin
1373 if dir_dat2db then
1374 begin
1375 InsertDatLinkToDB(fileid, $18);
1376 InsertDatLinkToDB(fileid, $24);
1377 InsertDatLinkToDB(fileid, $28);
1378 end
1379 else
1380 begin
1381 end;
1382end;
1383
1384
1385
1386
1387procedure TRMA(fileid: LongWord; dir_dat2db: Boolean);
1388var
1389 i: LongWord;
1390 packages: Word;
1391begin
1392 if dir_dat2db then
1393 begin
1394 OniDataConnection.LoadDatFilePart(fileid, $1E, 2, @packages);
1395 if packages > 0 then
1396 for i := 0 to packages - 1 do
1397 InsertDatLinkToDB(fileid, $20 + i * 4);
1398 end
1399 else
1400 begin
1401 end;
1402end;
1403
1404
1405
1406
1407procedure TRSC(fileid: LongWord; dir_dat2db: Boolean);
1408var
1409 i: LongWord;
1410 packages: Word;
1411begin
1412 if dir_dat2db then
1413 begin
1414 OniDataConnection.LoadDatFilePart(fileid, $1E, 2, @packages);
1415 if packages > 0 then
1416 for i := 0 to packages - 1 do
1417 InsertDatLinkToDB(fileid, $20 + i * 4);
1418 end
1419 else
1420 begin
1421 end;
1422end;
1423
1424
1425
1426
1427procedure TSFF(fileid: LongWord; dir_dat2db: Boolean);
1428var
1429 i: LongWord;
1430 packages: LongWord;
1431begin
1432 if dir_dat2db then
1433 begin
1434 OniDataConnection.LoadDatFilePart(fileid, $1C, 4, @packages);
1435 if packages > 0 then
1436 for i := 0 to packages - 1 do
1437 InsertDatLinkToDB(fileid, $20 + i * 4);
1438 end
1439 else
1440 begin
1441 end;
1442end;
1443
1444
1445
1446
1447procedure TSFT(fileid: LongWord; dir_dat2db: Boolean);
1448begin
1449 if dir_dat2db then
1450 begin
1451 InsertDatLinkToDB(fileid, $1C);
1452 end
1453 else
1454 begin
1455 end;
1456end;
1457
1458
1459
1460
1461procedure TURR(fileid: LongWord; dir_dat2db: Boolean);
1462begin
1463 if dir_dat2db then
1464 begin
1465 InsertDatLinkToDB(fileid, $60);
1466 InsertDatLinkToDB(fileid, $6C);
1467 InsertDatLinkToDB(fileid, $74);
1468 end
1469 else
1470 begin
1471 end;
1472end;
1473
1474
1475
1476
1477procedure TXAN(fileid: LongWord; dir_dat2db: Boolean);
1478var
1479 i: LongWord;
1480 packages: LongWord;
1481begin
1482 if dir_dat2db then
1483 begin
1484 OniDataConnection.LoadDatFilePart(fileid, $1C, 4, @packages);
1485 if packages > 0 then
1486 for i := 0 to packages - 1 do
1487 InsertDatLinkToDB(fileid, $20 + i * 4);
1488 end
1489 else
1490 begin
1491 end;
1492end;
1493
1494
1495
1496
1497procedure TXMA(fileid: LongWord; dir_dat2db: Boolean);
1498var
1499 i: LongWord;
1500 packages: LongWord;
1501begin
1502 if dir_dat2db then
1503 begin
1504 OniDataConnection.LoadDatFilePart(fileid, $1C, 4, @packages);
1505 if packages > 0 then
1506 for i := 0 to packages - 1 do
1507 InsertDatLinkToDB(fileid, $20 + i * 4);
1508 end
1509 else
1510 begin
1511 end;
1512end;
1513
1514
1515
1516
1517procedure TXMB(fileid: LongWord; dir_dat2db: Boolean);
1518var
1519 i: LongWord;
1520 packages: LongWord;
1521begin
1522 if dir_dat2db then
1523 begin
1524 OniDataConnection.LoadDatFilePart(fileid, $1C, 4, @packages);
1525 if packages > 0 then
1526 for i := 0 to packages - 1 do
1527 InsertDatLinkToDB(fileid, $20 + i * 4);
1528 end
1529 else
1530 begin
1531 end;
1532end;
1533
1534
1535
1536
1537procedure TXMP(fileid: LongWord; dir_dat2db: Boolean);
1538begin
1539 if dir_dat2db then
1540 begin
1541 InsertDatLinkToDB(fileid, $94);
1542 InsertDatLinkToDB(fileid, $98);
1543 end
1544 else
1545 begin
1546 end;
1547end;
1548
1549
1550
1551
1552procedure TXTC(fileid: LongWord; dir_dat2db: Boolean);
1553begin
1554 if dir_dat2db then
1555 begin
1556 InsertDatLinkToDB(fileid, $08);
1557 end
1558 else
1559 begin
1560 end;
1561end;
1562
1563
1564
1565
1566procedure WMCL(fileid: LongWord; dir_dat2db: Boolean);
1567var
1568 i: LongWord;
1569 packages: LongWord;
1570begin
1571 if dir_dat2db then
1572 begin
1573 OniDataConnection.LoadDatFilePart(fileid, $1C, 4, @packages);
1574 if packages > 0 then
1575 for i := 0 to packages - 1 do
1576 InsertDatLinkToDB(fileid, $20 + i * 8 + $4);
1577 end
1578 else
1579 begin
1580 end;
1581end;
1582
1583
1584
1585
1586procedure WMDD(fileid: LongWord; dir_dat2db: Boolean);
1587var
1588 i: LongWord;
1589 packages: LongWord;
1590begin
1591 if dir_dat2db then
1592 begin
1593 OniDataConnection.LoadDatFilePart(fileid, $11C, 4, @packages);
1594 if packages > 0 then
1595 for i := 0 to packages - 1 do
1596 InsertDatLinkToDB(fileid, $120 + i * $124 + $114);
1597 end
1598 else
1599 begin
1600 end;
1601end;
1602
1603
1604
1605
1606procedure WMMB(fileid: LongWord; dir_dat2db: Boolean);
1607var
1608 i: LongWord;
1609 packages: LongWord;
1610begin
1611 if dir_dat2db then
1612 begin
1613 OniDataConnection.LoadDatFilePart(fileid, $1C, 4, @packages);
1614 if packages > 0 then
1615 for i := 0 to packages - 1 do
1616 InsertDatLinkToDB(fileid, $20 + i * 4);
1617 end
1618 else
1619 begin
1620 end;
1621end;
1622
1623
1624
1625
1626procedure WPGE(fileid: LongWord; dir_dat2db: Boolean);
1627begin
1628 if dir_dat2db then
1629 begin
1630 InsertDatLinkToDB(fileid, $08);
1631 InsertDatLinkToDB(fileid, $0C);
1632 end
1633 else
1634 begin
1635 end;
1636end;
1637
1638
1639
1640
1641procedure InsertHandler(ext: String; needed: Boolean; handler: THandler);
1642begin
1643 SetLength(ConvertHandlers, Length(ConvertHandlers) + 1);
1644 ConvertHandlers[High(ConvertHandlers)].Ext := ext;
1645 ConvertHandlers[High(ConvertHandlers)].needed := needed;
1646 ConvertHandlers[High(ConvertHandlers)].handler := handler;
1647end;
1648
1649begin
1650 InsertHandler('ABNA', False, nil);
1651 // InsertHandler('AGDB',True,AGDB);
1652 InsertHandler('AGDB', False, nil);
1653 InsertHandler('AGQC', False, nil);
1654 InsertHandler('AGQG', False, nil);
1655 InsertHandler('AGQR', False, nil);
1656 InsertHandler('AISA', True, AISA);
1657 InsertHandler('AITR', False, nil);
1658 InsertHandler('AKAA', False, nil);
1659 InsertHandler('AKBA', False, nil);
1660 InsertHandler('AKBP', False, nil);
1661 InsertHandler('AKDA', False, nil);
1662 InsertHandler('AKEV', True, AKEV);
1663 InsertHandler('AKOT', True, AKOT);
1664 InsertHandler('AKVA', False, nil);
1665 InsertHandler('BINA', False, nil);
1666 InsertHandler('CBPI', True, CBPI);
1667 InsertHandler('CBPM', True, CBPM);
1668 InsertHandler('CONS', True, CONS);
1669 InsertHandler('CRSA', True, CRSA);
1670 InsertHandler('DOOR', True, DOOR);
1671 InsertHandler('DPGE', True, DPGE);
1672 InsertHandler('ENVP', False, nil);
1673 InsertHandler('FILM', False, nil);
1674 InsertHandler('HPGE', True, HPGE);
1675 InsertHandler('IDXA', False, nil);
1676 InsertHandler('IGHH', True, IGHH);
1677 InsertHandler('IGPA', True, IGPA);
1678 InsertHandler('IGPG', True, IGPG);
1679 InsertHandler('IGSA', True, IGSA);
1680 InsertHandler('IMPT', True, IMPT);
1681 InsertHandler('IPGE', True, IPGE);
1682 InsertHandler('KEYI', True, KEYI);
1683 InsertHandler('M3GA', True, M3GA);
1684 InsertHandler('M3GM', True, M3GM);
1685 InsertHandler('MTRL', True, MTRL);
1686 InsertHandler('OBAN', False, nil);
1687 InsertHandler('OBDC', True, OBDC);
1688 InsertHandler('OBOA', True, OBOA);
1689 InsertHandler('OFGA', True, OFGA);
1690 InsertHandler('ONCC', True, ONCC);
1691 InsertHandler('ONCP', False, nil);
1692 InsertHandler('ONCV', True, ONCV);
1693 InsertHandler('ONFA', False, nil);
1694 InsertHandler('ONGS', False, nil);
1695 InsertHandler('ONIA', False, nil);
1696 InsertHandler('ONLD', False, nil);
1697 InsertHandler('ONLV', True, ONLV);
1698 InsertHandler('ONMA', False, nil);
1699 InsertHandler('ONOA', True, ONOA);
1700 InsertHandler('ONSA', False, nil);
1701 InsertHandler('ONSK', True, ONSK);
1702 InsertHandler('ONTA', False, nil);
1703 InsertHandler('ONVL', True, ONVL);
1704 InsertHandler('ONWC', True, ONWC);
1705 InsertHandler('OPGE', True, OPGE);
1706 InsertHandler('OSBD', False, nil);
1707 InsertHandler('OTIT', False, nil);
1708 InsertHandler('OTLF', False, nil);
1709 InsertHandler('PLEA', False, nil);
1710 InsertHandler('PNTA', False, nil);
1711 InsertHandler('PSPC', True, PSPC);
1712 InsertHandler('PSPL', True, PSPL);
1713 InsertHandler('PSUI', True, PSUI);
1714 InsertHandler('QTNA', False, nil);
1715 InsertHandler('SNDD', False, nil);
1716 InsertHandler('STNA', True, STNA);
1717 InsertHandler('SUBT', False, nil);
1718 InsertHandler('TRAC', True, TRAC);
1719 InsertHandler('TRAM', True, TRAM);
1720 InsertHandler('TRAS', True, TRAS);
1721 InsertHandler('TRBS', True, TRBS);
1722 InsertHandler('TRCM', True, TRCM);
1723 InsertHandler('TRGA', True, TRGA);
1724 InsertHandler('TRGE', True, TRGE);
1725 InsertHandler('TRIA', False, nil);
1726 InsertHandler('TRIG', True, TRIG);
1727 InsertHandler('TRMA', True, TRMA);
1728 InsertHandler('TRSC', True, TRSC);
1729 InsertHandler('TRTA', False, nil);
1730 InsertHandler('TSFF', True, TSFF);
1731 InsertHandler('TSFL', False, nil);
1732 InsertHandler('TSFT', True, TSFT);
1733 InsertHandler('TSGA', False, nil);
1734 InsertHandler('TSTR', False, nil);
1735 InsertHandler('TURR', True, TURR);
1736 InsertHandler('TXAN', True, TXAN);
1737 InsertHandler('TXCA', False, nil);
1738 InsertHandler('TXMA', True, TXMA);
1739 InsertHandler('TXMB', True, TXMB);
1740 InsertHandler('TXMP', True, TXMP);
1741 InsertHandler('TXTC', True, TXTC);
1742 InsertHandler('VCRA', False, nil);
1743 InsertHandler('WMCL', True, WMCL);
1744 InsertHandler('WMDD', True, WMDD);
1745 InsertHandler('WMM_', False, nil);
1746 InsertHandler('WMMB', True, WMMB);
1747 InsertHandler('WPGE', True, WPGE);
1748end.
Note: See TracBrowser for help on using the repository browser.