source: oup/current/Helper_LevelDB.pas@ 54

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