浏览代码

* new message files layout with msg numbers (but still no code to
show the number on the screen)

peter 25 年之前
父节点
当前提交
957d4cdc89
共有 16 个文件被更改,包括 3612 次插入3282 次删除
  1. 6 2
      compiler/compiler.pas
  2. 234 234
      compiler/errord.msg
  3. 232 232
      compiler/errore.msg
  4. 323 204
      compiler/errores.msg
  5. 242 236
      compiler/errorf.msg
  6. 224 415
      compiler/errorn.msg
  7. 587 231
      compiler/errorr.msg
  8. 21 17
      compiler/hcodegen.pas
  9. 228 101
      compiler/messages.pas
  10. 544 702
      compiler/msgidx.inc
  11. 732 717
      compiler/msgtxt.inc
  12. 17 10
      compiler/options.pas
  13. 6 2
      compiler/scandir.inc
  14. 7 3
      compiler/scanner.pas
  15. 159 140
      compiler/utils/msg2inc.pp
  16. 50 36
      compiler/verbose.pas

+ 6 - 2
compiler/compiler.pas

@@ -242,7 +242,7 @@ function Compile(const cmd:string):longint;
 {$maxfpuregisters 0}
 {$maxfpuregisters 0}
 {$endif fpc}
 {$endif fpc}
 
 
-  procedure writepathlist(w:tmsgconst;l:TSearchPathList);
+  procedure writepathlist(w:longint;l:TSearchPathList);
   var
   var
     hp : pstringqueueitem;
     hp : pstringqueueitem;
   begin
   begin
@@ -355,7 +355,11 @@ end;
 end.
 end.
 {
 {
   $Log$
   $Log$
-  Revision 1.50  2000-05-29 10:04:40  pierre
+  Revision 1.51  2000-06-30 20:23:33  peter
+    * new message files layout with msg numbers (but still no code to
+      show the number on the screen)
+
+  Revision 1.50  2000/05/29 10:04:40  pierre
     * New bunch of Gabor changes
     * New bunch of Gabor changes
 
 
   Revision 1.49  2000/05/03 16:31:22  pierre
   Revision 1.49  2000/05/03 16:31:22  pierre

文件差异内容过多而无法显示
+ 234 - 234
compiler/errord.msg


文件差异内容过多而无法显示
+ 232 - 232
compiler/errore.msg


文件差异内容过多而无法显示
+ 323 - 204
compiler/errores.msg


文件差异内容过多而无法显示
+ 242 - 236
compiler/errorf.msg


文件差异内容过多而无法显示
+ 224 - 415
compiler/errorn.msg


文件差异内容过多而无法显示
+ 587 - 231
compiler/errorr.msg


+ 21 - 17
compiler/hcodegen.pas

@@ -141,14 +141,14 @@ implementation
        make_const_global : boolean;
        make_const_global : boolean;
 
 
     { message calls with codegenerror support }
     { message calls with codegenerror support }
-    procedure cgmessage(t : tmsgconst);
-    procedure cgmessage1(t : tmsgconst;const s : string);
-    procedure cgmessage2(t : tmsgconst;const s1,s2 : string);
-    procedure cgmessage3(t : tmsgconst;const s1,s2,s3 : string);
-    procedure CGMessagePos(const pos:tfileposinfo;t:tmsgconst);
-    procedure CGMessagePos1(const pos:tfileposinfo;t:tmsgconst;const s1:string);
-    procedure CGMessagePos2(const pos:tfileposinfo;t:tmsgconst;const s1,s2:string);
-    procedure CGMessagePos3(const pos:tfileposinfo;t:tmsgconst;const s1,s2,s3:string);
+    procedure cgmessage(t : longint);
+    procedure cgmessage1(t : longint;const s : string);
+    procedure cgmessage2(t : longint;const s1,s2 : string);
+    procedure cgmessage3(t : longint;const s1,s2,s3 : string);
+    procedure CGMessagePos(const pos:tfileposinfo;t:longint);
+    procedure CGMessagePos1(const pos:tfileposinfo;t:longint;const s1:string);
+    procedure CGMessagePos2(const pos:tfileposinfo;t:longint;const s1,s2:string);
+    procedure CGMessagePos3(const pos:tfileposinfo;t:longint;const s1,s2,s3:string);
 
 
     { initialize respectively terminates the code generator }
     { initialize respectively terminates the code generator }
     { for a new module or procedure                      }
     { for a new module or procedure                      }
@@ -176,7 +176,7 @@ implementation
             override the message calls to set codegenerror
             override the message calls to set codegenerror
 *****************************************************************************}
 *****************************************************************************}
 
 
-    procedure cgmessage(t : tmsgconst);
+    procedure cgmessage(t : longint);
       var
       var
          olderrorcount : longint;
          olderrorcount : longint;
       begin
       begin
@@ -188,7 +188,7 @@ implementation
            end;
            end;
       end;
       end;
 
 
-    procedure cgmessage1(t : tmsgconst;const s : string);
+    procedure cgmessage1(t : longint;const s : string);
       var
       var
          olderrorcount : longint;
          olderrorcount : longint;
       begin
       begin
@@ -200,7 +200,7 @@ implementation
            end;
            end;
       end;
       end;
 
 
-    procedure cgmessage2(t : tmsgconst;const s1,s2 : string);
+    procedure cgmessage2(t : longint;const s1,s2 : string);
       var
       var
          olderrorcount : longint;
          olderrorcount : longint;
       begin
       begin
@@ -212,7 +212,7 @@ implementation
            end;
            end;
       end;
       end;
 
 
-    procedure cgmessage3(t : tmsgconst;const s1,s2,s3 : string);
+    procedure cgmessage3(t : longint;const s1,s2,s3 : string);
       var
       var
          olderrorcount : longint;
          olderrorcount : longint;
       begin
       begin
@@ -225,7 +225,7 @@ implementation
       end;
       end;
 
 
 
 
-    procedure cgmessagepos(const pos:tfileposinfo;t : tmsgconst);
+    procedure cgmessagepos(const pos:tfileposinfo;t : longint);
       var
       var
          olderrorcount : longint;
          olderrorcount : longint;
       begin
       begin
@@ -237,7 +237,7 @@ implementation
            end;
            end;
       end;
       end;
 
 
-    procedure cgmessagepos1(const pos:tfileposinfo;t : tmsgconst;const s1 : string);
+    procedure cgmessagepos1(const pos:tfileposinfo;t : longint;const s1 : string);
       var
       var
          olderrorcount : longint;
          olderrorcount : longint;
       begin
       begin
@@ -249,7 +249,7 @@ implementation
            end;
            end;
       end;
       end;
 
 
-    procedure cgmessagepos2(const pos:tfileposinfo;t : tmsgconst;const s1,s2 : string);
+    procedure cgmessagepos2(const pos:tfileposinfo;t : longint;const s1,s2 : string);
       var
       var
          olderrorcount : longint;
          olderrorcount : longint;
       begin
       begin
@@ -261,7 +261,7 @@ implementation
            end;
            end;
       end;
       end;
 
 
-    procedure cgmessagepos3(const pos:tfileposinfo;t : tmsgconst;const s1,s2,s3 : string);
+    procedure cgmessagepos3(const pos:tfileposinfo;t : longint;const s1,s2,s3 : string);
       var
       var
          olderrorcount : longint;
          olderrorcount : longint;
       begin
       begin
@@ -450,7 +450,11 @@ end.
 
 
 {
 {
   $Log$
   $Log$
-  Revision 1.59  2000-06-01 19:09:57  peter
+  Revision 1.60  2000-06-30 20:23:36  peter
+    * new message files layout with msg numbers (but still no code to
+      show the number on the screen)
+
+  Revision 1.59  2000/06/01 19:09:57  peter
     * made resourcestrings OOP so it's easier to handle it per module
     * made resourcestrings OOP so it's easier to handle it per module
 
 
   Revision 1.58  2000/04/02 18:30:12  florian
   Revision 1.58  2000/04/02 18:30:12  florian

+ 228 - 101
compiler/messages.pas

@@ -23,51 +23,97 @@
 unit Messages;
 unit Messages;
 interface
 interface
 
 
+const
+  maxmsgidxparts = 20;
+
 type
 type
   ppchar=^pchar;
   ppchar=^pchar;
 
 
+  TArrayOfPChar = array[0..1000] of pchar;
+  PArrayOfPChar = ^TArrayOfPChar;
+
   PMessage=^TMessage;
   PMessage=^TMessage;
   TMessage=object
   TMessage=object
     msgfilename : string;
     msgfilename : string;
     msgallocsize,
     msgallocsize,
     msgsize,
     msgsize,
-    msgcrc,
+    msgparts,
     msgs        : longint;
     msgs        : longint;
     msgtxt      : pchar;
     msgtxt      : pchar;
-    msgidx      : ppchar;
-    constructor Init(p:pointer;n:longint);
-    constructor InitExtern(const fn:string;n:longint);
-    destructor Done;
+    msgidx      : array[1..maxmsgidxparts] of PArrayOfPChar;
+    msgidxmax   : array[1..maxmsgidxparts] of longint;
+    constructor Init(n:longint;const idxmax:array of longint);
+    destructor  Done;
+    function  LoadIntern(p:pointer;n:longint):boolean;
+    function  LoadExtern(const fn:string):boolean;
     procedure CreateIdx;
     procedure CreateIdx;
-    function Get(nr:longint):string;
-    function Get3(nr:longint;const s1,s2,s3:string):string;
-    function Get2(nr:longint;const s1,s2:string):string;
-    function Get1(nr:longint;const s1:string):string;
+    function  GetPChar(nr:longint):pchar;
+    function  Get(nr:longint):string;
+    function  Get3(nr:longint;const s1,s2,s3:string):string;
+    function  Get2(nr:longint;const s1,s2:string):string;
+    function  Get1(nr:longint;const s1:string):string;
   end;
   end;
 
 
+{ this will read a line until #10 or #0 and also increase p }
+function GetMsgLine(var p:pchar):string;
+
+
 implementation
 implementation
 
 
 uses
 uses
   globals,crc,
   globals,crc,
-  verbose,
 {$ifdef DELPHI}
 {$ifdef DELPHI}
   sysutils;
   sysutils;
 {$else DELPHI}
 {$else DELPHI}
   strings;
   strings;
 {$endif DELPHI}
 {$endif DELPHI}
 
 
-constructor TMessage.Init(p:pointer;n:longint);
+constructor TMessage.Init(n:longint;const idxmax:array of longint);
+var
+  i : longint;
+begin
+  msgtxt:=nil;
+  msgsize:=0;
+  msgparts:=n;
+  if n<>high(idxmax)+1 then
+   fail;
+  for i:=1to n do
+   begin
+     msgidxmax[i]:=idxmax[i-1];
+     getmem(msgidx[i],msgidxmax[i]*4);
+     fillchar(msgidx[i]^,msgidxmax[i]*4,0);
+   end;
+end;
+
+
+destructor TMessage.Done;
+var
+  i : longint;
+begin
+  for i:=1to msgparts do
+   freemem(msgidx[i],msgidxmax[i]*4);
+  if msgallocsize>0 then
+   begin
+     freemem(msgtxt,msgsize);
+     msgallocsize:=0;
+   end;
+  msgtxt:=nil;
+  msgsize:=0;
+  msgparts:=0;
+end;
+
+
+function TMessage.LoadIntern(p:pointer;n:longint):boolean;
 begin
 begin
   msgtxt:=pchar(p);
   msgtxt:=pchar(p);
+  msgsize:=n;
   msgallocsize:=0;
   msgallocsize:=0;
-  msgsize:=0;
-  msgcrc:=MsgCrcValue;
-  msgs:=n;
   CreateIdx;
   CreateIdx;
+  LoadIntern:=true;
 end;
 end;
 
 
 
 
-constructor TMessage.InitExtern(const fn:string;n:longint);
+function TMessage.LoadExtern(const fn:string):boolean;
 
 
 {$ifndef FPC}
 {$ifndef FPC}
   procedure readln(var t:text;var s:string);
   procedure readln(var t:text;var s:string);
@@ -96,61 +142,99 @@ const
   bufsize=8192;
   bufsize=8192;
 var
 var
   f       : text;
   f       : text;
-{$ifdef DEBUGCRC}
-  f2 : text;
-{$endif DEBUGCRC}
-  msgsread,
-  line,i,crc  : longint;
+  error,multiline : boolean;
+  code : word;
+  numpart,numidx,
+  line,i,j,num : longint;
   ptxt    : pchar;
   ptxt    : pchar;
+  number,
   s,s1    : string;
   s,s1    : string;
   buf     : pointer;
   buf     : pointer;
+
+  procedure err(const msgstr:string);
+  begin
+    writeln('error in line ',line,': ',msgstr);
+    error:=true;
+  end;
+
 begin
 begin
-  crc:=longint($ffffffff);
+  LoadExtern:=false;
   getmem(buf,bufsize);
   getmem(buf,bufsize);
 {Read the message file}
 {Read the message file}
   assign(f,fn);
   assign(f,fn);
-{$ifdef DEBUGCRC}
-  assign(f2,'crcmsg.tst');
-  rewrite(f2);
-  Writeln(f2,crc);
-{$endif DEBUGCRC}
   {$I-}
   {$I-}
    reset(f);
    reset(f);
   {$I+}
   {$I+}
   if ioresult<>0 then
   if ioresult<>0 then
    begin
    begin
      WriteLn('*** message file '+fn+' not found ***');
      WriteLn('*** message file '+fn+' not found ***');
-     fail;
+     exit;
    end;
    end;
   settextbuf(f,buf^,bufsize);
   settextbuf(f,buf^,bufsize);
 { First parse the file and count bytes needed }
 { First parse the file and count bytes needed }
+  error:=false;
   line:=0;
   line:=0;
-  msgs:=n;
+  multiline:=false;
   msgsize:=0;
   msgsize:=0;
-  msgsread:=0;
   while not eof(f) do
   while not eof(f) do
    begin
    begin
      readln(f,s);
      readln(f,s);
      inc(line);
      inc(line);
-     if (s<>'') and not(s[1] in ['#',';','%']) then
+     if multiline then
       begin
       begin
-        i:=pos('=',s);
-        if i>0 then
-         begin
-           inc(msgsize,length(s)-i+1);
-           inc(msgsread);
-         end
+        if s=']' then
+         multiline:=false
         else
         else
-         writeln('error in line: ',line,' skipping');
+         inc(msgsize,length(s)+1); { +1 for linebreak }
+      end
+     else
+      begin
+        if (s<>'') and not(s[1] in ['#',';','%']) then
+         begin
+           i:=pos('=',s);
+           if i>0 then
+            begin
+              j:=i+1;
+              if not(s[j] in ['0'..'9']) then
+               err('no number found')
+              else
+               begin
+                 while (s[j] in ['0'..'9']) do
+                  inc(j);
+               end;
+              if j-i-1<>5 then
+               err('number length is not 5');
+              number:=Copy(s,i+1,j-i-1);
+              { update the max index }
+              val(number,num,code);
+              numpart:=num div 1000;
+              numidx:=num mod 1000;
+              { check range }
+              if numpart > msgparts then
+               err('number is to large')
+              else
+               if numidx >= msgidxmax[numpart] then
+                err('index is to large');
+              if s[j+1]='[' then
+               begin
+                 inc(msgsize,j-i);
+                 multiline:=true
+               end
+              else
+               inc(msgsize,length(s)-i+1);
+            end
+           else
+            err('no = found');
+         end;
       end;
       end;
    end;
    end;
-{ check amount of messages }
-  if msgsread<>msgs then
+  if multiline then
+   err('still in multiline mode');
+  if error then
    begin
    begin
-     WriteLn('*** message file '+fn+' is corrupt: read ',msgsread,' of ',msgs,' msgs ***');
-     close(f);
      freemem(buf,bufsize);
      freemem(buf,bufsize);
-     fail;
+     close(f);
+     exit;
    end;
    end;
 { now read the buffer in mem }
 { now read the buffer in mem }
   msgallocsize:=msgsize;
   msgallocsize:=msgsize;
@@ -160,84 +244,126 @@ begin
   while not eof(f) do
   while not eof(f) do
    begin
    begin
      readln(f,s);
      readln(f,s);
-     if (s<>'') and not(s[1] in ['#',';','%']) then
+     if multiline then
       begin
       begin
-        i:=pos('=',s);
-        if i>0 then
+        if s=']' then
          begin
          begin
-           {txt}
-           s1:=Copy(s,i+1,255);
-           { support <lf> for empty lines }
-           if s1='<lf>' then
-            begin
-              s1:='';
-              { update the msgsize also! }
-              dec(msgsize,4);
-            end;
-           {txt}
-           move(s1[1],ptxt^,length(s1));
-           inc(ptxt,length(s1));
+           multiline:=false;
+           { overwrite last eol }
+           dec(ptxt);
            ptxt^:=#0;
            ptxt^:=#0;
            inc(ptxt);
            inc(ptxt);
-           s1:=upper(copy(s,1,i-1));
-           crc:=UpdateCRC32(crc,s1[1],length(s1));
-{$ifdef DEBUGCRC}
-           Writeln(f2,s1);
-           Writeln(f2,crc);
-{$endif DEBUGCRC}
+         end
+        else
+         begin
+           move(s[1],ptxt^,length(s));
+           inc(ptxt,length(s));
+           ptxt^:=#10;
+           inc(ptxt);
+         end;
+      end
+     else
+      begin
+        if (s<>'') and not(s[1] in ['#',';','%']) then
+         begin
+           i:=pos('=',s);
+           if i>0 then
+            begin
+              j:=i+1;
+              while (s[j] in ['0'..'9']) do
+               inc(j);
+              { multiline start then no txt }
+              if s[j+1]='[' then
+               begin
+                 s1:=Copy(s,i+1,j-i);
+                 move(s1[1],ptxt^,length(s1));
+                 inc(ptxt,length(s1));
+                 multiline:=true;
+               end
+              else
+               begin
+                 { txt including number }
+                 s1:=Copy(s,i+1,255);
+                 move(s1[1],ptxt^,length(s1));
+                 inc(ptxt,length(s1));
+                 ptxt^:=#0;
+                 inc(ptxt);
+               end;
+            end;
          end;
          end;
       end;
       end;
    end;
    end;
   close(f);
   close(f);
-{$ifdef DEBUGCRC}
-  close(f2);
-{$endif DEBUGCRC}
   freemem(buf,bufsize);
   freemem(buf,bufsize);
-{ check amount of messages }
-  if (MsgCrcValue<>0) and (crc<>MsgCrcValue) then
-   begin
-     WriteLn('*** message file '+fn+' is incompatible : wrong CRC value ***');
-     fail;
-   end;
 { now we can create the index }
 { now we can create the index }
   CreateIdx;
   CreateIdx;
+  LoadExtern:=true;
 end;
 end;
 
 
 
 
-
-destructor TMessage.Done;
+procedure TMessage.CreateIdx;
+var
+  hp1,
+  hp,hpend : pchar;
+  code : word;
+  num  : longint;
+  number : string[5];
+  i   : longint;
+  numpart,numidx : longint;
 begin
 begin
-  if assigned(msgidx) then
-   begin
-     freemem(msgidx,msgs shl 2);
-     msgidx:=nil;
-   end;
-  if msgallocsize>0 then
+  { clear }
+  for i:=1to msgparts do
+   fillchar(msgidx[i]^,msgidxmax[i]*4,0);
+  { process msgtxt buffer }
+  number:='00000';
+  hp:=msgtxt;
+  hpend:=@msgtxt[msgsize];
+  while (hp<hpend) do
    begin
    begin
-     freemem(msgtxt,msgallocsize);
-     msgtxt:=nil;
-     msgallocsize:=0;
+     hp1:=hp;
+     for i:=1to 5 do
+      begin
+        number[i]:=hp1^;
+        inc(hp1);
+      end;
+     val(number,num,code);
+     numpart:=num div 1000;
+     numidx:=num mod 1000;
+     { skip _ }
+     inc(hp1);
+     { put the address in the idx, the numbers are already checked }
+     msgidx[numpart]^[numidx]:=hp1;
+     { next string }
+     hp:=pchar(@hp[strlen(hp)+1]);
    end;
    end;
 end;
 end;
 
 
 
 
-procedure TMessage.CreateIdx;
+function GetMsgLine(var p:pchar):string;
 var
 var
-  hp  : pchar;
-  hpl : ppchar;
-  n   : longint;
+  i  : longint;
 begin
 begin
-  getmem(msgidx,msgs shl 2);
-  hpl:=msgidx;
-  hp:=msgtxt;
-  n:=0;
-  while (n<msgs) do
+  i:=0;
+  while not(p^ in [#0,#10]) and (i<255) do
    begin
    begin
-     hpl^:=hp;
-     hpl:=pointer(longint(hpl)+4);
-     inc(n);
-     hp:=pchar(@hp[strlen(hp)+1]);
+     inc(i);
+     GetMsgLine[i]:=p^;
+     inc(p);
    end;
    end;
+  { skip #10 }
+  if p^=#10 then
+   inc(p);
+  { if #0 then set p to nil }
+  if p^=#0 then
+   p:=nil;
+  { return string }
+  GetMsgLine[0]:=chr(i);
+end;
+
+
+function TMessage.GetPChar(nr:longint):pchar;
+begin
+  GetPChar:=msgidx[nr div 1000]^[nr mod 1000];
 end;
 end;
 
 
 
 
@@ -246,10 +372,7 @@ var
   s : string[16];
   s : string[16];
   hp : pchar;
   hp : pchar;
 begin
 begin
-  if msgidx=nil then
-   hp:=nil
-  else
-   hp:=pchar(pointer(longint(msgidx)+nr shl 2)^);
+  hp:=msgidx[nr div 1000]^[nr mod 1000];
   if hp=nil then
   if hp=nil then
    begin
    begin
      Str(nr,s);
      Str(nr,s);
@@ -306,7 +429,11 @@ end;
 end.
 end.
 {
 {
   $Log$
   $Log$
-  Revision 1.15  2000-06-18 18:14:21  peter
+  Revision 1.16  2000-06-30 20:23:36  peter
+    * new message files layout with msg numbers (but still no code to
+      show the number on the screen)
+
+  Revision 1.15  2000/06/18 18:14:21  peter
     * only replace the $1,$2,$3 once, so it doesn't loop when the
     * only replace the $1,$2,$3 once, so it doesn't loop when the
       value to replace with contains $1,$2 or $3
       value to replace with contains $1,$2 or $3
 
 

+ 544 - 702
compiler/msgidx.inc

@@ -1,703 +1,545 @@
-type tmsgconst=(
-  general_t_compilername,
-  general_d_sourceos,
-  general_i_targetos,
-  general_t_exepath,
-  general_t_unitpath,
-  general_t_includepath,
-  general_t_librarypath,
-  general_t_objectpath,
-  general_i_abslines_compiled,
-  general_f_no_memory_left,
-  general_i_writingresourcefile,
-  general_e_errorwritingresourcefile,
-  scan_f_end_of_file,
-  scan_f_string_exceeds_line,
-  scan_f_illegal_char,
-  scan_f_syn_expected,
-  scan_t_start_include_file,
-  scan_w_comment_level,
-  scan_n_far_directive_ignored,
-  scan_n_stack_check_global_under_linux,
-  scan_n_ignored_switch,
-  scan_w_illegal_switch,
-  scan_w_switch_is_global,
-  scan_e_illegal_char_const,
-  scan_f_cannot_open_input,
-  scan_f_cannot_open_includefile,
-  scan_e_too_much_endifs,
-  scan_w_only_pack_records,
-  scan_w_only_pack_enum,
-  scan_e_endif_expected,
-  scan_e_preproc_syntax_error,
-  scan_e_error_in_preproc_expr,
-  scan_w_macro_cut_after_255_chars,
-  scan_e_endif_without_if,
-  scan_f_user_defined,
-  scan_e_user_defined,
-  scan_w_user_defined,
-  scan_n_user_defined,
-  scan_h_user_defined,
-  scan_i_user_defined,
-  scan_e_keyword_cant_be_a_macro,
-  scan_f_macro_buffer_overflow,
-  scan_w_macro_deep_ten,
-  scan_e_wrong_styled_switch,
-  scan_d_handling_switch,
-  scan_c_endif_found,
-  scan_c_ifdef_found,
-  scan_c_ifopt_found,
-  scan_c_if_found,
-  scan_c_ifndef_found,
-  scan_c_else_found,
-  scan_c_skipping_until,
-  scan_i_press_enter,
-  scan_w_unsupported_switch,
-  scan_w_illegal_directive,
-  scan_t_back_in,
-  scan_w_unsupported_app_type,
-  scan_w_app_type_not_support,
-  scan_w_decription_not_support,
-  scan_n_version_not_support,
-  scan_n_only_exe_version,
-  scan_w_wrong_version_ignored,
-  scan_w_unsupported_asmmode_specifier,
-  scan_w_no_asm_reader_switch_inside_asm,
-  scan_e_wrong_switch_toggle,
-  scan_e_resourcefiles_not_supported,
-  scan_w_include_env_not_found,
-  scan_e_invalid_maxfpureg_value,
-  scan_w_only_one_resourcefile_supported,
-  parser_e_syntax_error,
-  parser_w_proc_far_ignored,
-  parser_w_proc_near_ignored,
-  parser_w_proc_interrupt_ignored,
-  parser_e_dont_nest_interrupt,
-  parser_w_proc_directive_ignored,
-  parser_e_no_overload_for_all_procs,
-  parser_e_no_dll_file_specified,
-  parser_e_export_name_double,
-  parser_e_export_ordinal_double,
-  parser_e_export_invalid_index,
-  parser_w_parser_reloc_no_debug,
-  parser_w_parser_win32_debug_needs_WN,
-  parser_e_constructorname_must_be_init,
-  parser_e_destructorname_must_be_done,
-  parser_e_illegal_open_parameter,
-  parser_e_proc_inline_not_supported,
-  parser_w_priv_meth_not_virtual,
-  parser_w_constructor_should_be_public,
-  parser_w_destructor_should_be_public,
-  parser_n_only_one_destructor,
-  parser_e_no_local_objects,
-  parser_f_no_anonym_objects,
-  parser_object_has_no_vmt,
-  parser_e_illegal_parameter_list,
-  parser_e_wrong_parameter_type,
-  parser_e_wrong_parameter_size,
-  parser_e_overloaded_no_procedure,
-  parser_e_overloaded_have_same_parameters,
-  parser_e_header_dont_match_forward,
-  parser_e_header_different_var_names,
-  parser_n_duplicate_enum,
-  parser_n_interface_name_diff_implementation_name,
-  parser_e_no_with_for_variable_in_other_segments,
-  parser_e_too_much_lexlevel,
-  parser_e_range_check_error,
-  parser_w_range_check_error,
-  parser_e_double_caselabel,
-  parser_e_case_lower_less_than_upper_bound,
-  parser_e_type_const_not_possible,
-  parser_e_no_overloaded_procvars,
-  parser_e_invalid_string_size,
-  parser_w_use_extended_syntax_for_objects,
-  parser_w_no_new_dispose_on_void_pointers,
-  parser_e_no_new_dispose_on_void_pointers,
-  parser_e_class_id_expected,
-  parser_e_no_type_not_allowed_here,
-  parser_e_methode_id_expected,
-  parser_e_header_dont_match_any_member,
-  parser_p_procedure_start,
-  parser_e_error_in_real,
-  parser_e_fail_only_in_constructor,
-  parser_e_no_paras_for_destructor,
-  parser_e_only_class_methods_via_class_ref,
-  parser_e_only_class_methods,
-  parser_e_case_mismatch,
-  parser_e_illegal_symbol_exported,
-  parser_w_should_use_override,
-  parser_e_nothing_to_be_overridden,
-  parser_e_no_procedure_to_access_property,
-  parser_w_stored_not_implemented,
-  parser_e_ill_property_access_sym,
-  parser_e_cant_access_protected_member,
-  parser_e_cant_access_private_member,
-  parser_w_overloaded_are_not_both_virtual,
-  parser_w_overloaded_are_not_both_non_virtual,
-  parser_e_overloaded_methodes_not_same_ret,
-  parser_e_dont_nest_export,
-  parser_e_methods_dont_be_export,
-  parser_e_call_by_ref_without_typeconv,
-  parser_e_no_super_class,
-  parser_e_self_not_in_method,
-  parser_e_generic_methods_only_in_methods,
-  parser_e_illegal_colon_qualifier,
-  parser_e_illegal_set_expr,
-  parser_e_pointer_to_class_expected,
-  parser_e_expr_have_to_be_constructor_call,
-  parser_e_expr_have_to_be_destructor_call,
-  parser_e_invalid_record_const,
-  parser_e_false_with_expr,
-  parser_e_void_function,
-  parser_e_constructors_always_objects,
-  parser_e_operator_not_overloaded,
-  parser_e_no_such_assignment,
-  parser_e_overload_impossible,
-  parser_e_no_reraise_possible,
-  parser_e_no_new_or_dispose_for_classes,
-  parser_e_asm_incomp_with_function_return,
-  parser_e_procedure_overloading_is_off,
-  parser_e_overload_operator_failed,
-  parser_e_comparative_operator_return_boolean,
-  parser_e_only_virtual_methods_abstract,
-  parser_f_unsupported_feature,
-  parser_e_mix_of_classes_and_objects,
-  parser_w_unknown_proc_directive_ignored,
-  parser_e_absolute_only_one_var,
-  parser_e_absolute_only_to_var_or_const,
-  parser_e_initialized_only_one_var,
-  parser_e_abstract_no_definition,
-  parser_e_overloaded_must_be_all_global,
-  parser_w_virtual_without_constructor,
-  parser_m_macro_defined,
-  parser_m_macro_undefined,
-  parser_m_macro_set_to,
-  parser_i_compiling,
-  parser_u_parsing_interface,
-  parser_u_parsing_implementation,
-  parser_d_compiling_second_time,
-  parser_e_no_paras_allowed,
-  parser_e_no_property_found_to_override,
-  parser_e_only_one_default_property,
-  parser_e_property_need_paras,
-  parser_e_constructor_cannot_be_not_virtual,
-  parser_e_no_default_property_available,
-  parser_e_cant_have_published,
-  parser_e_forward_declaration_must_be_resolved,
-  parser_e_no_local_operator,
-  parser_e_proc_dir_not_allowed_in_interface,
-  parser_e_proc_dir_not_allowed_in_implementation,
-  parser_e_proc_dir_not_allowed_in_procvar,
-  parser_e_function_already_declared_public_forward,
-  parser_e_not_external_and_export,
-  parser_e_name_keyword_expected,
-  parser_w_not_supported_for_inline,
-  parser_w_inlining_disabled,
-  parser_i_writing_browser_log,
-  parser_h_maybe_deref_caret_missing,
-  parser_f_assembler_reader_not_supported,
-  parser_e_proc_dir_conflict,
-  parser_e_call_convention_dont_match_forward,
-  parser_e_register_calling_not_supported,
-  parser_e_property_cant_have_a_default_value,
-  parser_e_property_default_value_must_const,
-  parser_e_cant_publish_that,
-  parser_e_cant_publish_that_property,
-  parser_w_empty_import_name,
-  parser_e_empty_import_name,
-  parser_e_used_proc_name_changed,
-  parser_e_division_by_zero,
-  parser_e_invalid_float_operation,
-  parser_e_array_lower_less_than_upper_bound,
-  parser_w_string_too_long,
-  parser_e_string_larger_array,
-  parser_e_ill_msg_expr,
-  parser_e_ill_msg_param,
-  parser_e_duplicate_message_label,
-  parser_e_self_in_non_message_handler,
-  parser_e_threadvars_only_sg,
-  parser_f_direct_assembler_not_allowed,
-  parser_w_no_objpas_use_mode,
-  parser_e_no_object_override,
-  parser_e_cant_use_inittable_here,
-  parser_e_resourcestring_only_sg,
-  parser_e_exit_with_argument_not__possible,
-  parser_e_stored_property_must_be_boolean,
-  parser_e_ill_property_storage_sym,
-  parser_e_only_publishable_classes_can__be_published,
-  parser_e_proc_directive_expected,
-  parser_e_invalid_property_index_value,
-  parser_e_procname_to_short_for_export,
-  parser_e_dlltool_unit_var_problem,
-  parser_e_dlltool_unit_var_problem2,
-  type_e_mismatch,
-  type_e_incompatible_types,
-  type_e_not_equal_types,
-  type_e_type_id_expected,
-  type_e_variable_id_expected,
-  type_e_integer_expr_expected,
-  type_e_boolean_expr_expected,
-  type_e_ordinal_expr_expected,
-  type_e_pointer_type_expected,
-  type_e_class_type_expected,
-  type_e_varid_or_typeid_expected,
-  type_e_cant_eval_constant_expr,
-  type_e_set_element_are_not_comp,
-  type_e_set_operation_unknown,
-  type_w_convert_real_2_comp,
-  type_h_use_div_for_int,
-  type_e_strict_var_string_violation,
-  type_e_succ_and_pred_enums_with_assign_not_possible,
-  type_e_cant_read_write_type,
-  type_e_no_readln_writeln_for_typed_file,
-  type_e_no_read_write_for_untyped_file,
-  type_e_typeconflict_in_set,
-  type_w_maybe_wrong_hi_lo,
-  type_e_integer_or_real_expr_expected,
-  type_e_wrong_type_in_array_constructor,
-  type_e_wrong_parameter_type,
-  type_e_no_method_and_procedure_not_compatible,
-  type_e_wrong_math_argument,
-  type_e_no_addr_of_constant,
-  type_e_argument_cant_be_assigned,
-  type_e_cannot_local_proc_to_procvar,
-  type_e_no_assign_to_addr,
-  type_e_no_assign_to_const,
-  sym_e_id_not_found,
-  sym_f_internal_error_in_symtablestack,
-  sym_e_duplicate_id,
-  sym_h_duplicate_id_where,
-  sym_e_unknown_id,
-  sym_e_forward_not_resolved,
-  sym_f_id_already_typed,
-  sym_e_error_in_type_def,
-  sym_e_type_id_not_defined,
-  sym_e_forward_type_not_resolved,
-  sym_e_only_static_in_static,
-  sym_e_invalid_call_tvarsymmangledname,
-  sym_f_type_must_be_rec_or_class,
-  sym_e_no_instance_of_abstract_object,
-  sym_w_label_not_defined,
-  sym_e_label_used_and_not_defined,
-  sym_e_ill_label_decl,
-  sym_e_goto_and_label_not_supported,
-  sym_e_label_not_found,
-  sym_e_id_is_no_label_id,
-  sym_e_label_already_defined,
-  sym_e_ill_type_decl_set,
-  sym_e_class_forward_not_resolved,
-  sym_n_unit_not_used,
-  sym_h_para_identifier_not_used,
-  sym_n_local_identifier_not_used,
-  sym_h_para_identifier_only_set,
-  sym_n_local_identifier_only_set,
-  sym_h_local_symbol_not_used,
-  sym_n_private_identifier_not_used,
-  sym_n_private_identifier_only_set,
-  sym_n_private_method_not_used,
-  sym_e_set_expected,
-  sym_w_function_result_not_set,
-  sym_w_wrong_C_pack,
-  sym_e_illegal_field,
-  sym_n_uninitialized_local_variable,
-  sym_n_uninitialized_variable,
-  sym_e_id_no_member,
-  sym_b_param_list,
-  sym_e_segment_too_large,
-  cg_e_break_not_allowed,
-  cg_e_continue_not_allowed,
-  cg_e_too_complex_expr,
-  cg_e_illegal_expression,
-  cg_e_invalid_integer,
-  cg_e_invalid_qualifier,
-  cg_e_upper_lower_than_lower,
-  cg_e_illegal_count_var,
-  cg_e_cant_choose_overload_function,
-  cg_e_parasize_too_big,
-  cg_e_illegal_type_conversion,
-  cg_d_pointer_to_longint_conv_not_portable,
-  cg_e_file_must_call_by_reference,
-  cg_e_cant_use_far_pointer_there,
-  cg_e_var_must_be_reference,
-  cg_e_dont_call_exported_direct,
-  cg_w_member_cd_call_from_method,
-  cg_n_inefficient_code,
-  cg_w_unreachable_code,
-  cg_e_stackframe_with_esp,
-  cg_e_cant_call_abstract_method,
-  cg_f_internal_error_in_getfloatreg,
-  cg_f_unknown_float_type,
-  cg_f_secondvecn_base_defined_twice,
-  cg_f_extended_cg68k_not_supported,
-  cg_f_32bit_not_supported_in_68000,
-  cg_f_internal_error_in_secondinline,
-  cg_d_register_weight,
-  cg_e_stacklimit_in_local_routine,
-  cg_d_stackframe_omited,
-  cg_w_64bit_range_check_not_supported,
-  cg_e_unable_inline_object_methods,
-  cg_e_unable_inline_procvar,
-  cg_e_no_code_for_inline_stored,
-  cg_e_no_call_to_interrupt,
-  cg_e_can_access_element_zero,
-  cg_e_include_not_implemented,
-  cg_e_cannot_call_cons_dest_inside_with,
-  cg_e_cannot_call_message_direct,
-  cg_e_goto_inout_of_exception_block,
-  cg_e_control_flow_outside_finally,
-  asmr_d_start_reading,
-  asmr_d_finish_reading,
-  asmr_e_none_label_contain_at,
-  asmr_w_override_op_not_supported,
-  asmr_e_building_record_offset,
-  asmr_e_offset_without_identifier,
-  asmr_e_type_without_identifier,
-  asmr_e_no_local_or_para_allowed,
-  asmr_e_need_offset,
-  asmr_e_need_dollar,
-  asmr_e_cant_have_multiple_relocatable_symbols,
-  asmr_e_only_add_relocatable_symbol,
-  asmr_e_invalid_constant_expression,
-  asmr_e_relocatable_symbol_not_allowed,
-  asmr_e_invalid_reference_syntax,
-  asmr_e_local_para_unreachable,
-  asmr_e_local_label_not_allowed_as_ref,
-  asmr_e_wrong_base_index,
-  asmr_w_possible_object_field_bug,
-  asmr_e_wrong_scale_factor,
-  asmr_e_multiple_index,
-  asmr_e_invalid_operand_type,
-  asmr_e_invalid_string_as_opcode_operand,
-  asmr_w_CODE_and_DATA_not_supported,
-  asmr_e_null_label_ref_not_allowed,
-  asmr_e_expr_zero_divide,
-  asmr_e_expr_illegal,
-  asmr_e_escape_seq_ignored,
-  asmr_e_invalid_symbol_ref,
-  asmr_w_fwait_emu_prob,
-  asmr_w_fadd_to_faddp,
-  asmr_w_enter_not_supported_by_linux,
-  asmr_w_calling_overload_func,
-  asmr_e_unsupported_symbol_type,
-  asmr_e_constant_out_of_bounds,
-  asmr_e_error_converting_decimal,
-  asmr_e_error_converting_octal,
-  asmr_e_error_converting_binary,
-  asmr_e_error_converting_hexadecimal,
-  asmr_h_direct_global_to_mangled,
-  asmr_w_direct_global_is_overloaded_func,
-  asmr_e_cannot_use_SELF_outside_a_method,
-  asmr_e_cannot_use_OLDEBP_outside_nested_procedure,
-  asmr_e_void_function,
-  asmr_e_SEG_not_supported,
-  asmr_e_size_suffix_and_dest_dont_match,
-  asmr_w_size_suffix_and_dest_dont_match,
-  asmr_e_syntax_error,
-  asmr_e_invalid_opcode_and_operand,
-  asmr_e_syn_operand,
-  asmr_e_syn_constant,
-  asmr_e_invalid_string_expression,
-  asmr_w_const32bit_for_address,
-  asmr_e_unknown_opcode,
-  asmr_e_invalid_or_missing_opcode,
-  asmr_e_invalid_prefix_and_opcode,
-  asmr_e_invalid_override_and_opcode,
-  asmr_e_too_many_operands,
-  asmr_w_near_ignored,
-  asmr_w_far_ignored,
-  asmr_e_dup_local_sym,
-  asmr_e_unknown_local_sym,
-  asmr_e_unknown_label_identifier,
-  asmr_e_invalid_register,
-  asmr_e_invalid_fpu_register,
-  asmr_e_nor_not_supported,
-  asmr_w_modulo_not_supported,
-  asmr_e_invalid_float_const,
-  asmr_e_invalid_float_expr,
-  asmr_e_wrong_sym_type,
-  asmr_e_cannot_index_relative_var,
-  asmr_e_invalid_seg_override,
-  asmr_w_id_supposed_external,
-  asmr_e_string_not_allowed_as_const,
-  asmr_e_no_var_type_specified,
-  asmr_w_assembler_code_not_returned_to_text,
-  asmr_e_not_directive_or_local_symbol,
-  asmr_w_using_defined_as_local,
-  asmr_e_dollar_without_identifier,
-  asmr_w_32bit_const_for_address,
-  asmr_n_align_is_target_specific,
-  asmr_e_cannot_access_field_directly_for_parameters,
-  asmr_e_cannot_access_object_field_directly,
-  asmw_f_too_many_asm_files,
-  asmw_f_assembler_output_not_supported,
-  asmw_f_comp_not_supported,
-  asmw_f_direct_not_supported,
-  asmw_e_alloc_data_only_in_bss,
-  asmw_f_no_binary_writer_selected,
-  asmw_e_opcode_not_in_table,
-  asmw_e_invalid_opcode_and_operands,
-  asmw_e_16bit_not_supported,
-  asmw_e_invalid_effective_address,
-  asmw_e_immediate_or_reference_expected,
-  asmw_e_value_exceeds_bounds,
-  asmw_e_short_jmp_out_of_range,
-  asmw_e_undefined_label,
-  exec_w_source_os_redefined,
-  exec_i_assembling_pipe,
-  exec_d_cant_create_asmfile,
-  exec_e_cant_create_objectfile,
-  exec_e_cant_create_archivefile,
-  exec_w_assembler_not_found,
-  exec_t_using_assembler,
-  exec_w_error_while_assembling,
-  exec_w_cant_call_assembler,
-  exec_i_assembling,
-  exec_i_assembling_smart,
-  exec_w_objfile_not_found,
-  exec_w_libfile_not_found,
-  exec_w_error_while_linking,
-  exec_w_cant_call_linker,
-  exec_i_linking,
-  exec_w_util_not_found,
-  exec_t_using_util,
-  exec_e_exe_not_supported,
-  exec_e_dll_not_supported,
-  exec_i_closing_script,
-  exec_w_res_not_found,
-  exec_i_compilingresource,
-  execinfo_f_cant_process_executable,
-  execinfo_f_cant_open_executable,
-  execinfo_x_codesize,
-  execinfo_x_initdatasize,
-  execinfo_x_uninitdatasize,
-  execinfo_x_stackreserve,
-  execinfo_x_stackcommit,
-  unit_t_unitsearch,
-  unit_t_ppu_loading,
-  unit_u_ppu_name,
-  unit_u_ppu_flags,
-  unit_u_ppu_crc,
-  unit_u_ppu_time,
-  unit_u_ppu_file_too_short,
-  unit_u_ppu_invalid_header,
-  unit_u_ppu_invalid_version,
-  unit_u_ppu_invalid_processor,
-  unit_u_ppu_invalid_target,
-  unit_u_ppu_source,
-  unit_u_ppu_write,
-  unit_f_ppu_cannot_write,
-  unit_f_ppu_read_error,
-  unit_f_ppu_read_unexpected_end,
-  unit_f_ppu_invalid_entry,
-  unit_f_ppu_dbx_count_problem,
-  unit_e_illegal_unit_name,
-  unit_f_too_much_units,
-  unit_f_circular_unit_reference,
-  unit_f_cant_compile_unit,
-  unit_f_cant_find_ppu,
-  unit_w_unit_name_error,
-  unit_f_unit_name_error,
-  unit_w_switch_us_missed,
-  unit_f_errors_in_unit,
-  unit_u_load_unit,
-  unit_u_recompile_crc_change,
-  unit_u_recompile_source_found_alone,
-  unit_u_recompile_staticlib_is_older,
-  unit_u_recompile_sharedlib_is_older,
-  unit_u_recompile_obj_and_asm_older,
-  unit_u_recompile_obj_older_than_asm,
-  unit_u_start_parse_interface,
-  unit_u_start_parse_implementation,
-  unit_u_second_load_unit,
-  unit_u_check_time,
-  option_usage,
-  option_only_one_source_support,
-  option_def_only_for_os2,
-  option_no_nested_response_file,
-  option_no_source_found,
-  option_no_option_found,
-  option_illegal_para,
-  option_help_pages_para,
-  option_too_many_cfg_files,
-  option_unable_open_file,
-  option_reading_further_from,
-  option_target_is_already_set,
-  option_no_shared_lib_under_dos,
-  option_too_many_ifdef,
-  option_too_many_endif,
-  option_too_less_endif,
-  option_no_debug_support,
-  option_no_debug_support_recompile_fpc,
-  option_obsolete_switch,
-  option_obsolete_switch_use_new,
-  option_switch_bin_to_src_assembler,
-  option_incompatible_asm,
-  option_asm_forced,
-  option_logo_start,
-  option_logo_end,
-  option_info_start,
-  option_info1,
-  option_info2,
-  option_info3,
-  option_info4,
-  option_info5,
-  option_info6,
-  option_info7,
-  option_info8,
-  option_info_end,
-  ol_begin,
-  ol001,
-  ol002,
-  ol003,
-  ol004,
-  ol005,
-  ol006,
-  ol007,
-  ol008,
-  ol009,
-  ol010,
-  ol011,
-  ol012,
-  ol013,
-  ol014,
-  ol015,
-  ol016,
-  ol017,
-  ol018,
-  ol019,
-  ol020,
-  ol021,
-  ol022,
-  ol023,
-  ol024,
-  ol025,
-  ol026,
-  ol027,
-  ol028,
-  ol029,
-  ol030,
-  ol031,
-  ol032,
-  ol033,
-  ol034,
-  ol035,
-  ol036,
-  ol037,
-  ol038,
-  ol039,
-  ol040,
-  ol041,
-  ol042,
-  ol043,
-  ol044,
-  ol045,
-  ol046,
-  ol047,
-  ol048,
-  ol049,
-  ol050,
-  ol051,
-  ol052,
-  ol053,
-  ol054,
-  ol055,
-  ol056,
-  ol057,
-  ol058,
-  ol059,
-  ol060,
-  ol061,
-  ol062,
-  ol063,
-  ol064,
-  ol065,
-  ol066,
-  ol067,
-  ol068,
-  ol069,
-  ol070,
-  ol071,
-  ol072,
-  ol073,
-  ol074,
-  ol075,
-  ol076,
-  ol077,
-  ol078,
-  ol079,
-  ol080,
-  ol081,
-  ol082,
-  ol083,
-  ol084,
-  ol085,
-  ol086,
-  ol087,
-  ol088,
-  ol089,
-  ol090,
-  ol091,
-  ol092,
-  ol093,
-  ol094,
-  ol095,
-  ol096,
-  ol097,
-  ol098,
-  ol099,
-  ol100,
-  ol101,
-  ol102,
-  ol103,
-  ol104,
-  ol105,
-  ol106,
-  ol107,
-  ol108,
-  ol109,
-  ol110,
-  ol111,
-  ol112,
-  ol113,
-  ol114,
-  ol115,
-  ol116,
-  ol117,
-  ol118,
-  ol119,
-  ol120,
-  ol121,
-  ol122,
-  ol123,
-  ol124,
-  ol125,
-  ol126,
-  ol127,
-  ol128,
-  ol129,
-  ol130,
-  ol131,
-  ol132,
-  ol133,
-  ol134,
-  ol135,
-  ol136,
-  ol137,
-  ol138,
-  ol139,
-  ol140,
-  ol141,
-  ol142,
-  ol143,
-  ol144,
-  ol145,
-  ol146,
-  ol147,
-  ol148,
-  ol149,
-  ol150,
-  ol_end,
-endmsgconst
-);
 const
 const
-  MsgCRCValue : longint = 1376339778;
+  general_t_compilername=01000;
+  general_d_sourceos=01001;
+  general_i_targetos=01002;
+  general_t_exepath=01003;
+  general_t_unitpath=01004;
+  general_t_includepath=01005;
+  general_t_librarypath=01006;
+  general_t_objectpath=01007;
+  general_i_abslines_compiled=01008;
+  general_f_no_memory_left=01009;
+  general_i_writingresourcefile=01010;
+  general_e_errorwritingresourcefile=01011;
+  scan_f_end_of_file=02000;
+  scan_f_string_exceeds_line=02001;
+  scan_f_illegal_char=02002;
+  scan_f_syn_expected=02003;
+  scan_t_start_include_file=02004;
+  scan_w_comment_level=02005;
+  scan_n_far_directive_ignored=02006;
+  scan_n_stack_check_global_under_linux=02007;
+  scan_n_ignored_switch=02008;
+  scan_w_illegal_switch=02009;
+  scan_w_switch_is_global=02010;
+  scan_e_illegal_char_const=02011;
+  scan_f_cannot_open_input=02012;
+  scan_f_cannot_open_includefile=02013;
+  scan_e_too_much_endifs=02014;
+  scan_w_only_pack_records=02015;
+  scan_w_only_pack_enum=02016;
+  scan_e_endif_expected=02017;
+  scan_e_preproc_syntax_error=02018;
+  scan_e_error_in_preproc_expr=02019;
+  scan_w_macro_cut_after_255_chars=02020;
+  scan_e_endif_without_if=02021;
+  scan_f_user_defined=02022;
+  scan_e_user_defined=02023;
+  scan_w_user_defined=02024;
+  scan_n_user_defined=02025;
+  scan_h_user_defined=02026;
+  scan_i_user_defined=02027;
+  scan_e_keyword_cant_be_a_macro=02028;
+  scan_f_macro_buffer_overflow=02029;
+  scan_w_macro_deep_ten=02030;
+  scan_e_wrong_styled_switch=02031;
+  scan_d_handling_switch=02032;
+  scan_c_endif_found=02033;
+  scan_c_ifdef_found=02034;
+  scan_c_ifopt_found=02035;
+  scan_c_if_found=02036;
+  scan_c_ifndef_found=02037;
+  scan_c_else_found=02038;
+  scan_c_skipping_until=02039;
+  scan_i_press_enter=02040;
+  scan_w_unsupported_switch=02041;
+  scan_w_illegal_directive=02042;
+  scan_t_back_in=02043;
+  scan_w_unsupported_app_type=02044;
+  scan_w_app_type_not_support=02045;
+  scan_w_decription_not_support=02046;
+  scan_n_version_not_support=02047;
+  scan_n_only_exe_version=02048;
+  scan_w_wrong_version_ignored=02049;
+  scan_w_unsupported_asmmode_specifier=02050;
+  scan_w_no_asm_reader_switch_inside_asm=02051;
+  scan_e_wrong_switch_toggle=02052;
+  scan_e_resourcefiles_not_supported=02053;
+  scan_w_include_env_not_found=02054;
+  scan_e_invalid_maxfpureg_value=02055;
+  scan_w_only_one_resourcefile_supported=02056;
+  parser_e_syntax_error=03000;
+  parser_w_proc_far_ignored=03001;
+  parser_w_proc_near_ignored=03002;
+  parser_w_proc_interrupt_ignored=03003;
+  parser_e_dont_nest_interrupt=03004;
+  parser_w_proc_directive_ignored=03005;
+  parser_e_no_overload_for_all_procs=03006;
+  parser_e_no_dll_file_specified=03007;
+  parser_e_export_name_double=03008;
+  parser_e_export_ordinal_double=03009;
+  parser_e_export_invalid_index=03010;
+  parser_w_parser_reloc_no_debug=03011;
+  parser_w_parser_win32_debug_needs_WN=03012;
+  parser_e_constructorname_must_be_init=03013;
+  parser_e_destructorname_must_be_done=03014;
+  parser_e_illegal_open_parameter=03015;
+  parser_e_proc_inline_not_supported=03016;
+  parser_w_priv_meth_not_virtual=03017;
+  parser_w_constructor_should_be_public=03018;
+  parser_w_destructor_should_be_public=03019;
+  parser_n_only_one_destructor=03020;
+  parser_e_no_local_objects=03021;
+  parser_f_no_anonym_objects=03022;
+  parser_object_has_no_vmt=03023;
+  parser_e_illegal_parameter_list=03024;
+  parser_e_wrong_parameter_type=03025;
+  parser_e_wrong_parameter_size=03026;
+  parser_e_overloaded_no_procedure=03027;
+  parser_e_overloaded_have_same_parameters=03028;
+  parser_e_header_dont_match_forward=03029;
+  parser_e_header_different_var_names=03030;
+  parser_n_duplicate_enum=03031;
+  parser_n_interface_name_diff_implementation_name=03032;
+  parser_e_no_with_for_variable_in_other_segments=03033;
+  parser_e_too_much_lexlevel=03034;
+  parser_e_range_check_error=03035;
+  parser_w_range_check_error=03036;
+  parser_e_double_caselabel=03037;
+  parser_e_case_lower_less_than_upper_bound=03038;
+  parser_e_type_const_not_possible=03039;
+  parser_e_no_overloaded_procvars=03040;
+  parser_e_invalid_string_size=03041;
+  parser_w_use_extended_syntax_for_objects=03042;
+  parser_w_no_new_dispose_on_void_pointers=03043;
+  parser_e_no_new_dispose_on_void_pointers=03044;
+  parser_e_class_id_expected=03045;
+  parser_e_no_type_not_allowed_here=03046;
+  parser_e_methode_id_expected=03047;
+  parser_e_header_dont_match_any_member=03048;
+  parser_p_procedure_start=03049;
+  parser_e_error_in_real=03050;
+  parser_e_fail_only_in_constructor=03051;
+  parser_e_no_paras_for_destructor=03052;
+  parser_e_only_class_methods_via_class_ref=03053;
+  parser_e_only_class_methods=03054;
+  parser_e_case_mismatch=03055;
+  parser_e_illegal_symbol_exported=03056;
+  parser_w_should_use_override=03057;
+  parser_e_nothing_to_be_overridden=03058;
+  parser_e_no_procedure_to_access_property=03059;
+  parser_w_stored_not_implemented=03060;
+  parser_e_ill_property_access_sym=03061;
+  parser_e_cant_access_protected_member=03062;
+  parser_e_cant_access_private_member=03063;
+  parser_w_overloaded_are_not_both_virtual=03064;
+  parser_w_overloaded_are_not_both_non_virtual=03065;
+  parser_e_overloaded_methodes_not_same_ret=03066;
+  parser_e_dont_nest_export=03067;
+  parser_e_methods_dont_be_export=03068;
+  parser_e_call_by_ref_without_typeconv=03069;
+  parser_e_no_super_class=03070;
+  parser_e_self_not_in_method=03071;
+  parser_e_generic_methods_only_in_methods=03072;
+  parser_e_illegal_colon_qualifier=03073;
+  parser_e_illegal_set_expr=03074;
+  parser_e_pointer_to_class_expected=03075;
+  parser_e_expr_have_to_be_constructor_call=03076;
+  parser_e_expr_have_to_be_destructor_call=03077;
+  parser_e_invalid_record_const=03078;
+  parser_e_false_with_expr=03079;
+  parser_e_void_function=03080;
+  parser_e_constructors_always_objects=03081;
+  parser_e_operator_not_overloaded=03082;
+  parser_e_no_such_assignment=03083;
+  parser_e_overload_impossible=03084;
+  parser_e_no_reraise_possible=03085;
+  parser_e_no_new_or_dispose_for_classes=03086;
+  parser_e_asm_incomp_with_function_return=03087;
+  parser_e_procedure_overloading_is_off=03088;
+  parser_e_overload_operator_failed=03089;
+  parser_e_comparative_operator_return_boolean=03090;
+  parser_e_only_virtual_methods_abstract=03091;
+  parser_f_unsupported_feature=03092;
+  parser_e_mix_of_classes_and_objects=03093;
+  parser_w_unknown_proc_directive_ignored=03094;
+  parser_e_absolute_only_one_var=03095;
+  parser_e_absolute_only_to_var_or_const=03096;
+  parser_e_initialized_only_one_var=03097;
+  parser_e_abstract_no_definition=03098;
+  parser_e_overloaded_must_be_all_global=03099;
+  parser_w_virtual_without_constructor=03100;
+  parser_m_macro_defined=03101;
+  parser_m_macro_undefined=03102;
+  parser_m_macro_set_to=03103;
+  parser_i_compiling=03104;
+  parser_u_parsing_interface=03105;
+  parser_u_parsing_implementation=03106;
+  parser_d_compiling_second_time=03107;
+  parser_e_no_paras_allowed=03108;
+  parser_e_no_property_found_to_override=03109;
+  parser_e_only_one_default_property=03110;
+  parser_e_property_need_paras=03111;
+  parser_e_constructor_cannot_be_not_virtual=03112;
+  parser_e_no_default_property_available=03113;
+  parser_e_cant_have_published=03114;
+  parser_e_forward_declaration_must_be_resolved=03115;
+  parser_e_no_local_operator=03116;
+  parser_e_proc_dir_not_allowed_in_interface=03117;
+  parser_e_proc_dir_not_allowed_in_implementation=03118;
+  parser_e_proc_dir_not_allowed_in_procvar=03119;
+  parser_e_function_already_declared_public_forward=03120;
+  parser_e_not_external_and_export=03121;
+  parser_e_name_keyword_expected=03122;
+  parser_w_not_supported_for_inline=03123;
+  parser_w_inlining_disabled=03124;
+  parser_i_writing_browser_log=03125;
+  parser_h_maybe_deref_caret_missing=03126;
+  parser_f_assembler_reader_not_supported=03127;
+  parser_e_proc_dir_conflict=03128;
+  parser_e_call_convention_dont_match_forward=03129;
+  parser_e_register_calling_not_supported=03130;
+  parser_e_property_cant_have_a_default_value=03131;
+  parser_e_property_default_value_must_const=03132;
+  parser_e_cant_publish_that=03133;
+  parser_e_cant_publish_that_property=03134;
+  parser_w_empty_import_name=03135;
+  parser_e_empty_import_name=03136;
+  parser_e_used_proc_name_changed=03137;
+  parser_e_division_by_zero=03138;
+  parser_e_invalid_float_operation=03139;
+  parser_e_array_lower_less_than_upper_bound=03140;
+  parser_w_string_too_long=03141;
+  parser_e_string_larger_array=03142;
+  parser_e_ill_msg_expr=03143;
+  parser_e_ill_msg_param=03144;
+  parser_e_duplicate_message_label=03145;
+  parser_e_self_in_non_message_handler=03146;
+  parser_e_threadvars_only_sg=03147;
+  parser_f_direct_assembler_not_allowed=03148;
+  parser_w_no_objpas_use_mode=03149;
+  parser_e_no_object_override=03150;
+  parser_e_cant_use_inittable_here=03151;
+  parser_e_resourcestring_only_sg=03152;
+  parser_e_exit_with_argument_not__possible=03153;
+  parser_e_stored_property_must_be_boolean=03154;
+  parser_e_ill_property_storage_sym=03155;
+  parser_e_only_publishable_classes_can__be_published=03156;
+  parser_e_proc_directive_expected=03157;
+  parser_e_invalid_property_index_value=03158;
+  parser_e_procname_to_short_for_export=03159;
+  parser_e_dlltool_unit_var_problem=03160;
+  parser_e_dlltool_unit_var_problem2=03161;
+  type_e_mismatch=04000;
+  type_e_incompatible_types=04001;
+  type_e_not_equal_types=04002;
+  type_e_type_id_expected=04003;
+  type_e_variable_id_expected=04004;
+  type_e_integer_expr_expected=04005;
+  type_e_boolean_expr_expected=04006;
+  type_e_ordinal_expr_expected=04007;
+  type_e_pointer_type_expected=04008;
+  type_e_class_type_expected=04009;
+  type_e_varid_or_typeid_expected=04010;
+  type_e_cant_eval_constant_expr=04011;
+  type_e_set_element_are_not_comp=04012;
+  type_e_set_operation_unknown=04013;
+  type_w_convert_real_2_comp=04014;
+  type_h_use_div_for_int=04015;
+  type_e_strict_var_string_violation=04016;
+  type_e_succ_and_pred_enums_with_assign_not_possible=04017;
+  type_e_cant_read_write_type=04018;
+  type_e_no_readln_writeln_for_typed_file=04019;
+  type_e_no_read_write_for_untyped_file=04020;
+  type_e_typeconflict_in_set=04021;
+  type_w_maybe_wrong_hi_lo=04022;
+  type_e_integer_or_real_expr_expected=04023;
+  type_e_wrong_type_in_array_constructor=04024;
+  type_e_wrong_parameter_type=04025;
+  type_e_no_method_and_procedure_not_compatible=04026;
+  type_e_wrong_math_argument=04027;
+  type_e_no_addr_of_constant=04028;
+  type_e_argument_cant_be_assigned=04029;
+  type_e_cannot_local_proc_to_procvar=04030;
+  type_e_no_assign_to_addr=04031;
+  type_e_no_assign_to_const=04032;
+  sym_e_id_not_found=05000;
+  sym_f_internal_error_in_symtablestack=05001;
+  sym_e_duplicate_id=05002;
+  sym_h_duplicate_id_where=05003;
+  sym_e_unknown_id=05004;
+  sym_e_forward_not_resolved=05005;
+  sym_f_id_already_typed=05006;
+  sym_e_error_in_type_def=05007;
+  sym_e_type_id_not_defined=05008;
+  sym_e_forward_type_not_resolved=05009;
+  sym_e_only_static_in_static=05010;
+  sym_e_invalid_call_tvarsymmangledname=05011;
+  sym_f_type_must_be_rec_or_class=05012;
+  sym_e_no_instance_of_abstract_object=05013;
+  sym_w_label_not_defined=05014;
+  sym_e_label_used_and_not_defined=05015;
+  sym_e_ill_label_decl=05016;
+  sym_e_goto_and_label_not_supported=05017;
+  sym_e_label_not_found=05018;
+  sym_e_id_is_no_label_id=05019;
+  sym_e_label_already_defined=05020;
+  sym_e_ill_type_decl_set=05021;
+  sym_e_class_forward_not_resolved=05022;
+  sym_n_unit_not_used=05023;
+  sym_h_para_identifier_not_used=05024;
+  sym_n_local_identifier_not_used=05025;
+  sym_h_para_identifier_only_set=05026;
+  sym_n_local_identifier_only_set=05027;
+  sym_h_local_symbol_not_used=05028;
+  sym_n_private_identifier_not_used=05029;
+  sym_n_private_identifier_only_set=05030;
+  sym_n_private_method_not_used=05031;
+  sym_e_set_expected=05032;
+  sym_w_function_result_not_set=05033;
+  sym_w_wrong_C_pack=05034;
+  sym_e_illegal_field=05035;
+  sym_n_uninitialized_local_variable=05036;
+  sym_n_uninitialized_variable=05037;
+  sym_e_id_no_member=05038;
+  sym_b_param_list=05039;
+  sym_e_segment_too_large=05040;
+  cg_e_break_not_allowed=06000;
+  cg_e_continue_not_allowed=06001;
+  cg_e_too_complex_expr=06002;
+  cg_e_illegal_expression=06003;
+  cg_e_invalid_integer=06004;
+  cg_e_invalid_qualifier=06005;
+  cg_e_upper_lower_than_lower=06006;
+  cg_e_illegal_count_var=06007;
+  cg_e_cant_choose_overload_function=06008;
+  cg_e_parasize_too_big=06009;
+  cg_e_illegal_type_conversion=06010;
+  cg_d_pointer_to_longint_conv_not_portable=06011;
+  cg_e_file_must_call_by_reference=06012;
+  cg_e_cant_use_far_pointer_there=06013;
+  cg_e_var_must_be_reference=06014;
+  cg_e_dont_call_exported_direct=06015;
+  cg_w_member_cd_call_from_method=06016;
+  cg_n_inefficient_code=06017;
+  cg_w_unreachable_code=06018;
+  cg_e_stackframe_with_esp=06019;
+  cg_e_cant_call_abstract_method=06020;
+  cg_f_internal_error_in_getfloatreg=06021;
+  cg_f_unknown_float_type=06022;
+  cg_f_secondvecn_base_defined_twice=06023;
+  cg_f_extended_cg68k_not_supported=06024;
+  cg_f_32bit_not_supported_in_68000=06025;
+  cg_f_internal_error_in_secondinline=06026;
+  cg_d_register_weight=06027;
+  cg_e_stacklimit_in_local_routine=06028;
+  cg_d_stackframe_omited=06029;
+  cg_w_64bit_range_check_not_supported=06030;
+  cg_e_unable_inline_object_methods=06031;
+  cg_e_unable_inline_procvar=06032;
+  cg_e_no_code_for_inline_stored=06033;
+  cg_e_no_call_to_interrupt=06034;
+  cg_e_can_access_element_zero=06035;
+  cg_e_include_not_implemented=06036;
+  cg_e_cannot_call_cons_dest_inside_with=06037;
+  cg_e_cannot_call_message_direct=06038;
+  cg_e_goto_inout_of_exception_block=06039;
+  cg_e_control_flow_outside_finally=06040;
+  asmr_d_start_reading=07000;
+  asmr_d_finish_reading=07001;
+  asmr_e_none_label_contain_at=07002;
+  asmr_w_override_op_not_supported=07003;
+  asmr_e_building_record_offset=07004;
+  asmr_e_offset_without_identifier=07005;
+  asmr_e_type_without_identifier=07006;
+  asmr_e_no_local_or_para_allowed=07007;
+  asmr_e_need_offset=07008;
+  asmr_e_need_dollar=07009;
+  asmr_e_cant_have_multiple_relocatable_symbols=07010;
+  asmr_e_only_add_relocatable_symbol=07011;
+  asmr_e_invalid_constant_expression=07012;
+  asmr_e_relocatable_symbol_not_allowed=07013;
+  asmr_e_invalid_reference_syntax=07014;
+  asmr_e_local_para_unreachable=07015;
+  asmr_e_local_label_not_allowed_as_ref=07016;
+  asmr_e_wrong_base_index=07017;
+  asmr_w_possible_object_field_bug=07018;
+  asmr_e_wrong_scale_factor=07019;
+  asmr_e_multiple_index=07020;
+  asmr_e_invalid_operand_type=07021;
+  asmr_e_invalid_string_as_opcode_operand=07022;
+  asmr_w_CODE_and_DATA_not_supported=07023;
+  asmr_e_null_label_ref_not_allowed=07024;
+  asmr_e_expr_zero_divide=07025;
+  asmr_e_expr_illegal=07026;
+  asmr_e_escape_seq_ignored=07027;
+  asmr_e_invalid_symbol_ref=07028;
+  asmr_w_fwait_emu_prob=07029;
+  asmr_w_fadd_to_faddp=07030;
+  asmr_w_enter_not_supported_by_linux=07031;
+  asmr_w_calling_overload_func=07032;
+  asmr_e_unsupported_symbol_type=07033;
+  asmr_e_constant_out_of_bounds=07034;
+  asmr_e_error_converting_decimal=07035;
+  asmr_e_error_converting_octal=07036;
+  asmr_e_error_converting_binary=07037;
+  asmr_e_error_converting_hexadecimal=07038;
+  asmr_h_direct_global_to_mangled=07039;
+  asmr_w_direct_global_is_overloaded_func=07040;
+  asmr_e_cannot_use_SELF_outside_a_method=07041;
+  asmr_e_cannot_use_OLDEBP_outside_nested_procedure=07042;
+  asmr_e_void_function=07043;
+  asmr_e_SEG_not_supported=07044;
+  asmr_e_size_suffix_and_dest_dont_match=07045;
+  asmr_w_size_suffix_and_dest_dont_match=07046;
+  asmr_e_syntax_error=07047;
+  asmr_e_invalid_opcode_and_operand=07048;
+  asmr_e_syn_operand=07049;
+  asmr_e_syn_constant=07050;
+  asmr_e_invalid_string_expression=07051;
+  asmr_w_const32bit_for_address=07052;
+  asmr_e_unknown_opcode=07053;
+  asmr_e_invalid_or_missing_opcode=07054;
+  asmr_e_invalid_prefix_and_opcode=07055;
+  asmr_e_invalid_override_and_opcode=07056;
+  asmr_e_too_many_operands=07057;
+  asmr_w_near_ignored=07058;
+  asmr_w_far_ignored=07059;
+  asmr_e_dup_local_sym=07060;
+  asmr_e_unknown_local_sym=07061;
+  asmr_e_unknown_label_identifier=07062;
+  asmr_e_invalid_register=07063;
+  asmr_e_invalid_fpu_register=07064;
+  asmr_e_nor_not_supported=07065;
+  asmr_w_modulo_not_supported=07066;
+  asmr_e_invalid_float_const=07067;
+  asmr_e_invalid_float_expr=07068;
+  asmr_e_wrong_sym_type=07069;
+  asmr_e_cannot_index_relative_var=07070;
+  asmr_e_invalid_seg_override=07071;
+  asmr_w_id_supposed_external=07072;
+  asmr_e_string_not_allowed_as_const=07073;
+  asmr_e_no_var_type_specified=07074;
+  asmr_w_assembler_code_not_returned_to_text=07075;
+  asmr_e_not_directive_or_local_symbol=07076;
+  asmr_w_using_defined_as_local=07077;
+  asmr_e_dollar_without_identifier=07078;
+  asmr_w_32bit_const_for_address=07079;
+  asmr_n_align_is_target_specific=07080;
+  asmr_e_cannot_access_field_directly_for_parameters=07081;
+  asmr_e_cannot_access_object_field_directly=07082;
+  asmw_f_too_many_asm_files=08000;
+  asmw_f_assembler_output_not_supported=08001;
+  asmw_f_comp_not_supported=08002;
+  asmw_f_direct_not_supported=08003;
+  asmw_e_alloc_data_only_in_bss=08004;
+  asmw_f_no_binary_writer_selected=08005;
+  asmw_e_opcode_not_in_table=08006;
+  asmw_e_invalid_opcode_and_operands=08007;
+  asmw_e_16bit_not_supported=08008;
+  asmw_e_invalid_effective_address=08009;
+  asmw_e_immediate_or_reference_expected=08010;
+  asmw_e_value_exceeds_bounds=08011;
+  asmw_e_short_jmp_out_of_range=08012;
+  asmw_e_undefined_label=08013;
+  exec_w_source_os_redefined=09000;
+  exec_i_assembling_pipe=09001;
+  exec_d_cant_create_asmfile=09002;
+  exec_e_cant_create_objectfile=09003;
+  exec_e_cant_create_archivefile=09004;
+  exec_w_assembler_not_found=09005;
+  exec_t_using_assembler=09006;
+  exec_w_error_while_assembling=09007;
+  exec_w_cant_call_assembler=09008;
+  exec_i_assembling=09009;
+  exec_i_assembling_smart=09010;
+  exec_w_objfile_not_found=09011;
+  exec_w_libfile_not_found=09012;
+  exec_w_error_while_linking=09013;
+  exec_w_cant_call_linker=09014;
+  exec_i_linking=09015;
+  exec_w_util_not_found=09016;
+  exec_t_using_util=09017;
+  exec_e_exe_not_supported=09018;
+  exec_e_dll_not_supported=09019;
+  exec_i_closing_script=09020;
+  exec_w_res_not_found=09021;
+  exec_i_compilingresource=09022;
+  execinfo_f_cant_process_executable=09023;
+  execinfo_f_cant_open_executable=09024;
+  execinfo_x_codesize=09025;
+  execinfo_x_initdatasize=09026;
+  execinfo_x_uninitdatasize=09027;
+  execinfo_x_stackreserve=09028;
+  execinfo_x_stackcommit=09029;
+  unit_t_unitsearch=10000;
+  unit_t_ppu_loading=10001;
+  unit_u_ppu_name=10002;
+  unit_u_ppu_flags=10003;
+  unit_u_ppu_crc=10004;
+  unit_u_ppu_time=10005;
+  unit_u_ppu_file_too_short=10006;
+  unit_u_ppu_invalid_header=10007;
+  unit_u_ppu_invalid_version=10008;
+  unit_u_ppu_invalid_processor=10009;
+  unit_u_ppu_invalid_target=10010;
+  unit_u_ppu_source=10011;
+  unit_u_ppu_write=10012;
+  unit_f_ppu_cannot_write=10013;
+  unit_f_ppu_read_error=10014;
+  unit_f_ppu_read_unexpected_end=10015;
+  unit_f_ppu_invalid_entry=10016;
+  unit_f_ppu_dbx_count_problem=10017;
+  unit_e_illegal_unit_name=10018;
+  unit_f_too_much_units=10019;
+  unit_f_circular_unit_reference=10020;
+  unit_f_cant_compile_unit=10021;
+  unit_f_cant_find_ppu=10022;
+  unit_w_unit_name_error=10023;
+  unit_f_unit_name_error=10024;
+  unit_w_switch_us_missed=10025;
+  unit_f_errors_in_unit=10026;
+  unit_u_load_unit=10027;
+  unit_u_recompile_crc_change=10028;
+  unit_u_recompile_source_found_alone=10029;
+  unit_u_recompile_staticlib_is_older=10030;
+  unit_u_recompile_sharedlib_is_older=10031;
+  unit_u_recompile_obj_and_asm_older=10032;
+  unit_u_recompile_obj_older_than_asm=10033;
+  unit_u_start_parse_interface=10034;
+  unit_u_start_parse_implementation=10035;
+  unit_u_second_load_unit=10036;
+  unit_u_check_time=10037;
+  option_usage=11000;
+  option_only_one_source_support=11001;
+  option_def_only_for_os2=11002;
+  option_no_nested_response_file=11003;
+  option_no_source_found=11004;
+  option_no_option_found=11005;
+  option_illegal_para=11006;
+  option_help_pages_para=11007;
+  option_too_many_cfg_files=11008;
+  option_unable_open_file=11009;
+  option_reading_further_from=11010;
+  option_target_is_already_set=11011;
+  option_no_shared_lib_under_dos=11012;
+  option_too_many_ifdef=11013;
+  option_too_many_endif=11014;
+  option_too_less_endif=11015;
+  option_no_debug_support=11016;
+  option_no_debug_support_recompile_fpc=11017;
+  option_obsolete_switch=11018;
+  option_obsolete_switch_use_new=11019;
+  option_switch_bin_to_src_assembler=11020;
+  option_incompatible_asm=11021;
+  option_asm_forced=11022;
+  option_logo=11023;
+  option_info=11024;
+  option_help_pages=11025;
+
+  MsgTxtSize = 30122;
+
+  MsgIdxMax : array[1..20] of longint=(
+    12,57,162,33,41,41,83,14,30,38,
+    26,1,1,1,1,1,1,1,1,1
+  );

+ 732 - 717
compiler/msgtxt.inc

@@ -1,725 +1,740 @@
 {$ifdef Delphi}
 {$ifdef Delphi}
-const msgtxt : array[0..000112] of string[240]=(
+const msgtxt : array[0..000125] of string[240]=(
 {$else Delphi}
 {$else Delphi}
-const msgtxt : array[0..000112,1..240] of char=(
+const msgtxt : array[0..000125,1..240] of char=(
 {$endif Delphi}
 {$endif Delphi}
-  'T_Compiler: $1'#000+
-  'D_Compiler OS: $1'#000+
-  'I_Target OS: $1'#000+
-  'T_Using executable path: $1'#000+
-  'T_Using unit path: $1'#000+
-  'T_Using include path: $1'#000+
-  'T_Using library path: $1'#000+
-  'T_Using object path: $1'#000+
-  'I_$1 Lines compiled, $2 sec'#000+
-  'F_No memory left'#000+
-  'I_Writing Resource Str','ing Table file: $1'#000+
-  'E_Writing Resource String Table file: $1'#000+
-  'F_Unexpected end of file'#000+
-  'F_String exceeds line'#000+
-  'F_illegal character $1 ($2)'#000+
-  'F_Syntax error, $1 expected but $2 found'#000+
-  'T_Start reading includefile $1'#000+
-  'W_Comment level $1 found'#000+
-  'N_$F dir','ective (FAR) ignored'#000+
-  'N_Stack check is global under Linux'#000+
-  'N_Ignored compiler switch $1'#000+
-  'W_Illegal compiler switch $1'#000+
-  'W_This compiler switch has a global effect'#000+
-  'E_Illegal char constant'#000+
-  'F_Can'#039't open file $1'#000+
-  'F_Can'#039't open include file $1'#000+
-  'E_Too ma','ny $ENDIFs or $ELSEs'#000+
-  'W_Records fields can be aligned to 1,2,4,8,16 or 32 bytes only'#000+
-  'W_Enumerated can be saved in 1,2 or 4 bytes only'#000+
-  'E_$ENDIF expected for $1 $2 defined in line $3'#000+
-  'E_Syntax error while parsing a conditional compiling express','ion'#000+
-  'E_Evaluating a conditional compiling expression'#000+
-  'W_Macro contents is cut after char 255 to evalute expression'#000+
-  'E_ENDIF without IF(N)DEF'#000+
-  'F_User defined: $1'#000+
-  'E_User defined: $1'#000+
-  'W_User defined: $1'#000+
-  'N_User defined: $1'#000+
-  'H_User defined: $1'#000+
-  'I_User ','defined: $1'#000+
-  'E_Keyword redefined as macro has no effect'#000+
-  'F_Macro buffer overflow while reading or expanding a macro'#000+
-  'W_Extension of macros exceeds a deep of 16.'#000+
-  'E_compiler switches aren'#039't allowed in (* ... *) styled comments'#000+
-  'D_Handling switch ','"$1"'#000+
-  'C_ENDIF $1 found'#000+
-  'C_IFDEF $1 found, $2'#000+
-  'C_IFOPT $1 found, $2'#000+
-  'C_IF $1 found, $2'#000+
-  'C_IFNDEF $1 found, $2'#000+
-  'C_ELSE $1 found, $2'#000+
-  'C_Skipping until...'#000+
-  'I_Press <return> to continue'#000+
-  'W_Unsupported switch $1'#000+
-  'W_Illegal compiler directive $1'#000+
-  'T_Back in $','1'#000+
-  'W_Unsupported application type: $1'#000+
-  'W_APPTYPE isn'#039't support by the target OS'#000+
-  'W_DESCRIPTION is only supported for OS2 and Win32'#000+
-  'N_VERSION is not supported by target OS.'#000+
-  'N_VERSION only for exes or DLLs'#000+
-  'W_Wrong format for VERSION directive $1',#000+
-  'W_Unsupported assembler style specified $1'#000+
-  'W_ASM reader switch is not possible inside asm statement, $1 will be e'+
-  'ffective only for next'#000+
-  'E_Wrong switch toggle, use ON/OFF or +/-'#000+
-  'E_Resource files are not supported for this target'#000+
-  'W_Include e','nvironment $1 not found in environment'#000+
-  'E_Illegal value for FPU register limit'#000+
-  'W_Only one resource file is supported for this target'#000+
-  'E_Parser - Syntax Error'#000+
-  'W_Procedure type FAR ignored'#000+
-  'W_Procedure type NEAR ignored'#000+
-  'W_Procedure type INTERRUP','T ignored for not i386'#000+
-  'E_INTERRUPT procedure can'#039't be nested'#000+
-  'W_Procedure type $1 ignored'#000+
-  'E_Not all declarations of $1 are declared with OVERLOAD'#000+
-  'E_No DLL File specified'#000+
-  'E_Duplicate exported function name $1'#000+
-  'E_Duplicate exported function ind','ex $1'#000+
-  'E_Invalid index for exported function'#000+
-  'W_Relocatable DLL or executable $1 debug info does not work, disabled.'+
+  '01000_T_Compiler: $1'#000+
+  '01001_D_Compiler OS: $1'#000+
+  '01002_I_Target OS: $1'#000+
+  '01003_T_Using executable path: $1'#000+
+  '01004_T_Using unit path: $1'#000+
+  '01005_T_Using include path: $1'#000+
+  '01006_T_Using library path: $1'#000+
+  '01007_T_Using object path: $1'#000+
+  '01008_I_$1 Lines co','mpiled, $2 sec'#000+
+  '01009_F_No memory left'#000+
+  '01010_I_Writing Resource String Table file: $1'#000+
+  '01011_E_Writing Resource String Table file: $1'#000+
+  '02000_F_Unexpected end of file'#000+
+  '02001_F_String exceeds line'#000+
+  '02002_F_illegal character $1 ($2)'#000+
+  '02003_F_Syntax ','error, $1 expected but $2 found'#000+
+  '02004_T_Start reading includefile $1'#000+
+  '02005_W_Comment level $1 found'#000+
+  '02006_N_$F directive (FAR) ignored'#000+
+  '02007_N_Stack check is global under Linux'#000+
+  '02008_N_Ignored compiler switch $1'#000+
+  '02009_W_Illegal compiler swi','tch $1'#000+
+  '02010_W_This compiler switch has a global effect'#000+
+  '02011_E_Illegal char constant'#000+
+  '02012_F_Can'#039't open file $1'#000+
+  '02013_F_Can'#039't open include file $1'#000+
+  '02014_E_Too many $ENDIFs or $ELSEs'#000+
+  '02015_W_Records fields can be aligned to 1,2,4,8,16 or 32',' bytes only'+
   #000+
   #000+
-  'W_To allow debugging for win32 code you need to disable relocation wit'+
-  'h -WN option'#000+
-  'E_Constructor name must be INIT'#000+
-  'E_Destruct','or name must be DONE'#000+
-  'E_Illegal open parameter'#000+
-  'E_Procedure type INLINE not supported'#000+
-  'W_Private methods shouldn'#039't be VIRTUAL'#000+
-  'W_Constructor should be public'#000+
-  'W_Destructor should be public'#000+
-  'N_Class should have one destructor only'#000+
-  'E_Local class de','finitions are not allowed'#000+
-  'F_Anonym class definitions are not allowed'#000+
-  'E_The object $1 has no VMT'#000+
-  'E_Illegal parameter list'#000+
-  'E_Wrong parameter type specified for arg no. $1'#000+
-  'E_Wrong amount of parameters specified'#000+
-  'E_overloaded identifier $1 isn'#039't',' a function'#000+
-  'E_overloaded functions have the same parameter list'#000+
-  'E_function header doesn'#039't match the forward declaration $1'#000+
-  'E_function header $1 doesn'#039't match forward : var name changes $2 ='+
-  '> $3'#000+
-  'N_Values in enumeration types have to be ascen','ding'#000+
-  'N_Interface and implementation names are different $1 => $2'#000+
-  'E_With can not be used for variables in a different segment'#000+
-  'E_function nesting > 31'#000+
-  'E_range check error while evaluating constants'#000+
-  'W_range check error while evaluating constan','ts'#000+
-  'E_duplicate case label'#000+
-  'E_Upper bound of case range is less than lower bound'#000+
-  'E_typed constants of classes are not allowed'#000+
-  'E_functions variables of overloaded functions are not allowed'#000+
-  'E_string length must be a value from 1 to 255'#000+
-  'W_use ex','tended syntax of NEW and DISPOSE for instances of objects'#000+
-  'W_use of NEW or DISPOSE for untyped pointers is meaningless'#000+
-  'E_use of NEW or DISPOSE is not possible for untyped pointers'#000+
-  'E_class identifier expected'#000+
-  'E_type identifier not allowed her','e'#000+
-  'E_method identifier expected'#000+
-  'E_function header doesn'#039't match any method of this class'#000+
-  'P_procedure/function $1'#000+
-  'E_Illegal floating point constant'#000+
-  'E_FAIL can be used in constructors only'#000+
-  'E_Destructors can'#039't have parameters'#000+
-  'E_Only class metho','ds can be referred with class references'#000+
-  'E_Only class methods can be accessed in class methods'#000+
-  'E_Constant and CASE types do not match'#000+
-  'E_The symbol can'#039't be exported from a library'#000+
-  'W_An inherited method is hidden by $1'#000+
-  'E_There is no method i','n an ancestor class to be overridden: $1'#000+
-  'E_No member is provided to access property'#000+
-  'W_Stored prorperty directive is not yet implemented'#000+
-  'E_Illegal symbol for property access'#000+
-  'E_Cannot access a protected field of an object here'#000+
-  'E_Cannot access',' a private field of an object here'#000+
-  'W_overloaded method of virtual method should be virtual: $1'#000+
-  'W_overloaded method of non-virtual method should be non-virtual: $1'#000+
-  'E_overloaded methods which are virtual must have the same return type:'+
-  ' $1'#000+
-  'E_E','XPORT declared functions can'#039't be nested'#000+
-  'E_methods can'#039't be EXPORTed'#000+
-  'E_call by var parameters have to match exactly: Got $1 expected $2'#000+
-  'E_Class isn'#039't a parent class of the current class'#000+
-  'E_SELF is only allowed in methods'#000+
-  'E_methods can be onl','y in other methods called direct with type ident'+
-  'ifier of the class'#000+
-  'E_Illegal use of '#039':'#039#000+
-  'E_range check error in set constructor or duplicate set element'#000+
-  'E_Pointer to object expected'#000+
-  'E_Expression must be constructor call'#000+
-  'E_Expression must be ','destructor call'#000+
-  'E_Illegal order of record elements'#000+
-  'E_Expression type must be class or record type'#000+
-  'E_Procedures can'#039't return a value'#000+
-  'E_constructors and destructors must be methods'#000+
-  'E_Operator is not overloaded'#000+
-  'E_Impossible to overload assignm','ent for equal types'#000+
-  'E_Impossible operator overload'#000+
-  'E_Re-raise isn'#039't possible there'#000+
-  'E_The extended syntax of new or dispose isn'#039't allowed for a class'#000+
-  'E_Assembler incompatible with function return type'#000+
-  'E_Procedure overloading is switched off'#000,
-  'E_It is not possible to overload this operator (overload = instead)'#000+
-  'E_Comparative operator must return a boolean value'#000+
-  'E_Only virtual methods can be abstract'#000+
-  'F_Use of unsupported feature!'#000+
-  'E_The mix of CLASSES and OBJECTS isn'#039't allowed'#000+
-  'W_Unk','nown procedure directive had to be ignored: $1'#000+
-  'E_absolute can only be associated to ONE variable'#000+
-  'E_absolute can only be associated a var or const'#000+
-  'E_Only ONE variable can be initialized'#000+
-  'E_Abstract methods shouldn'#039't have any definition (with ','function '+
-  'body)'#000+
-  'E_This overloaded function can'#039't be local (must be exported)'#000+
-  'W_Virtual methods are used without a constructor in $1'#000+
-  'M_Macro defined: $1'#000+
-  'M_Macro undefined: $1'#000+
-  'M_Macro $1 set to $2'#000+
-  'I_Compiling $1'#000+
-  'U_Parsing interface of unit $1'#000,
-  'U_Parsing implementation of $1'#000+
-  'D_Compiling $1 for the second time'#000+
-  'E_Array properties aren'#039't allowed here'#000+
-  'E_No property found to override'#000+
-  'E_Only one default property is allowed, found inherited default proper'+
-  'ty in class $1'#000+
-  'E_The default prop','erty must be an array property'#000+
-  'E_Virtual constructors are only supported in class object model'#000+
-  'E_No default property available'#000+
-  'E_The class can'#039't have a published section, use the {$M+} switch'#000+
-  'E_Forward declaration of class $1 must be resolv','ed here to use the c'+
-  'lass as ancestor'#000+
-  'E_Local operators not supported'#000+
-  'E_Procedure directive $1 not allowed in interface section'#000+
-  'E_Procedure directive $1 not allowed in implementation section'#000+
-  'E_Procedure directive $1 not allowed in procvar de','claration'#000+
-  'E_Function is already declared Public/Forward $1'#000+
-  'E_Can'#039't use both EXPORT and EXTERNAL'#000+
-  'E_NAME keyword expected'#000+
-  'W_$1 not yet supported inside inline procedure/function'#000+
-  'W_Inlining disabled'#000+
-  'I_Writing Browser log $1'#000+
-  'H_may be pointer de','reference is missing'#000+
-  'F_Selected assembler reader not supported'#000+
-  'E_Procedure directive $1 has conflicts with other directives'#000+
-  'E_Calling convention doesn'#039't match forward'#000+
-  'E_Register calling (fastcall) not supported'#000+
-  'E_Property can'#039't have a defau','lt value'#000+
-  'E_The default value of a property must be constant'#000+
-  'E_Symbol can'#039't be published, can be only a class'#000+
-  'E_That kind of property can'#039't be published'#000+
-  'W_Empty import name specified'#000+
-  'W_An import name is required'#000+
-  'E_Function internal name chan','ged after use of function'#000+
-  'E_Division by zero'#000+
-  'E_Invalid floating point operation'#000+
-  'E_Upper bound of range is less than lower bound'#000+
-  'W_string "$1" is longer than $2'#000+
-  'E_string length is larger than array of char length'#000+
-  'E_Illegal expression after m','essage directive'#000+
-  'E_Message handlers can take only one call by ref. parameter'#000+
-  'E_Duplicate message label: $1'#000+
-  'E_Self can be only an explicit parameter in message handlers'#000+
-  'E_Threadvars can be only static or global'#000+
-  'F_Direct assembler not support','ed for binary output format'#000+
-  'W_Don'#039't load OBJPAS unit manual, use {$mode objfpc} or {$mode delp'+
-  'hi} instead'#000+
-  'E_OVERRIDE can'#039't be used in objects'#000+
-  'E_Data types which requires initialization/finalization can'#039't be u'+
-  'sed in variant records'#000+
-  'E_Resourc','estrings can be only static or global'#000+
-  'E_Exit with argument can'#039't be used here'#000+
-  'E_The type of the storage symbol must be boolean'#000+
-  'E_This symbol isn'#039't allowed as storage symbol'#000+
-  'E_Only class which are compiled in $M+ mode can be published'#000+
-  'E_Proc','edure directive expected'#000+
-  'E_The value for a property index must be of an ordinal type'#000+
-  'E_Procedure name to short to be exported'#000+
-  'E_No DEFFILE entry can be generated for unit global vars'#000+
-  'E_Compile without -WD option'#000+
-  'E_Type mismatch'#000+
-  'E_Incompatib','le types: got "$1" expected "$2"'#000+
-  'E_Type mismatch between $1 and $2'#000+
-  'E_Type identifier expected'#000+
-  'E_Variable identifier expected'#000+
-  'E_Integer expression expected, but got "$1"'#000+
-  'E_Boolean expression expected, but got "$1"'#000+
-  'E_Ordinal expression expect','ed'#000+
-  'E_pointer type expected, but got "$1"'#000+
-  'E_class type expected, but got "$1"'#000+
-  'E_Variable or type indentifier expected'#000+
-  'E_Can'#039't evaluate constant expression'#000+
-  'E_Set elements are not compatible'#000+
-  'E_Operation not implemented for sets'#000+
-  'W_Automatic typ','e conversion from floating type to COMP which is an i'+
-  'nteger type'#000+
-  'H_use DIV instead to get an integer result'#000+
-  'E_string types doesn'#039't match, because of $V+ mode'#000+
-  'E_succ or pred on enums with assignments not possible'#000+
-  'E_Can'#039't read or write variab','les of this type'#000+
-  'E_Can'#039't use readln or writeln on typed file'#000+
-  'E_Can'#039't use read or write on untyped file.'#000+
-  'E_Type conflict between set elements'#000+
-  'W_lo/hi(dword/qword) returns the upper/lower word/dword'#000+
-  'E_Integer or real expression expected'#000+
-  'E_Wro','ng type $1 in array constructor'#000+
-  'E_Incompatible type for arg no. $1: Got $2, expected $3'#000+
-  'E_Method (variable) and Procedure (variable) are not compatible'#000+
-  'E_Illegal constant passed to internal math function'#000+
-  'E_Can'#039't get the address of constants',#000+
-  'E_Argument can'#039't be assigned to'#000+
-  'E_Can'#039't assign local procedure/function to procedure variable'#000+
-  'E_Can'#039't assign values to an address'#000+
-  'E_Can'#039't assign values to const variable'#000+
-  'E_Identifier not found $1'#000+
-  'F_Internal Error in SymTableStack()'#000+
-  'E_Dupli','cate identifier $1'#000+
-  'H_Identifier already defined in $1 at line $2'#000+
-  'E_Unknown identifier $1'#000+
-  'E_Forward declaration not solved $1'#000+
-  'F_Identifier type already defined as type'#000+
-  'E_Error in type definition'#000+
-  'E_Type identifier not defined'#000+
-  'E_Forward type n','ot resolved $1'#000+
-  'E_Only static variables can be used in static methods or outside metho'+
-  'ds'#000+
-  'E_Invalid call to tvarsym.mangledname()'#000+
-  'F_record or class type expected'#000+
-  'E_Instances of classes or objects with an abstract method are not allo'+
-  'wed'#000+
-  'W_Labe','l not defined $1'#000+
-  'E_Label used but not defined $1'#000+
-  'E_Illegal label declaration'#000+
-  'E_GOTO and LABEL are not supported (use switch -Sg)'#000+
-  'E_Label not found'#000+
-  'E_identifier isn'#039't a label'#000+
-  'E_label already defined'#000+
-  'E_illegal type declaration of set elements',#000+
-  'E_Forward class definition not resolved $1'#000+
-  'H_Unit $1 not used in $2'#000+
-  'H_Parameter $1 not used'#000+
-  'N_Local variable $1 not used'#000+
-  'H_Value parameter $1 is assigned but never used'#000+
-  'N_Local variable $1 is assigned but never used'#000+
-  'H_Local $1 $2 is not us','ed'#000+
-  'N_Private field $1.$2 is never used'#000+
-  'N_Private field $1.$2 is assigned but never used'#000+
-  'N_Private method $1.$2 never used'#000+
-  'E_Set type expected'#000+
-  'W_Function result does not seem to be set'#000+
-  'W_Type $1 is not aligned correctly in current record for',' C'#000+
-  'E_Unknown record field identifier $1'#000+
-  'W_Local variable $1 does not seem to be initialized'#000+
-  'W_Variable $1 does not seem to be initialized'#000+
-  'E_identifier idents no member $1'#000+
-  'B_Found declaration: $1'#000+
-  'E_Data segment too large (max. 2GB)'#000+
-  'E_BREAK n','ot allowed'#000+
-  'E_CONTINUE not allowed'#000+
-  'E_Expression too complicated - FPU stack overflow'#000+
-  'E_Illegal expression'#000+
-  'E_Invalid integer expression'#000+
-  'E_Illegal qualifier'#000+
-  'E_High range limit < low range limit'#000+
-  'E_Illegal counter variable'#000+
-  'E_Can'#039't determine whic','h overloaded function to call'#000+
-  'E_Parameter list size exceeds 65535 bytes'#000+
-  'E_Illegal type conversion'#000+
-  'D_Conversion between ordinals and pointers is not portable across plat'+
-  'forms'#000+
-  'E_File types must be var parameters'#000+
-  'E_The use of a far pointer isn',#039't allowed there'#000+
-  'E_illegal call by reference parameters'#000+
-  'E_EXPORT declared functions can'#039't be called'#000+
-  'W_Possible illegal call of constructor or destructor (doesn'#039't matc'+
-  'h to this context)'#000+
-  'N_Inefficient code'#000+
-  'W_unreachable code'#000+
-  'E_procedure call ','with stackframe ESP/SP'#000+
-  'E_Abstract methods can'#039't be called directly'#000+
-  'F_Internal Error in getfloatreg(), allocation failure'#000+
-  'F_Unknown float type'#000+
-  'F_SecondVecn() base defined twice'#000+
-  'F_Extended cg68k not supported'#000+
-  'F_32-bit unsigned not supported i','n MC68000 mode'#000+
-  'F_Internal Error in secondinline()'#000+
-  'D_Register $1 weight $2 $3'#000+
-  'E_Stack limit excedeed in local routine'#000+
-  'D_Stack frame is omitted'#000+
-  'W_Range check for 64 bit integers is not supported on this target'#000+
-  'E_Object or class methods can'#039't ','be inline.'#000+
-  'E_Procvar calls can'#039't be inline.'#000+
-  'E_No code for inline procedure stored'#000+
-  'E_Direct call of interrupt procedure $1 is not possible'#000+
-  'E_Element zero of an ansi/wide- or longstring can'#039't be accessed, u'+
-  'se (set)length instead'#000+
-  'E_Include and',' exclude not implemented in this case'#000+
-  'E_Constructors or destructors can not be called inside a '#039'with'#039+
-  ' clause'#000+
-  'E_Cannot call message handler method directly'#000+
-  'E_Jump in or outside of an exception block'#000+
-  'E_Control flow statements aren'#039't allowed i','n a finally block'#000+
-  'D_Starting $1 styled assembler parsing'#000+
-  'D_Finished $1 styled assembler parsing'#000+
-  'E_Non-label pattern contains @'#000+
-  'W_Override operator not supported'#000+
-  'E_Error building record offset'#000+
-  'E_OFFSET used without identifier'#000+
-  'E_TYPE used wit','hout identifier'#000+
-  'E_Cannot use local variable or parameters here'#000+
-  'E_need to use OFFSET here'#000+
-  'E_need to use $ here'#000+
-  'E_Cannot use multiple relocatable symbols'#000+
-  'E_Relocatable symbol can only be added'#000+
-  'E_Invalid constant expression'#000+
-  'E_Relocatable symbo','l is not allowed'#000+
-  'E_Invalid reference syntax'#000+
-  'E_You can not reach $1 from that code'#000+
-  'E_Local symbols/labels aren'#039't allowed as references'#000+
-  'E_Invalid base and index register usage'#000+
-  'W_Possible error in object field handling'#000+
-  'E_Wrong scale factor spe','cified'#000+
-  'E_Multiple index register usage'#000+
-  'E_Invalid operand type'#000+
-  'E_Invalid string as opcode operand: $1'#000+
-  'W_@CODE and @DATA not supported'#000+
-  'E_Null label references are not allowed'#000+
-  'E_Divide by zero in asm evaluator'#000+
-  'E_Illegal expression'#000+
-  'E_escape seq','uence ignored: $1'#000+
-  'E_Invalid symbol reference'#000+
-  'W_Fwait can cause emulation problems with emu387'#000+
-  'W_FADD without operand translated into FADDP'#000+
-  'W_ENTER instruction is not supported by Linux kernel'#000+
-  'W_Calling an overload function in assembler'#000+
-  'E_Un','supported symbol type for operand'#000+
-  'E_Constant value out of bounds'#000+
-  'E_Error converting decimal $1'#000+
-  'E_Error converting octal $1'#000+
-  'E_Error converting binary $1'#000+
-  'E_Error converting hexadecimal $1'#000+
-  'H_$1 translated to $2'#000+
-  'W_$1 is associated to an overloa','ded function'#000+
-  'E_Cannot use SELF outside a method'#000+
-  'E_Cannot use OLDEBP outside a nested procedure'#000+
-  'W_Procedures can'#039't return any value in asm code'#000+
-  'E_SEG not supported'#000+
-  'E_Size suffix and destination or source size do not match'#000+
-  'W_Size suffix and d','estination or source size do not match'#000+
-  'E_Assembler syntax error'#000+
-  'E_Invalid combination of opcode and operands'#000+
-  'E_Assemler syntax error in operand'#000+
-  'E_Assemler syntax error in constant'#000+
-  'E_Invalid String expression'#000+
-  '32bit constant created for addre','ss'#000+
-  'E_Unrecognized opcode $1'#000+
-  'E_Invalid or missing opcode'#000+
-  'E_Invalid combination of prefix and opcode: $1'#000+
-  'E_Invalid combination of override and opcode: $1'#000+
-  'E_Too many operands on line'#000+
-  'W_NEAR ignored'#000+
-  'W_FAR ignored'#000+
-  'E_Duplicate local symbol $1'#000+
-  'E_U','ndefined local symbol $1'#000+
-  'E_Unknown label identifier $1'#000+
-  'E_Invalid register name'#000+
-  'E_Invalid floating point register name'#000+
-  'E_NOR not supported'#000+
-  'W_Modulo not supported'#000+
-  'E_Invalid floating point constant $1'#000+
-  'E_Invalid floating point expression'#000+
-  'E_Wron','g symbol type'#000+
-  'E_Cannot index a local var or parameter with a register'#000+
-  'E_Invalid segment override expression'#000+
-  'W_Identifier $1 supposed external'#000+
-  'E_Strings not allowed as constants'#000+
-  'No type of variable specified'#000+
-  'E_assembler code not returned to ','text section'#000+
-  'E_Not a directive or local symbol $1'#000+
-  'E_Using a defined name as a local label'#000+
-  'E_Dollar token is used without an identifier'#000+
-  'W_32bit constant created for address'#000+
-  'N_.align is target specific, use .balign or .p2align'#000+
-  'E_Can'#039't access ','fields directly for parameters'#000+
-  'E_Can'#039't access fields of objects/classes directly'#000+
-  'F_Too many assembler files'#000+
-  'F_Selected assembler output not supported'#000+
-  'F_Comp not supported'#000+
-  'F_Direct not support for binary writers'#000+
-  'E_Allocating of data is only ','allowed in bss section'#000+
-  'F_No binary writer selected'#000+
-  'E_Asm: Opcode $1 not in table'#000+
-  'E_Asm: $1 invalid combination of opcode and operands'#000+
-  'E_Asm: 16 Bit references not supported'#000+
-  'E_Asm: Invalid effective address'#000+
-  'E_Asm: Immediate or reference expe','cted'#000+
-  'E_Asm: $1 value exceeds bounds $2'#000+
-  'E_Asm: Short jump is out of range $1'#000+
-  'E_Asm: Undefined label $1'#000+
-  'W_Source operating system redefined'#000+
-  'I_Assembling (pipe) $1'#000+
-  'E_Can'#039't create assember file: $1'#000+
-  'E_Can'#039't create object file: $1'#000+
-  'E_Can'#039't create ','archive file: $1'#000+
-  'W_Assembler $1 not found, switching to external assembling'#000+
-  'T_Using assembler: $1'#000+
-  'W_Error while assembling exitcode $1'#000+
-  'W_Can'#039't call the assembler, error $1 switching to external assembl'+
-  'ing'#000+
-  'I_Assembling $1'#000+
-  'I_Assembling smartl','ink $1'#000+
-  'W_Object $1 not found, Linking may fail !'#000+
-  'W_Library $1 not found, Linking may fail !'#000+
-  'W_Error while linking'#000+
-  'W_Can'#039't call the linker, switching to external linking'#000+
-  'I_Linking $1'#000+
-  'W_Util $1 not found, switching to external linking'#000+
-  'T_Using',' util $1'#000+
-  'E_Creation of Executables not supported'#000+
-  'E_Creation of Dynamic/Shared Libraries not supported'#000+
-  'I_Closing script $1'#000+
-  'W_resource compiler not found, switching to external mode'#000+
-  'I_Compiling resource $1'#000+
-  'F_Can'#039't post process executable $1'#000+
-  'F','_Can'#039't open executable $1'#000+
-  'X_Size of Code: $1 bytes'#000+
-  'X_Size of initialized data: $1 bytes'#000+
-  'X_Size of uninitialized data: $1 bytes'#000+
-  'X_Stack space reserved: $1 bytes'#000+
-  'X_Stack space commited: $1 bytes'#000+
-  'T_Unitsearch: $1'#000+
-  'T_PPU Loading $1'#000+
-  'U_PPU Name: $','1'#000+
-  'U_PPU Flags: $1'#000+
-  'U_PPU Crc: $1'#000+
-  'U_PPU Time: $1'#000+
-  'U_PPU File too short'#000+
-  'U_PPU Invalid Header (no PPU at the begin)'#000+
-  'U_PPU Invalid Version $1'#000+
-  'U_PPU is compiled for an other processor'#000+
-  'U_PPU is compiled for an other target'#000+
-  'U_PPU Source: $1'#000+
-  'U_Writin','g $1'#000+
-  'F_Can'#039't Write PPU-File'#000+
-  'F_Error reading PPU-File'#000+
-  'F_unexpected end of PPU-File'#000+
-  'F_Invalid PPU-File entry: $1'#000+
-  'F_PPU Dbx count problem'#000+
-  'E_Illegal unit name: $1'#000+
-  'F_Too much units'#000+
-  'F_Circular unit reference between $1 and $2'#000+
-  'F_Can'#039't compile unit',' $1, no sources available'#000+
-  'F_Can'#039't find unit $1'#000+
-  'W_Unit $1 was not found but $2 exists'#000+
-  'F_Unit $1 searched but $2 found'#000+
-  'W_Compiling the system unit requires the -Us switch'#000+
-  'F_There were $1 errors compiling module, stopping'#000+
-  'U_Load from $1 ($2) u','nit $3'#000+
-  'U_Recompiling $1, checksum changed for $2'#000+
-  'U_Recompiling $1, source found only'#000+
-  'U_Recompiling unit, static lib is older than ppufile'#000+
-  'U_Recompiling unit, shared lib is older than ppufile'#000+
-  'U_Recompiling unit, obj and asm are older than pp','ufile'#000+
-  'U_Recompiling unit, obj is older than asm'#000+
-  'U_Parsing interface of $1'#000+
-  'U_Parsing implementation of $1'#000+
-  'U_Second load for unit $1'#000+
-  'U_PPU Check file $1 time $2'#000+
-  '$1 [options] <inputfile> [options]'#000+
-  'W_Only one source file supported'#000+
-  'W_DEF file ca','n be created only for OS/2'#000+
-  'E_nested response files are not supported'#000+
-  'F_No source file name in command line'#000+
-  'N_No option inside $1 config file'#000+
-  'E_Illegal parameter: $1'#000+
-  'H_-? writes help pages'#000+
-  'F_Too many config files nested'#000+
-  'F_Unable to open file',' $1'#000+
-  'N_Reading further options from $1'#000+
-  'W_Target is already set to: $1'#000+
-  'W_Shared libs not supported on DOS platform, reverting to static'#000+
-  'F_too many IF(N)DEFs'#000+
-  'F_too many ENDIFs'#000+
-  'F_open conditional at the end of the file'#000+
-  'W_Debug information gener','ation is not supported by this executable'#000+
-  'H_Try recompiling with -dGDB'#000+
-  'E_You are using the obsolete switch $1'#000+
-  'E_You are using the obsolete switch $1, please use $2'#000+
-  'N_Switching assembler to default source writing assembler'#000+
-  'W_Assembler output',' selected "$1" is not compatible with "$2"'#000+
-  'W_"$1" assembler use forced'#000+
-  'Free Pascal Compiler version $FPCVER [$FPCDATE] for $FPCTARGET'#000+
-  'Copyright (c) 1993-2000 by Florian Klaempfl'#000+
-  'Free Pascal Compiler version $FPCVER'#000+
+  '02016_W_Enumerated can be saved in 1,2 or 4 bytes only'#000+
+  '02017_E_$ENDIF expected for $1 $2 defined in line $3'#000+
+  '02018_E_Syntax error while parsing a conditional compiling expression'#000+
+  '02019_E_Evaluating a conditional compiling express','ion'#000+
+  '02020_W_Macro contents is cut after char 255 to evalute expression'#000+
+  '02021_E_ENDIF without IF(N)DEF'#000+
+  '02022_F_User defined: $1'#000+
+  '02023_E_User defined: $1'#000+
+  '02024_W_User defined: $1'#000+
+  '02025_N_User defined: $1'#000+
+  '02026_H_User defined: $1'#000+
+  '02027_I_User ','defined: $1'#000+
+  '02028_E_Keyword redefined as macro has no effect'#000+
+  '02029_F_Macro buffer overflow while reading or expanding a macro'#000+
+  '02030_W_Extension of macros exceeds a deep of 16.'#000+
+  '02031_E_compiler switches aren'#039't allowed in (* ... *) styled com','m'+
+  'ents'#000+
+  '02032_D_Handling switch "$1"'#000+
+  '02033_C_ENDIF $1 found'#000+
+  '02034_C_IFDEF $1 found, $2'#000+
+  '02035_C_IFOPT $1 found, $2'#000+
+  '02036_C_IF $1 found, $2'#000+
+  '02037_C_IFNDEF $1 found, $2'#000+
+  '02038_C_ELSE $1 found, $2'#000+
+  '02039_C_Skipping until...'#000+
+  '02040_I_Press <return> t','o continue'#000+
+  '02041_W_Unsupported switch $1'#000+
+  '02042_W_Illegal compiler directive $1'#000+
+  '02043_T_Back in $1'#000+
+  '02044_W_Unsupported application type: $1'#000+
+  '02045_W_APPTYPE isn'#039't support by the target OS'#000+
+  '02046_W_DESCRIPTION is only supported for OS2 and Win3','2'#000+
+  '02047_N_VERSION is not supported by target OS.'#000+
+  '02048_N_VERSION only for exes or DLLs'#000+
+  '02049_W_Wrong format for VERSION directive $1'#000+
+  '02050_W_Unsupported assembler style specified $1'#000+
+  '02051_W_ASM reader switch is not possible inside asm state','ment, $1 w'+
+  'ill be effective only for next'#000+
+  '02052_E_Wrong switch toggle, use ON/OFF or +/-'#000+
+  '02053_E_Resource files are not supported for this target'#000+
+  '02054_W_Include environment $1 not found in environment'#000+
+  '02055_E_Illegal value for FPU register ','limit'#000+
+  '02056_W_Only one resource file is supported for this target'#000+
+  '03000_E_Parser - Syntax Error'#000+
+  '03001_W_Procedure type FAR ignored'#000+
+  '03002_W_Procedure type NEAR ignored'#000+
+  '03003_W_Procedure type INTERRUPT ignored for not i386'#000+
+  '03004_E_INTERRUPT p','rocedure can'#039't be nested'#000+
+  '03005_W_Procedure type $1 ignored'#000+
+  '03006_E_Not all declarations of $1 are declared with OVERLOAD'#000+
+  '03007_E_No DLL File specified'#000+
+  '03008_E_Duplicate exported function name $1'#000+
+  '03009_E_Duplicate exported function index $1'#000,
+  '03010_E_Invalid index for exported function'#000+
+  '03011_W_Relocatable DLL or executable $1 debug info does not work, dis'+
+  'abled.'#000+
+  '03012_W_To allow debugging for win32 code you need to disable relocati'+
+  'on with -WN option'#000+
+  '03013_E_Constructor name must ','be INIT'#000+
+  '03014_E_Destructor name must be DONE'#000+
+  '03015_E_Illegal open parameter'#000+
+  '03016_E_Procedure type INLINE not supported'#000+
+  '03017_W_Private methods shouldn'#039't be VIRTUAL'#000+
+  '03018_W_Constructor should be public'#000+
+  '03019_W_Destructor should be public'#000+
+  '03','020_N_Class should have one destructor only'#000+
+  '03021_E_Local class definitions are not allowed'#000+
+  '03022_F_Anonym class definitions are not allowed'#000+
+  '03023_E_The object $1 has no VMT'#000+
+  '03024_E_Illegal parameter list'#000+
+  '03025_E_Wrong parameter type specif','ied for arg no. $1'#000+
+  '03026_E_Wrong amount of parameters specified'#000+
+  '03027_E_overloaded identifier $1 isn'#039't a function'#000+
+  '03028_E_overloaded functions have the same parameter list'#000+
+  '03029_E_function header doesn'#039't match the forward declaration $1'#000+
+  '030','30_E_function header $1 doesn'#039't match forward : var name chan'+
+  'ges $2 => $3'#000+
+  '03031_N_Values in enumeration types have to be ascending'#000+
+  '03032_N_Interface and implementation names are different $1 => $2'#000+
+  '03033_E_With can not be used for variables ','in a different segment'#000+
+  '03034_E_function nesting > 31'#000+
+  '03035_E_range check error while evaluating constants'#000+
+  '03036_W_range check error while evaluating constants'#000+
+  '03037_E_duplicate case label'#000+
+  '03038_E_Upper bound of case range is less than lower',' bound'#000+
+  '03039_E_typed constants of classes are not allowed'#000+
+  '03040_E_functions variables of overloaded functions are not allowed'#000+
+  '03041_E_string length must be a value from 1 to 255'#000+
+  '03042_W_use extended syntax of NEW and DISPOSE for instances o','f obje'+
+  'cts'#000+
+  '03043_W_use of NEW or DISPOSE for untyped pointers is meaningless'#000+
+  '03044_E_use of NEW or DISPOSE is not possible for untyped pointers'#000+
+  '03045_E_class identifier expected'#000+
+  '03046_E_type identifier not allowed here'#000+
+  '03047_E_method identif','ier expected'#000+
+  '03048_E_function header doesn'#039't match any method of this class'#000+
+  '03049_P_procedure/function $1'#000+
+  '03050_E_Illegal floating point constant'#000+
+  '03051_E_FAIL can be used in constructors only'#000+
+  '03052_E_Destructors can'#039't have parameters'#000+
+  '03053_','E_Only class methods can be referred with class references'#000+
+  '03054_E_Only class methods can be accessed in class methods'#000+
+  '03055_E_Constant and CASE types do not match'#000+
+  '03056_E_The symbol can'#039't be exported from a library'#000+
+  '03057_W_An inherited met','hod is hidden by $1'#000+
+  '03058_E_There is no method in an ancestor class to be overridden: $1'#000+
+  '03059_E_No member is provided to access property'#000+
+  '03060_W_Stored prorperty directive is not yet implemented'#000+
+  '03061_E_Illegal symbol for property access'#000+
+  '0','3062_E_Cannot access a protected field of an object here'#000+
+  '03063_E_Cannot access a private field of an object here'#000+
+  '03064_W_overloaded method of virtual method should be virtual: $1'#000+
+  '03065_W_overloaded method of non-virtual method should be non','-virtua'+
+  'l: $1'#000+
+  '03066_E_overloaded methods which are virtual must have the same return'+
+  ' type: $1'#000+
+  '03067_E_EXPORT declared functions can'#039't be nested'#000+
+  '03068_E_methods can'#039't be EXPORTed'#000+
+  '03069_E_call by var parameters have to match exactly: Got $1 ex','pecte'+
+  'd $2'#000+
+  '03070_E_Class isn'#039't a parent class of the current class'#000+
+  '03071_E_SELF is only allowed in methods'#000+
+  '03072_E_methods can be only in other methods called direct with type i'+
+  'dentifier of the class'#000+
+  '03073_E_Illegal use of '#039':'#039#000+
+  '03074_E_range ','check error in set constructor or duplicate set elemen'+
+  't'#000+
+  '03075_E_Pointer to object expected'#000+
+  '03076_E_Expression must be constructor call'#000+
+  '03077_E_Expression must be destructor call'#000+
+  '03078_E_Illegal order of record elements'#000+
+  '03079_E_Expression ty','pe must be class or record type'#000+
+  '03080_E_Procedures can'#039't return a value'#000+
+  '03081_E_constructors and destructors must be methods'#000+
+  '03082_E_Operator is not overloaded'#000+
+  '03083_E_Impossible to overload assignment for equal types'#000+
+  '03084_E_Impossible ope','rator overload'#000+
+  '03085_E_Re-raise isn'#039't possible there'#000+
+  '03086_E_The extended syntax of new or dispose isn'#039't allowed for a '+
+  'class'#000+
+  '03087_E_Assembler incompatible with function return type'#000+
+  '03088_E_Procedure overloading is switched off'#000+
+  '03089_E_It i','s not possible to overload this operator (overload = ins'+
+  'tead)'#000+
+  '03090_E_Comparative operator must return a boolean value'#000+
+  '03091_E_Only virtual methods can be abstract'#000+
+  '03092_F_Use of unsupported feature!'#000+
+  '03093_E_The mix of CLASSES and OBJECTS i','sn'#039't allowed'#000+
+  '03094_W_Unknown procedure directive had to be ignored: $1'#000+
+  '03095_E_absolute can only be associated to ONE variable'#000+
+  '03096_E_absolute can only be associated a var or const'#000+
+  '03097_E_Only ONE variable can be initialized'#000+
+  '03098_E_Abstr','act methods shouldn'#039't have any definition (with fun'+
+  'ction body)'#000+
+  '03099_E_This overloaded function can'#039't be local (must be exported)'+
   #000+
   #000+
-  'Compiler Date  : $FPCDAT','E'#000+
-  'Compiler Target: $FPCTARGET'#000+
+  '03100_W_Virtual methods are used without a constructor in $1'#000+
+  '03101_M_Macro defined: $1'#000+
+  '03102_M_Macro undefined',': $1'#000+
+  '03103_M_Macro $1 set to $2'#000+
+  '03104_I_Compiling $1'#000+
+  '03105_U_Parsing interface of unit $1'#000+
+  '03106_U_Parsing implementation of $1'#000+
+  '03107_D_Compiling $1 for the second time'#000+
+  '03108_E_Array properties aren'#039't allowed here'#000+
+  '03109_E_No property found t','o override'#000+
+  '03110_E_Only one default property is allowed, found inherited default '+
+  'property in class $1'#000+
+  '03111_E_The default property must be an array property'#000+
+  '03112_E_Virtual constructors are only supported in class object model'#000+
+  '03113_E_No de','fault property available'#000+
+  '03114_E_The class can'#039't have a published section, use the {$M+} sw'+
+  'itch'#000+
+  '03115_E_Forward declaration of class $1 must be resolved here to use t'+
+  'he class as ancestor'#000+
+  '03116_E_Local operators not supported'#000+
+  '03117_E_Procedu','re directive $1 not allowed in interface section'#000+
+  '03118_E_Procedure directive $1 not allowed in implementation section'#000+
+  '03119_E_Procedure directive $1 not allowed in procvar declaration'#000+
+  '03120_E_Function is already declared Public/Forward $1'#000+
+  '0','3121_E_Can'#039't use both EXPORT and EXTERNAL'#000+
+  '03122_E_NAME keyword expected'#000+
+  '03123_W_$1 not yet supported inside inline procedure/function'#000+
+  '03124_W_Inlining disabled'#000+
+  '03125_I_Writing Browser log $1'#000+
+  '03126_H_may be pointer dereference is missing'#000+
+  '031','27_F_Selected assembler reader not supported'#000+
+  '03128_E_Procedure directive $1 has conflicts with other directives'#000+
+  '03129_E_Calling convention doesn'#039't match forward'#000+
+  '03130_E_Register calling (fastcall) not supported'#000+
+  '03131_E_Property can'#039't have a',' default value'#000+
+  '03132_E_The default value of a property must be constant'#000+
+  '03133_E_Symbol can'#039't be published, can be only a class'#000+
+  '03134_E_That kind of property can'#039't be published'#000+
+  '03135_W_Empty import name specified'#000+
+  '03136_W_An import name is re','quired'#000+
+  '03137_E_Function internal name changed after use of function'#000+
+  '03138_E_Division by zero'#000+
+  '03139_E_Invalid floating point operation'#000+
+  '03140_E_Upper bound of range is less than lower bound'#000+
+  '03141_W_string "$1" is longer than $2'#000+
+  '03142_E_string',' length is larger than array of char length'#000+
+  '03143_E_Illegal expression after message directive'#000+
+  '03144_E_Message handlers can take only one call by ref. parameter'#000+
+  '03145_E_Duplicate message label: $1'#000+
+  '03146_E_Self can be only an explicit parame','ter in message handlers'#000+
+  '03147_E_Threadvars can be only static or global'#000+
+  '03148_F_Direct assembler not supported for binary output format'#000+
+  '03149_W_Don'#039't load OBJPAS unit manual, use {$mode objfpc} or {$mod'+
+  'e delphi} instead'#000+
+  '03150_E_OVERRIDE can',#039't be used in objects'#000+
+  '03151_E_Data types which requires initialization/finalization can'#039't'+
+  ' be used in variant records'#000+
+  '03152_E_Resourcestrings can be only static or global'#000+
+  '03153_E_Exit with argument can'#039't be used here'#000+
+  '03154_E_The type of the ','storage symbol must be boolean'#000+
+  '03155_E_This symbol isn'#039't allowed as storage symbol'#000+
+  '03156_E_Only class which are compiled in $M+ mode can be published'#000+
+  '03157_E_Procedure directive expected'#000+
+  '03158_E_The value for a property index must be of an ','ordinal type'#000+
+  '03159_E_Procedure name to short to be exported'#000+
+  '03160_E_No DEFFILE entry can be generated for unit global vars'#000+
+  '03161_E_Compile without -WD option'#000+
+  '04000_E_Type mismatch'#000+
+  '04001_E_Incompatible types: got "$1" expected "$2"'#000+
+  '04002_E_T','ype mismatch between $1 and $2'#000+
+  '04003_E_Type identifier expected'#000+
+  '04004_E_Variable identifier expected'#000+
+  '04005_E_Integer expression expected, but got "$1"'#000+
+  '04006_E_Boolean expression expected, but got "$1"'#000+
+  '04007_E_Ordinal expression expected'#000+
+  '040','08_E_pointer type expected, but got "$1"'#000+
+  '04009_E_class type expected, but got "$1"'#000+
+  '04010_E_Variable or type indentifier expected'#000+
+  '04011_E_Can'#039't evaluate constant expression'#000+
+  '04012_E_Set elements are not compatible'#000+
+  '04013_E_Operation not implem','ented for sets'#000+
+  '04014_W_Automatic type conversion from floating type to COMP which is '+
+  'an integer type'#000+
+  '04015_H_use DIV instead to get an integer result'#000+
+  '04016_E_string types doesn'#039't match, because of $V+ mode'#000+
+  '04017_E_succ or pred on enums with',' assignments not possible'#000+
+  '04018_E_Can'#039't read or write variables of this type'#000+
+  '04019_E_Can'#039't use readln or writeln on typed file'#000+
+  '04020_E_Can'#039't use read or write on untyped file.'#000+
+  '04021_E_Type conflict between set elements'#000+
+  '04022_W_lo/hi(dword/q','word) returns the upper/lower word/dword'#000+
+  '04023_E_Integer or real expression expected'#000+
+  '04024_E_Wrong type $1 in array constructor'#000+
+  '04025_E_Incompatible type for arg no. $1: Got $2, expected $3'#000+
+  '04026_E_Method (variable) and Procedure (variable)',' are not compatibl'+
+  'e'#000+
+  '04027_E_Illegal constant passed to internal math function'#000+
+  '04028_E_Can'#039't get the address of constants'#000+
+  '04029_E_Argument can'#039't be assigned to'#000+
+  '04030_E_Can'#039't assign local procedure/function to procedure variabl'+
+  'e'#000+
+  '04031_E_Can'#039't',' assign values to an address'#000+
+  '04032_E_Can'#039't assign values to const variable'#000+
+  '05000_E_Identifier not found $1'#000+
+  '05001_F_Internal Error in SymTableStack()'#000+
+  '05002_E_Duplicate identifier $1'#000+
+  '05003_H_Identifier already defined in $1 at line $2'#000+
+  '05004_E','_Unknown identifier $1'#000+
+  '05005_E_Forward declaration not solved $1'#000+
+  '05006_F_Identifier type already defined as type'#000+
+  '05007_E_Error in type definition'#000+
+  '05008_E_Type identifier not defined'#000+
+  '05009_E_Forward type not resolved $1'#000+
+  '05010_E_Only static v','ariables can be used in static methods or outsi'+
+  'de methods'#000+
+  '05011_E_Invalid call to tvarsym.mangledname()'#000+
+  '05012_F_record or class type expected'#000+
+  '05013_E_Instances of classes or objects with an abstract method are no'+
+  't allowed'#000+
+  '05014_W_Label not ','defined $1'#000+
+  '05015_E_Label used but not defined $1'#000+
+  '05016_E_Illegal label declaration'#000+
+  '05017_E_GOTO and LABEL are not supported (use switch -Sg)'#000+
+  '05018_E_Label not found'#000+
+  '05019_E_identifier isn'#039't a label'#000+
+  '05020_E_label already defined'#000+
+  '05021_E_ille','gal type declaration of set elements'#000+
+  '05022_E_Forward class definition not resolved $1'#000+
+  '05023_H_Unit $1 not used in $2'#000+
+  '05024_H_Parameter $1 not used'#000+
+  '05025_N_Local variable $1 not used'#000+
+  '05026_H_Value parameter $1 is assigned but never used'#000+
+  '0502','7_N_Local variable $1 is assigned but never used'#000+
+  '05028_H_Local $1 $2 is not used'#000+
+  '05029_N_Private field $1.$2 is never used'#000+
+  '05030_N_Private field $1.$2 is assigned but never used'#000+
+  '05031_N_Private method $1.$2 never used'#000+
+  '05032_E_Set type expec','ted'#000+
+  '05033_W_Function result does not seem to be set'#000+
+  '05034_W_Type $1 is not aligned correctly in current record for C'#000+
+  '05035_E_Unknown record field identifier $1'#000+
+  '05036_W_Local variable $1 does not seem to be initialized'#000+
+  '05037_W_Variable $1 do','es not seem to be initialized'#000+
+  '05038_E_identifier idents no member $1'#000+
+  '05039_B_Found declaration: $1'#000+
+  '05040_E_Data segment too large (max. 2GB)'#000+
+  '06000_E_BREAK not allowed'#000+
+  '06001_E_CONTINUE not allowed'#000+
+  '06002_E_Expression too complicated - FPU sta','ck overflow'#000+
+  '06003_E_Illegal expression'#000+
+  '06004_E_Invalid integer expression'#000+
+  '06005_E_Illegal qualifier'#000+
+  '06006_E_High range limit < low range limit'#000+
+  '06007_E_Illegal counter variable'#000+
+  '06008_E_Can'#039't determine which overloaded function to call'#000+
+  '06009_','E_Parameter list size exceeds 65535 bytes'#000+
+  '06010_E_Illegal type conversion'#000+
+  '06011_D_Conversion between ordinals and pointers is not portable acros'+
+  's platforms'#000+
+  '06012_E_File types must be var parameters'#000+
+  '06013_E_The use of a far pointer isn'#039't all','owed there'#000+
+  '06014_E_illegal call by reference parameters'#000+
+  '06015_E_EXPORT declared functions can'#039't be called'#000+
+  '06016_W_Possible illegal call of constructor or destructor (doesn'#039't'+
+  ' match to this context)'#000+
+  '06017_N_Inefficient code'#000+
+  '06018_W_unreachabl','e code'#000+
+  '06019_E_procedure call with stackframe ESP/SP'#000+
+  '06020_E_Abstract methods can'#039't be called directly'#000+
+  '06021_F_Internal Error in getfloatreg(), allocation failure'#000+
+  '06022_F_Unknown float type'#000+
+  '06023_F_SecondVecn() base defined twice'#000+
+  '06024_F_Ex','tended cg68k not supported'#000+
+  '06025_F_32-bit unsigned not supported in MC68000 mode'#000+
+  '06026_F_Internal Error in secondinline()'#000+
+  '06027_D_Register $1 weight $2 $3'#000+
+  '06028_E_Stack limit excedeed in local routine'#000+
+  '06029_D_Stack frame is omitted'#000+
+  '06030_W_','Range check for 64 bit integers is not supported on this tar'+
+  'get'#000+
+  '06031_E_Object or class methods can'#039't be inline.'#000+
+  '06032_E_Procvar calls can'#039't be inline.'#000+
+  '06033_E_No code for inline procedure stored'#000+
+  '06034_E_Direct call of interrupt procedure $','1 is not possible'#000+
+  '06035_E_Element zero of an ansi/wide- or longstring can'#039't be acces'+
+  'sed, use (set)length instead'#000+
+  '06036_E_Include and exclude not implemented in this case'#000+
+  '06037_E_Constructors or destructors can not be called inside a '#039'wi'+
+  'th'#039' ','clause'#000+
+  '06038_E_Cannot call message handler method directly'#000+
+  '06039_E_Jump in or outside of an exception block'#000+
+  '06040_E_Control flow statements aren'#039't allowed in a finally block'#000+
+  '07000_D_Starting $1 styled assembler parsing'#000+
+  '07001_D_Finished $1 s','tyled assembler parsing'#000+
+  '07002_E_Non-label pattern contains @'#000+
+  '07003_W_Override operator not supported'#000+
+  '07004_E_Error building record offset'#000+
+  '07005_E_OFFSET used without identifier'#000+
+  '07006_E_TYPE used without identifier'#000+
+  '07007_E_Cannot use local v','ariable or parameters here'#000+
+  '07008_E_need to use OFFSET here'#000+
+  '07009_E_need to use $ here'#000+
+  '07010_E_Cannot use multiple relocatable symbols'#000+
+  '07011_E_Relocatable symbol can only be added'#000+
+  '07012_E_Invalid constant expression'#000+
+  '07013_E_Relocatable symbo','l is not allowed'#000+
+  '07014_E_Invalid reference syntax'#000+
+  '07015_E_You can not reach $1 from that code'#000+
+  '07016_E_Local symbols/labels aren'#039't allowed as references'#000+
+  '07017_E_Invalid base and index register usage'#000+
+  '07018_W_Possible error in object field han','dling'#000+
+  '07019_E_Wrong scale factor specified'#000+
+  '07020_E_Multiple index register usage'#000+
+  '07021_E_Invalid operand type'#000+
+  '07022_E_Invalid string as opcode operand: $1'#000+
+  '07023_W_@CODE and @DATA not supported'#000+
+  '07024_E_Null label references are not allowed'#000+
+  '0','7025_E_Divide by zero in asm evaluator'#000+
+  '07026_E_Illegal expression'#000+
+  '07027_E_escape sequence ignored: $1'#000+
+  '07028_E_Invalid symbol reference'#000+
+  '07029_W_Fwait can cause emulation problems with emu387'#000+
+  '07030_W_FADD without operand translated into FADDP',#000+
+  '07031_W_ENTER instruction is not supported by Linux kernel'#000+
+  '07032_W_Calling an overload function in assembler'#000+
+  '07033_E_Unsupported symbol type for operand'#000+
+  '07034_E_Constant value out of bounds'#000+
+  '07035_E_Error converting decimal $1'#000+
+  '07036_E_Error',' converting octal $1'#000+
+  '07037_E_Error converting binary $1'#000+
+  '07038_E_Error converting hexadecimal $1'#000+
+  '07039_H_$1 translated to $2'#000+
+  '07040_W_$1 is associated to an overloaded function'#000+
+  '07041_E_Cannot use SELF outside a method'#000+
+  '07042_E_Cannot use OLDEB','P outside a nested procedure'#000+
+  '07043_W_Procedures can'#039't return any value in asm code'#000+
+  '07044_E_SEG not supported'#000+
+  '07045_E_Size suffix and destination or source size do not match'#000+
+  '07046_W_Size suffix and destination or source size do not match'#000+
+  '070','47_E_Assembler syntax error'#000+
+  '07048_E_Invalid combination of opcode and operands'#000+
+  '07049_E_Assemler syntax error in operand'#000+
+  '07050_E_Assemler syntax error in constant'#000+
+  '07051_E_Invalid String expression'#000+
+  '07052_bit constant created for address'#000+
+  '07053','_E_Unrecognized opcode $1'#000+
+  '07054_E_Invalid or missing opcode'#000+
+  '07055_E_Invalid combination of prefix and opcode: $1'#000+
+  '07056_E_Invalid combination of override and opcode: $1'#000+
+  '07057_E_Too many operands on line'#000+
+  '07058_W_NEAR ignored'#000+
+  '07059_W_FAR ignor','ed'#000+
+  '07060_E_Duplicate local symbol $1'#000+
+  '07061_E_Undefined local symbol $1'#000+
+  '07062_E_Unknown label identifier $1'#000+
+  '07063_E_Invalid register name'#000+
+  '07064_E_Invalid floating point register name'#000+
+  '07065_E_NOR not supported'#000+
+  '07066_W_Modulo not supported'#000+
+  '070','67_E_Invalid floating point constant $1'#000+
+  '07068_E_Invalid floating point expression'#000+
+  '07069_E_Wrong symbol type'#000+
+  '07070_E_Cannot index a local var or parameter with a register'#000+
+  '07071_E_Invalid segment override expression'#000+
+  '07072_W_Identifier $1 supp','osed external'#000+
+  '07073_E_Strings not allowed as constants'#000+
+  '07074_No type of variable specified'#000+
+  '07075_E_assembler code not returned to text section'#000+
+  '07076_E_Not a directive or local symbol $1'#000+
+  '07077_E_Using a defined name as a local label'#000+
+  '07078_E_','Dollar token is used without an identifier'#000+
+  '07079_W_32bit constant created for address'#000+
+  '07080_N_.align is target specific, use .balign or .p2align'#000+
+  '07081_E_Can'#039't access fields directly for parameters'#000+
+  '07082_E_Can'#039't access fields of objects/clas','ses directly'#000+
+  '08000_F_Too many assembler files'#000+
+  '08001_F_Selected assembler output not supported'#000+
+  '08002_F_Comp not supported'#000+
+  '08003_F_Direct not support for binary writers'#000+
+  '08004_E_Allocating of data is only allowed in bss section'#000+
+  '08005_F_No bina','ry writer selected'#000+
+  '08006_E_Asm: Opcode $1 not in table'#000+
+  '08007_E_Asm: $1 invalid combination of opcode and operands'#000+
+  '08008_E_Asm: 16 Bit references not supported'#000+
+  '08009_E_Asm: Invalid effective address'#000+
+  '08010_E_Asm: Immediate or reference expect','ed'#000+
+  '08011_E_Asm: $1 value exceeds bounds $2'#000+
+  '08012_E_Asm: Short jump is out of range $1'#000+
+  '08013_E_Asm: Undefined label $1'#000+
+  '09000_W_Source operating system redefined'#000+
+  '09001_I_Assembling (pipe) $1'#000+
+  '09002_E_Can'#039't create assember file: $1'#000+
+  '09003_E_Can'#039,'t create object file: $1'#000+
+  '09004_E_Can'#039't create archive file: $1'#000+
+  '09005_W_Assembler $1 not found, switching to external assembling'#000+
+  '09006_T_Using assembler: $1'#000+
+  '09007_W_Error while assembling exitcode $1'#000+
+  '09008_W_Can'#039't call the assembler, error $','1 switching to external'+
+  ' assembling'#000+
+  '09009_I_Assembling $1'#000+
+  '09010_I_Assembling smartlink $1'#000+
+  '09011_W_Object $1 not found, Linking may fail !'#000+
+  '09012_W_Library $1 not found, Linking may fail !'#000+
+  '09013_W_Error while linking'#000+
+  '09014_W_Can'#039't call the lin','ker, switching to external linking'#000+
+  '09015_I_Linking $1'#000+
+  '09016_W_Util $1 not found, switching to external linking'#000+
+  '09017_T_Using util $1'#000+
+  '09018_E_Creation of Executables not supported'#000+
+  '09019_E_Creation of Dynamic/Shared Libraries not supported'#000+
+  '09','020_I_Closing script $1'#000+
+  '09021_W_resource compiler not found, switching to external mode'#000+
+  '09022_I_Compiling resource $1'#000+
+  '09023_F_Can'#039't post process executable $1'#000+
+  '09024_F_Can'#039't open executable $1'#000+
+  '09025_X_Size of Code: $1 bytes'#000+
+  '09026_X_Size of i','nitialized data: $1 bytes'#000+
+  '09027_X_Size of uninitialized data: $1 bytes'#000+
+  '09028_X_Stack space reserved: $1 bytes'#000+
+  '09029_X_Stack space commited: $1 bytes'#000+
+  '10000_T_Unitsearch: $1'#000+
+  '10001_T_PPU Loading $1'#000+
+  '10002_U_PPU Name: $1'#000+
+  '10003_U_PPU Flags: $1'#000+
+  '10','004_U_PPU Crc: $1'#000+
+  '10005_U_PPU Time: $1'#000+
+  '10006_U_PPU File too short'#000+
+  '10007_U_PPU Invalid Header (no PPU at the begin)'#000+
+  '10008_U_PPU Invalid Version $1'#000+
+  '10009_U_PPU is compiled for an other processor'#000+
+  '10010_U_PPU is compiled for an other target'#000+
+  '100','11_U_PPU Source: $1'#000+
+  '10012_U_Writing $1'#000+
+  '10013_F_Can'#039't Write PPU-File'#000+
+  '10014_F_Error reading PPU-File'#000+
+  '10015_F_unexpected end of PPU-File'#000+
+  '10016_F_Invalid PPU-File entry: $1'#000+
+  '10017_F_PPU Dbx count problem'#000+
+  '10018_E_Illegal unit name: $1'#000+
+  '10019_F_Too',' much units'#000+
+  '10020_F_Circular unit reference between $1 and $2'#000+
+  '10021_F_Can'#039't compile unit $1, no sources available'#000+
+  '10022_F_Can'#039't find unit $1'#000+
+  '10023_W_Unit $1 was not found but $2 exists'#000+
+  '10024_F_Unit $1 searched but $2 found'#000+
+  '10025_W_Compiling',' the system unit requires the -Us switch'#000+
+  '10026_F_There were $1 errors compiling module, stopping'#000+
+  '10027_U_Load from $1 ($2) unit $3'#000+
+  '10028_U_Recompiling $1, checksum changed for $2'#000+
+  '10029_U_Recompiling $1, source found only'#000+
+  '10030_U_Recompiling',' unit, static lib is older than ppufile'#000+
+  '10031_U_Recompiling unit, shared lib is older than ppufile'#000+
+  '10032_U_Recompiling unit, obj and asm are older than ppufile'#000+
+  '10033_U_Recompiling unit, obj is older than asm'#000+
+  '10034_U_Parsing interface of $1'#000,
+  '10035_U_Parsing implementation of $1'#000+
+  '10036_U_Second load for unit $1'#000+
+  '10037_U_PPU Check file $1 time $2'#000+
+  '11000_$1 [options] <inputfile> [options]'#000+
+  '11001_W_Only one source file supported'#000+
+  '11002_W_DEF file can be created only for OS/2'#000+
+  '11003_E_nes','ted response files are not supported'#000+
+  '11004_F_No source file name in command line'#000+
+  '11005_N_No option inside $1 config file'#000+
+  '11006_E_Illegal parameter: $1'#000+
+  '11007_H_-? writes help pages'#000+
+  '11008_F_Too many config files nested'#000+
+  '11009_F_Unable to open ','file $1'#000+
+  '11010_N_Reading further options from $1'#000+
+  '11011_W_Target is already set to: $1'#000+
+  '11012_W_Shared libs not supported on DOS platform, reverting to static'+
   #000+
   #000+
-  'This program comes under the GNU General Public Licence'#000+
-  'For more information read COPYING.FPC'#000+
-  #000+
-  'Report bugs,suggestions etc to:'#000+
+  '11013_F_too many IF(N)DEFs'#000+
+  '11014_F_too many ENDIFs'#000+
+  '11015_F_open conditional at the e','nd of the file'#000+
+  '11016_W_Debug information generation is not supported by this executab'+
+  'le'#000+
+  '11017_H_Try recompiling with -dGDB'#000+
+  '11018_E_You are using the obsolete switch $1'#000+
+  '11019_E_You are using the obsolete switch $1, please use $2'#000+
+  '11020_N_Swit','ching assembler to default source writing assembler'#000+
+  '11021_W_Assembler output selected "$1" is not compatible with "$2"'#000+
+  '11022_W_"$1" assembler use forced'#000+
+  '11023_Free Pascal Compiler version $FPCVER [$FPCDATE] for $FPCTARGET'#010+
+  'Copyright (c) 1993','-2000 by Florian Klaempfl'#000+
+  '11024_Free Pascal Compiler version $FPCVER'#010+
+  #010+
+  'Compiler Date  : $FPCDATE'#010+
+  'Compiler Target: $FPCTARGET'#010+
+  #010+
+  'This program comes under the GNU General Public Licence'#010+
+  'For more information read COPYING.FPC'#010+
+  #010+
+  'Report bugs,suggesti','ons etc to:'#010+
   '                 [email protected]'#000+
   '                 [email protected]'#000+
-  '**0*_put + after a boolean switch option to',' enable it, - to disable '+
-  'it'#000+
-  '**1a_the compiler doesn'#039't delete the generated assembler file'#000+
-  '**2al_list sourcecode lines in assembler file'#000+
-  '**2ar_list register allocation/release info in assembler file'#000+
-  '**2at_list temp allocation/release info in',' assembler file'#000+
-  '**1b_generate browser info'#000+
-  '**2bl_generate local symbol info'#000+
-  '**1B_build all modules'#000+
-  '**1C<x>_code generation options:'#000+
-  '**2CD_create also dynamic library (not supported)'#000+
-  '**2Ch<n>_<n> bytes heap (between 1023 and 67107840)'#000+
-  '**2Ci_','IO-checking'#000+
-  '**2Cn_omit linking stage'#000+
-  '**2Co_check overflow of integer operations'#000+
-  '**2Cr_range checking'#000+
-  '**2Cs<n>_set stack size to <n>'#000+
-  '**2Ct_stack checking'#000+
-  '**2CX_create also smartlinked library'#000+
-  '**1d<x>_defines the symbol <x>'#000+
-  '*O1D_generate a DE','F file'#000+
-  '*O2Dd<x>_set description to <x>'#000+
-  '*O2Dw_PM application'#000+
-  '**1e<x>_set path to executable'#000+
-  '**1E_same as -Cn'#000+
-  '**1F<x>_set file names and paths:'#000+
-  '**2FD<x>_sets the directory where to search for compiler utilities'#000+
-  '**2Fe<x>_redirect error output ','to <x>'#000+
-  '**2FE<x>_set exe/unit output path to <x>'#000+
-  '**2Fi<x>_adds <x> to include path'#000+
-  '**2Fl<x>_adds <x> to library path'#000+
-  '*L2FL<x>_uses <x> as dynamic linker'#000+
-  '**2Fo<x>_adds <x> to object path'#000+
-  '**2Fr<x>_load error message file <x>'#000+
-  '**2Fu<x>_adds <x> ','to unit path'#000+
-  '**2FU<x>_set unit output path to <x>, overrides -FE'#000+
-  '*g1g_generate debugger information:'#000+
-  '*g2gg_use gsym'#000+
-  '*g2gd_use dbx'#000+
-  '*g2gh_use heap trace unit (for memory leak debugging)'#000+
-  '*g2gl_use line info unit to show more info for backtrace','s'#000+
-  '*g2gc_generate checks for pointers'#000+
-  '**1i_information'#000+
-  '**2iD_return compiler date'#000+
-  '**2iV_return compiler version'#000+
-  '**2iSO_return compiler OS'#000+
-  '**2iSP_return compiler processor'#000+
-  '**2iTO_return target OS'#000+
-  '**2iTP_return target processor'#000+
-  '**1I<x>_adds <x','> to include path'#000+
-  '**1k<x>_Pass <x> to the linker'#000+
-  '**1l_write logo'#000+
-  '**1n_don'#039't read the default config file'#000+
-  '**1o<x>_change the name of the executable produced to <x>'#000+
-  '**1pg_generate profile code for gprof (defines FPC_PROFILE)'#000+
-  '*L1P_use pipes in','stead of creating temporary assembler files'#000+
-  '**1S<x>_syntax options:'#000+
-  '**2S2_switch some Delphi 2 extensions on'#000+
-  '**2Sc_supports operators like C (*=,+=,/= and -=)'#000+
-  '**2sa_include assertion code.'#000+
-  '**2Sd_tries to be Delphi compatible'#000+
-  '**2Se<x>_compil','er stops after the <x> errors (default is 1)'#000+
-  '**2Sg_allow LABEL and GOTO'#000+
-  '**2Sh_Use ansistrings'#000+
-  '**2Si_support C++ styled INLINE'#000+
-  '**2Sm_support macros like C (global)'#000+
-  '**2So_tries to be TP/BP 7.0 compatible'#000+
-  '**2Sp_tries to be gpc compatible'#000+
-  '**2Ss','_constructor name must be init (destructor must be done)'#000+
-  '**2St_allow static keyword in objects'#000+
-  '**1s_don'#039't call assembler and linker (only with -a)'#000+
-  '**1u<x>_undefines the symbol <x>'#000+
-  '**1U_unit options:'#000+
-  '**2Un_don'#039't check the unit name'#000+
-  '**2Us_com','pile a system unit'#000+
-  '**1v<x>_Be verbose. <x> is a combination of the following letters:'#000+
-  '**2*_e : Show errors (default)       d : Show debug info'#000+
-  '**2*_w : Show warnings               u : Show unit info'#000+
-  '**2*_n : Show notes                  t : ','Show tried/used files'#000+
-  '**2*_h : Show hints                  m : Show defined macros'#000+
-  '**2*_i : Show general info           p : Show compiled procedures'#000+
-  '**2*_l : Show linenumbers            c : Show conditionals'#000+
-  '**2*_a : Show everything        ','     0 : Show nothing (except errors'+
-  ')'#000+
-  '**2*_b : Show all procedure          r : Rhide/GCC compatibility mode'#000+
-  '**2*_    declarations if an error    x : Executable info (Win32 only)'#000+
-  '**2*_    occurs'#000+
-  '**1X_executable options:'#000+
-  '*L2Xc_link with the c',' library'#000+
-  '**2Xs_strip all symbols from executable'#000+
-  '**2XD_try to link dynamic          (defines FPC_LINK_DYNAMIC)'#000+
-  '**2XS_try to link static (default) (defines FPC_LINK_STATIC)'#000+
-  '**2XX_try to link smart            (defines FPC_LINK_SMART)'#000+
-  '**0*_Pro','cessor specific options:'#000+
-  '3*1A<x>_output format:'#000+
-  '3*2Aas_assemble using GNU AS'#000+
-  '3*2Aasaout_assemble using GNU AS for aout (Go32v1)'#000+
-  '3*2Anasmcoff_coff (Go32v2) file using Nasm'#000+
-  '3*2Anasmelf_elf32 (Linux) file using Nasm'#000+
-  '3*2Anasmobj_obj file using ','Nasm'#000+
-  '3*2Amasm_obj file using Masm (Microsoft)'#000+
-  '3*2Atasm_obj file using Tasm (Borland)'#000+
-  '3*2Acoff_coff (Go32v2) using internal writer'#000+
-  '3*2Apecoff_pecoff (Win32) using internal writer'#000+
-  '3*1R<x>_assembler reading style:'#000+
-  '3*2Ratt_read AT&T style assem','bler'#000+
-  '3*2Rintel_read Intel style assembler'#000+
-  '3*2Rdirect_copy assembler text directly to assembler file'#000+
-  '3*1O<x>_optimizations:'#000+
-  '3*2Og_generate smaller code'#000+
-  '3*2OG_generate faster code (default)'#000+
-  '3*2Or_keep certain variables in registers'#000+
-  '3*2Ou_enab','le uncertain optimizations (see docs)'#000+
-  '3*2O1_level 1 optimizations (quick optimizations)'#000+
-  '3*2O2_level 2 optimizations (-O1 + slower optimizations)'#000+
-  '3*2O3_level 3 optimizations (same as -O2u)'#000+
-  '3*2Op<x>_target processor:'#000+
-  '3*3Op1_set target process','or to 386/486'#000+
-  '3*3Op2_set target processor to Pentium/PentiumMMX (tm)'#000+
-  '3*3Op3_set target processor to PPro/PII/c6x86/K6 (tm)'#000+
-  '3*1T<x>_Target operating system:'#000+
-  '3*2TGO32V1_version 1 of DJ Delorie DOS extender'#000+
-  '3*2TGO32V2_version 2 of DJ Delorie D','OS extender'#000+
-  '3*2TLINUX_Linux'#000+
-  '3*2TOS2_OS/2 2.x'#000+
-  '3*2TWin32_Windows 32 Bit'#000+
-  '3*1W<x>_Win32 target options'#000+
-  '3*2WB<x>_Set Image base to Hexadecimal <x> value'#000+
-  '3*2WC_Specify console type application'#000+
-  '3*2WD_Use DEFFILE to export functions of DLL or EXE'#000+
-  '3','*2WG_Specify graphic type application'#000+
-  '3*2WN_Do not generate relocation code (necessary for debugging)'#000+
-  '3*2WR_Generate relocation code'#000+
-  '6*1A<x>_output format'#000+
-  '6*2Aas_Unix o-file using GNU AS'#000+
-  '6*2Agas_GNU Motorola assembler'#000+
-  '6*2Amit_MIT Syntax (ol','d GAS)'#000+
-  '6*2Amot_Standard Motorola assembler'#000+
-  '6*1O_optimizations:'#000+
-  '6*2Oa_turn on the optimizer'#000+
-  '6*2Og_generate smaller code'#000+
-  '6*2OG_generate faster code (default)'#000+
-  '6*2Ox_optimize maximum (still BUGGY!!!)'#000+
-  '6*2O2_set target processor to a MC68020+'#000+
-  '6*1','R<x>_assembler reading style:'#000+
-  '6*2RMOT_read motorola style assembler'#000+
-  '6*1T<x>_Target operating system:'#000+
-  '6*2TAMIGA_Commodore Amiga'#000+
-  '6*2TATARI_Atari ST/STe/TT'#000+
-  '6*2TMACOS_Macintosh m68k'#000+
-  '6*2TLINUX_Linux-68k'#000+
-  '**1*_'#000+
-  '**1?_shows this help'#000+
-  '**1h_shows this',' help without waiting'#000
+  '11025_**0*_put + after a boolean switch option to enable it, - to disa'+
+  'ble it'#010+
+  '**1a_the compiler doesn'#039't delete the generated assembler file'#010+
+  '**2al_list sourcecode lines in assembler file'#010+
+  '**2a','r_list register allocation/release info in assembler file'#010+
+  '**2at_list temp allocation/release info in assembler file'#010+
+  '**1b_generate browser info'#010+
+  '**2bl_generate local symbol info'#010+
+  '**1B_build all modules'#010+
+  '**1C<x>_code generation options:'#010+
+  '**2CD_cr','eate also dynamic library (not supported)'#010+
+  '**2Ch<n>_<n> bytes heap (between 1023 and 67107840)'#010+
+  '**2Ci_IO-checking'#010+
+  '**2Cn_omit linking stage'#010+
+  '**2Co_check overflow of integer operations'#010+
+  '**2Cr_range checking'#010+
+  '**2Cs<n>_set stack size to <n>'#010+
+  '**2Ct_st','ack checking'#010+
+  '**2CX_create also smartlinked library'#010+
+  '**1d<x>_defines the symbol <x>'#010+
+  '*O1D_generate a DEF file'#010+
+  '*O2Dd<x>_set description to <x>'#010+
+  '*O2Dw_PM application'#010+
+  '**1e<x>_set path to executable'#010+
+  '**1E_same as -Cn'#010+
+  '**1F<x>_set file names and paths',':'#010+
+  '**2FD<x>_sets the directory where to search for compiler utilities'#010+
+  '**2Fe<x>_redirect error output to <x>'#010+
+  '**2FE<x>_set exe/unit output path to <x>'#010+
+  '**2Fi<x>_adds <x> to include path'#010+
+  '**2Fl<x>_adds <x> to library path'#010+
+  '*L2FL<x>_uses <x> as dyn','amic linker'#010+
+  '**2Fo<x>_adds <x> to object path'#010+
+  '**2Fr<x>_load error message file <x>'#010+
+  '**2Fu<x>_adds <x> to unit path'#010+
+  '**2FU<x>_set unit output path to <x>, overrides -FE'#010+
+  '*g1g_generate debugger information:'#010+
+  '*g2gg_use gsym'#010+
+  '*g2gd_use dbx'#010+
+  '*g2gh_use ','heap trace unit (for memory leak debugging)'#010+
+  '*g2gl_use line info unit to show more info for backtraces'#010+
+  '*g2gc_generate checks for pointers'#010+
+  '**1i_information'#010+
+  '**2iD_return compiler date'#010+
+  '**2iV_return compiler version'#010+
+  '**2iSO_return compiler OS'#010+
+  '**2','iSP_return compiler processor'#010+
+  '**2iTO_return target OS'#010+
+  '**2iTP_return target processor'#010+
+  '**1I<x>_adds <x> to include path'#010+
+  '**1k<x>_Pass <x> to the linker'#010+
+  '**1l_write logo'#010+
+  '**1n_don'#039't read the default config file'#010+
+  '**1o<x>_change the name of the exec','utable produced to <x>'#010+
+  '**1pg_generate profile code for gprof (defines FPC_PROFILE)'#010+
+  '*L1P_use pipes instead of creating temporary assembler files'#010+
+  '**1S<x>_syntax options:'#010+
+  '**2S2_switch some Delphi 2 extensions on'#010+
+  '**2Sc_supports operators like C',' (*=,+=,/= and -=)'#010+
+  '**2sa_include assertion code.'#010+
+  '**2Sd_tries to be Delphi compatible'#010+
+  '**2Se<x>_compiler stops after the <x> errors (default is 1)'#010+
+  '**2Sg_allow LABEL and GOTO'#010+
+  '**2Sh_Use ansistrings'#010+
+  '**2Si_support C++ styled INLINE'#010+
+  '**2Sm_support ','macros like C (global)'#010+
+  '**2So_tries to be TP/BP 7.0 compatible'#010+
+  '**2Sp_tries to be gpc compatible'#010+
+  '**2Ss_constructor name must be init (destructor must be done)'#010+
+  '**2St_allow static keyword in objects'#010+
+  '**1s_don'#039't call assembler and linker (only wi','th -a)'#010+
+  '**1u<x>_undefines the symbol <x>'#010+
+  '**1U_unit options:'#010+
+  '**2Un_don'#039't check the unit name'#010+
+  '**2Us_compile a system unit'#010+
+  '**1v<x>_Be verbose. <x> is a combination of the following letters:'#010+
+  '**2*_e : Show errors (default)       d : Show debug in','fo'#010+
+  '**2*_w : Show warnings               u : Show unit info'#010+
+  '**2*_n : Show notes                  t : Show tried/used files'#010+
+  '**2*_h : Show hints                  m : Show defined macros'#010+
+  '**2*_i : Show general info           p : Show compiled pr','ocedures'#010+
+  '**2*_l : Show linenumbers            c : Show conditionals'#010+
+  '**2*_a : Show everything             0 : Show nothing (except errors)'#010+
+  '**2*_b : Show all procedure          r : Rhide/GCC compatibility mode'#010+
+  '**2*_    declarations if an erro','r    x : Executable info (Win32 only'+
+  ')'#010+
+  '**2*_    occurs'#010+
+  '**1X_executable options:'#010+
+  '*L2Xc_link with the c library'#010+
+  '**2Xs_strip all symbols from executable'#010+
+  '**2XD_try to link dynamic          (defines FPC_LINK_DYNAMIC)'#010+
+  '**2XS_try to link static (def','ault) (defines FPC_LINK_STATIC)'#010+
+  '**2XX_try to link smart            (defines FPC_LINK_SMART)'#010+
+  '**0*_Processor specific options:'#010+
+  '3*1A<x>_output format:'#010+
+  '3*2Aas_assemble using GNU AS'#010+
+  '3*2Aasaout_assemble using GNU AS for aout (Go32v1)'#010+
+  '3*2Anasmcoff','_coff (Go32v2) file using Nasm'#010+
+  '3*2Anasmelf_elf32 (Linux) file using Nasm'#010+
+  '3*2Anasmobj_obj file using Nasm'#010+
+  '3*2Amasm_obj file using Masm (Microsoft)'#010+
+  '3*2Atasm_obj file using Tasm (Borland)'#010+
+  '3*2Acoff_coff (Go32v2) using internal writer'#010+
+  '3*2Apecoff','_pecoff (Win32) using internal writer'#010+
+  '3*1R<x>_assembler reading style:'#010+
+  '3*2Ratt_read AT&T style assembler'#010+
+  '3*2Rintel_read Intel style assembler'#010+
+  '3*2Rdirect_copy assembler text directly to assembler file'#010+
+  '3*1O<x>_optimizations:'#010+
+  '3*2Og_generate sm','aller code'#010+
+  '3*2OG_generate faster code (default)'#010+
+  '3*2Or_keep certain variables in registers'#010+
+  '3*2Ou_enable uncertain optimizations (see docs)'#010+
+  '3*2O1_level 1 optimizations (quick optimizations)'#010+
+  '3*2O2_level 2 optimizations (-O1 + slower optimizati','ons)'#010+
+  '3*2O3_level 3 optimizations (same as -O2u)'#010+
+  '3*2Op<x>_target processor:'#010+
+  '3*3Op1_set target processor to 386/486'#010+
+  '3*3Op2_set target processor to Pentium/PentiumMMX (tm)'#010+
+  '3*3Op3_set target processor to PPro/PII/c6x86/K6 (tm)'#010+
+  '3*1T<x>_Target op','erating system:'#010+
+  '3*2TGO32V1_version 1 of DJ Delorie DOS extender'#010+
+  '3*2TGO32V2_version 2 of DJ Delorie DOS extender'#010+
+  '3*2TLINUX_Linux'#010+
+  '3*2TOS2_OS/2 2.x'#010+
+  '3*2TWin32_Windows 32 Bit'#010+
+  '3*1W<x>_Win32 target options'#010+
+  '3*2WB<x>_Set Image base to Hexadecimal <x','> value'#010+
+  '3*2WC_Specify console type application'#010+
+  '3*2WD_Use DEFFILE to export functions of DLL or EXE'#010+
+  '3*2WG_Specify graphic type application'#010+
+  '3*2WN_Do not generate relocation code (necessary for debugging)'#010+
+  '3*2WR_Generate relocation code'#010+
+  '6*1A<x>','_output format'#010+
+  '6*2Aas_Unix o-file using GNU AS'#010+
+  '6*2Agas_GNU Motorola assembler'#010+
+  '6*2Amit_MIT Syntax (old GAS)'#010+
+  '6*2Amot_Standard Motorola assembler'#010+
+  '6*1O_optimizations:'#010+
+  '6*2Oa_turn on the optimizer'#010+
+  '6*2Og_generate smaller code'#010+
+  '6*2OG_generate faster',' code (default)'#010+
+  '6*2Ox_optimize maximum (still BUGGY!!!)'#010+
+  '6*2O2_set target processor to a MC68020+'#010+
+  '6*1R<x>_assembler reading style:'#010+
+  '6*2RMOT_read motorola style assembler'#010+
+  '6*1T<x>_Target operating system:'#010+
+  '6*2TAMIGA_Commodore Amiga'#010+
+  '6*2TATARI_Ata','ri ST/STe/TT'#010+
+  '6*2TMACOS_Macintosh m68k'#010+
+  '6*2TLINUX_Linux-68k'#010+
+  '**1*_'#010+
+  '**1?_shows this help'#010+
+  '**1h_shows this help without waiting'#000
 );
 );

+ 17 - 10
compiler/options.pas

@@ -176,21 +176,23 @@ end;
 
 
 procedure Toption.WriteLogo;
 procedure Toption.WriteLogo;
 var
 var
-  i : tmsgconst;
+  p : pchar;
 begin
 begin
   MaybeLoadMessageFile;
   MaybeLoadMessageFile;
-  for i:=option_logo_start to option_logo_end do
-   Message1(i,target_cpu_string);
+  p:=MessagePchar(option_logo);
+  while assigned(p) do
+   Comment(V_Normal,GetMsgLine(p));
 end;
 end;
 
 
 
 
 procedure Toption.WriteInfo;
 procedure Toption.WriteInfo;
 var
 var
-  i : tmsgconst;
+  p : pchar;
 begin
 begin
   MaybeLoadMessageFile;
   MaybeLoadMessageFile;
-  for i:=option_info_start to option_info_end do
-   Message(i);
+  p:=MessagePchar(option_info);
+  while assigned(p) do
+   Comment(V_Normal,GetMsgLine(p));
   StopOptions;
   StopOptions;
 end;
 end;
 
 
@@ -205,7 +207,6 @@ procedure Toption.WriteHelpPages;
   end;
   end;
 
 
 var
 var
-  idx,
   lastident,
   lastident,
   j,outline,
   j,outline,
   ident,
   ident,
@@ -214,6 +215,7 @@ var
   opt   : string[32];
   opt   : string[32];
   input,
   input,
   s     : string;
   s     : string;
+  p     : pchar;
 begin
 begin
   MaybeLoadMessageFile;
   MaybeLoadMessageFile;
   Message1(option_usage,paramstr(0));
   Message1(option_usage,paramstr(0));
@@ -222,10 +224,11 @@ begin
    lines:=3
    lines:=3
   else
   else
    lines:=1;
    lines:=1;
-  for idx:=ord(ol_begin) to ord(ol_end) do
+  p:=MessagePChar(option_help_pages);
+  while assigned(p) do
    begin
    begin
    { get a line and reset }
    { get a line and reset }
-     s:=msg^.Get(idx);
+     s:=GetMsgLine(p);
      ident:=0;
      ident:=0;
      show:=false;
      show:=false;
    { parse options }
    { parse options }
@@ -1485,7 +1488,11 @@ end;
 end.
 end.
 {
 {
   $Log$
   $Log$
-  Revision 1.70  2000-06-19 19:57:19  pierre
+  Revision 1.71  2000-06-30 20:23:38  peter
+    * new message files layout with msg numbers (but still no code to
+      show the number on the screen)
+
+  Revision 1.70  2000/06/19 19:57:19  pierre
    * smart link is default on win32
    * smart link is default on win32
 
 
   Revision 1.69  2000/05/23 21:28:22  pierre
   Revision 1.69  2000/05/23 21:28:22  pierre

+ 6 - 2
compiler/scandir.inc

@@ -531,7 +531,7 @@ const
 
 
     procedure dir_message(t:tdirectivetoken);
     procedure dir_message(t:tdirectivetoken);
       var
       var
-        w   : tmsgconst;
+        w   : longint;
       begin
       begin
         case t of
         case t of
        _DIR_STOP,
        _DIR_STOP,
@@ -1419,7 +1419,11 @@ const
 
 
 {
 {
   $Log$
   $Log$
-  Revision 1.82  2000-06-25 19:08:27  hajny
+  Revision 1.83  2000-06-30 20:23:38  peter
+    * new message files layout with msg numbers (but still no code to
+      show the number on the screen)
+
+  Revision 1.82  2000/06/25 19:08:27  hajny
     + $R support for OS/2 (EMX) added
     + $R support for OS/2 (EMX) added
 
 
   Revision 1.81  2000/05/23 20:18:25  pierre
   Revision 1.81  2000/05/23 20:18:25  pierre

+ 7 - 3
compiler/scanner.pas

@@ -108,7 +108,7 @@ unit scanner;
           procedure end_of_file;
           procedure end_of_file;
           procedure checkpreprocstack;
           procedure checkpreprocstack;
           procedure poppreprocstack;
           procedure poppreprocstack;
-          procedure addpreprocstack(atyp : preproctyp;a:boolean;const s:string;w:tmsgconst);
+          procedure addpreprocstack(atyp : preproctyp;a:boolean;const s:string;w:longint);
           procedure elsepreprocstack;
           procedure elsepreprocstack;
           procedure linebreak;
           procedure linebreak;
           procedure readchar;
           procedure readchar;
@@ -634,7 +634,7 @@ implementation
       end;
       end;
 
 
 
 
-    procedure tscannerfile.addpreprocstack(atyp : preproctyp;a:boolean;const s:string;w:tmsgconst);
+    procedure tscannerfile.addpreprocstack(atyp : preproctyp;a:boolean;const s:string;w:longint);
       begin
       begin
         preprocstack:=new(ppreprocstack,init(atyp,((preprocstack=nil) or preprocstack^.accept) and a,preprocstack));
         preprocstack:=new(ppreprocstack,init(atyp,((preprocstack=nil) or preprocstack^.accept) and a,preprocstack));
         preprocstack^.name:=s;
         preprocstack^.name:=s;
@@ -1835,7 +1835,11 @@ exit_label:
 end.
 end.
 {
 {
   $Log$
   $Log$
-  Revision 1.113  2000-06-18 18:05:54  peter
+  Revision 1.114  2000-06-30 20:23:38  peter
+    * new message files layout with msg numbers (but still no code to
+      show the number on the screen)
+
+  Revision 1.113  2000/06/18 18:05:54  peter
     * no binary value reading with % if not fpc mode
     * no binary value reading with % if not fpc mode
     * extended illegal char message with the char itself (Delphi like)
     * extended illegal char message with the char itself (Delphi like)
 
 

+ 159 - 140
compiler/utils/msg2inc.pp

@@ -16,16 +16,17 @@
  **********************************************************************}
  **********************************************************************}
 program msg2inc;
 program msg2inc;
 uses
 uses
-  crc,
   strings;
   strings;
 
 
 const
 const
-  version='0.99.14';
+  version='0.99.15';
 {$ifdef linux}
 {$ifdef linux}
   eollen=1;
   eollen=1;
 {$else}
 {$else}
   eollen=2;
   eollen=2;
 {$endif}
 {$endif}
+  msgparts = 20;
+
 type
 type
   TMode=(M_Char,M_Tex,M_Intel,M_String,M_Renumber);
   TMode=(M_Char,M_Tex,M_Intel,M_String,M_Renumber);
 var
 var
@@ -40,87 +41,27 @@ var
   enumsize,
   enumsize,
   msgsize    : longint;
   msgsize    : longint;
 
 
-function XlatString(Var S : String):boolean;
-{
-  replaces \xxx in string S with #x, and \\ with \ (escaped)
-  which can reduce size of string.
-  Returns false when an error in the line exists
-}
-  Function GetNumber(Position:longint):longint;
-  var
-    C,Value,i : longint;
-  begin
-    I:=0;
-    Value:=0;
-    while i<3 do
-     begin
-       C:=ord(S[Position+I]);
-       if (C>47) and (C<56) then
-        dec(C,48)
-       else
-        begin
-          GetNumber:=-1;
-          exit;
-        end;
-       if I=0 then
-        C:=C shl 6;
-       if I=1 then
-        C:=C SHL 3;
-       inc(Value,C);
-       inc(I);
-     end;
-    GetNumber:=Value;
-  end;
-
-var
-  S2 : String;
-  A,B,Value : longint;
-begin
-  A:=1;
-  B:=1;
-  while A<=Length(S) do
-   begin
-     if (S[A]='\') and (a<length(s)) then
-      begin
-        if S[A+1]='\' then
-         begin
-           S2[B]:='\';
-           Inc(A,2);
-           Inc(B);
-         end
-        else
-         begin
-           Value:=GetNumber(A+1);
-           if Value=-1 then
-            begin
-              XlatString:=false;
-              exit;
-            end;
-           S2[B]:=Chr(Value);
-           inc(B);
-           inc(A,4);
-         end;
-      end
-     else
-      begin
-        S2[B]:=S[A];
-        inc(A);
-        inc(B);
-      end;
-   end;
-  S2[0]:=Chr(B-1);
-  S:=S2;
-  XlatString:=true;
-end;
-
+  msgidxmax    : array[1..msgparts] of longint;
 
 
 procedure LoadMsgFile(const fn:string);
 procedure LoadMsgFile(const fn:string);
 var
 var
   f       : text;
   f       : text;
-  line,i  : longint;
+  error,
+  multiline : boolean;
+  code : word;
+  numpart,numidx,
+  line,i,j,num  : longint;
   ptxt,
   ptxt,
   penum   : pchar;
   penum   : pchar;
+  number,
   s,s1    : string;
   s,s1    : string;
+
+  procedure err(const msgstr:string);
+  begin
+    writeln('error in line ',line,': ',msgstr);
+    error:=true;
+  end;
+
 begin
 begin
   Writeln('Loading messagefile ',fn);
   Writeln('Loading messagefile ',fn);
 {Read the message file}
 {Read the message file}
@@ -130,65 +71,142 @@ begin
   {$I+}
   {$I+}
   if ioresult<>0 then
   if ioresult<>0 then
    begin
    begin
-     WriteLn('*** message file '+fn+' not found ***');
-     exit;
+     WriteLn('fatal error: '+fn+' not found');
+     halt(1);
    end;
    end;
 { First parse the file and count bytes needed }
 { First parse the file and count bytes needed }
+  fillchar(msgidxmax,sizeof(msgidxmax),0);
+  error:=false;
   line:=0;
   line:=0;
+  multiline:=false;
   msgsize:=0;
   msgsize:=0;
   while not eof(f) do
   while not eof(f) do
    begin
    begin
      readln(f,s);
      readln(f,s);
      inc(line);
      inc(line);
-     if not XlatString(S) then
-      S:='';
-     if (s<>'') and not(s[1] in ['#',';','%']) then
+     if multiline then
       begin
       begin
-        i:=pos('=',s);
-        if i>0 then
-         begin
-           inc(msgsize,length(s)-i+1);
-           inc(enumsize,i);
-         end
+        if s=']' then
+         multiline:=false
         else
         else
-         writeln('error in line: ',line,' skipping');
+         inc(msgsize,length(s)+1); { +1 for linebreak }
+      end
+     else
+      begin
+        if (s<>'') and not(s[1] in ['#',';','%']) then
+         begin
+           i:=pos('=',s);
+           if i>0 then
+            begin
+              j:=i+1;
+              if not(s[j] in ['0'..'9']) then
+               err('no number found')
+              else
+               begin
+                 while (s[j] in ['0'..'9']) do
+                  inc(j);
+               end;
+              if j-i-1<>5 then
+               err('number length is not 5');
+              number:=Copy(s,i+1,j-i-1);
+              { update the max index }
+              val(number,num,code);
+              numpart:=num div 1000;
+              numidx:=num mod 1000;
+              { check range }
+              if numpart > msgparts then
+               err('number is to large')
+              else
+               if numidx > msgidxmax[numpart] then
+                msgidxmax[numpart]:=numidx;
+              if s[j+1]='[' then
+               begin
+                 inc(msgsize,j-i);
+                 multiline:=true
+               end
+              else
+               inc(msgsize,length(s)-i+1);
+              inc(enumsize,j);
+            end
+           else
+            err('no = found');
+         end;
       end;
       end;
    end;
    end;
-{ now read the buffer in mem }
+  if multiline then
+   err('still in multiline mode');
+  if error then
+   begin
+     close(f);
+     writeln('aborting');
+     halt(1);
+   end;
+{ alloc memory }
   getmem(msgtxt,msgsize);
   getmem(msgtxt,msgsize);
   ptxt:=msgtxt;
   ptxt:=msgtxt;
   getmem(enumtxt,enumsize);
   getmem(enumtxt,enumsize);
   penum:=enumtxt;
   penum:=enumtxt;
+{ now read the buffer in mem }
   reset(f);
   reset(f);
   while not eof(f) do
   while not eof(f) do
    begin
    begin
      readln(f,s);
      readln(f,s);
-     inc(line);
-     if not XlatString(S) then
-      S[0]:=#0;
-     if (s<>'') and not(s[1] in ['#',';','%']) then
+     if multiline then
       begin
       begin
-        i:=pos('=',s);
-        if i>0 then
+        if s=']' then
          begin
          begin
-           {txt}
-           s1:=Copy(s,i+1,255);
-           { support <lf> for empty lines }
-           if s1='<lf>' then
-            begin
-              s1:='';
-              { update the msgsize also! }
-              dec(msgsize,4);
-            end;
-           move(s1[1],ptxt^,length(s1));
-           inc(ptxt,length(s1));
+           multiline:=false;
+           { overwrite last eol }
+           dec(ptxt);
            ptxt^:=#0;
            ptxt^:=#0;
            inc(ptxt);
            inc(ptxt);
-           {enum}
-           move(s[1],penum^,i-1);
-           inc(penum,i-1);
-           penum^:=#0;
-           inc(penum);
+         end
+        else
+         begin
+           move(s[1],ptxt^,length(s));
+           inc(ptxt,length(s));
+           ptxt^:=#10;
+           inc(ptxt);
+         end;
+      end
+     else
+      begin
+        if (s<>'') and not(s[1] in ['#',';','%']) then
+         begin
+           i:=pos('=',s);
+           if i>0 then
+            begin
+              j:=i+1;
+              while (s[j] in ['0'..'9']) do
+               inc(j);
+              {enum}
+              move(s[1],penum^,i-1);
+              inc(penum,i-1);
+              penum^:='=';
+              inc(penum);
+              number:=Copy(s,i+1,j-i-1);
+              move(number[1],penum^,length(number));
+              inc(penum,length(number));
+              penum^:=#0;
+              inc(penum);
+              { multiline start then no txt }
+              if s[j+1]='[' then
+               begin
+                 s1:=Copy(s,i+1,j-i);
+                 move(s1[1],ptxt^,length(s1));
+                 inc(ptxt,length(s1));
+                 multiline:=true;
+               end
+              else
+               begin
+                 { txt including number }
+                 s1:=Copy(s,i+1,255);
+                 move(s1[1],ptxt^,length(s1));
+                 inc(ptxt,length(s1));
+                 ptxt^:=#0;
+                 inc(ptxt);
+               end;
+            end;
          end;
          end;
       end;
       end;
    end;
    end;
@@ -203,25 +221,15 @@ end;
 procedure WriteEnumFile(const fn,typename:string);
 procedure WriteEnumFile(const fn,typename:string);
 var
 var
   t : text;
   t : text;
-{$ifdef DEBUGCRC}
-  t2 : text;
-{$endif DEBUGCRC}
-  i,crcvalue : longint;
+  i : longint;
   p : pchar;
   p : pchar;
-  s : string;
   start : boolean;
   start : boolean;
 begin
 begin
-  crcvalue:=longint($ffffffff);
   writeln('Writing enumfile '+fn);
   writeln('Writing enumfile '+fn);
 {Open textfile}
 {Open textfile}
   assign(t,fn);
   assign(t,fn);
   rewrite(t);
   rewrite(t);
-{$ifdef DEBUGCRC}
-  assign(t2,'crc.tst');
-  rewrite(t2);
-  Writeln(t2,crcvalue);
-{$endif DEBUGCRC}
-  writeln(t,'type t',typename,'=(');
+  writeln(t,'const');
 {Parse buffer in msgbuf and create indexs}
 {Parse buffer in msgbuf and create indexs}
   p:=enumtxt;
   p:=enumtxt;
   start:=true;
   start:=true;
@@ -230,17 +238,11 @@ begin
      if start then
      if start then
       begin
       begin
         write(t,'  ');
         write(t,'  ');
-        s:=UpCase(strpas(p));
-        crcvalue:=UpdateCRC32(crcvalue,s[1],length(s));
-{$ifdef DEBUGCRC}
-        Writeln(t2,s);
-        Writeln(t2,crcvalue);
-{$endif DEBUGCRC}
         start:=false;
         start:=false;
       end;
       end;
      if p^=#0 then
      if p^=#0 then
       begin
       begin
-        writeln(t,',');
+        writeln(t,';');
         start:=true;
         start:=true;
       end
       end
      else
      else
@@ -249,14 +251,27 @@ begin
       end;
       end;
      inc(p);
      inc(p);
    end;
    end;
-  writeln(t,'end',typename);
-  writeln(t,');');
-  writeln(t,'const');
-  writeln(t,'  MsgCRCValue : longint = ',crcvalue,';');
+  writeln(t,'');
+  { msgtxt size }
+  writeln(t,'  MsgTxtSize = ',msgsize,';');
+  writeln(t,'');
+  { max msg idx table }
+  writeln(t,'  MsgIdxMax : array[1..20] of longint=(');
+  write(t,'    ');
+  for i:=1to 20 do
+   begin
+     write(t,msgidxmax[i]+1);
+     if i<20 then
+      write(t,',');
+     if i=10 then
+      begin
+        writeln(t,'');
+        write(t,'    ');
+      end;
+   end;
+  writeln(t,'');
+  writeln(t,'  );');
   close(t);
   close(t);
-{$ifdef DEBUGCRC}
-  close(t2);
-{$endif DEBUGCRC}
 end;
 end;
 
 
 
 
@@ -354,7 +369,7 @@ begin
         write(t,'#'+chr(ord(p^) div 100+48)+chr((ord(p^) mod 100) div 10+48)+chr(ord(p^) mod 10+48));
         write(t,'#'+chr(ord(p^) div 100+48)+chr((ord(p^) mod 100) div 10+48)+chr(ord(p^) mod 10+48));
         inc(len,3);
         inc(len,3);
       end;
       end;
-     if p^=#0 then
+     if p^ in [#0,#10] then
       start:=true;
       start:=true;
      inc(slen);
      inc(slen);
      inc(p);
      inc(p);
@@ -714,7 +729,7 @@ begin
          'C' : Mode:=M_Char;
          'C' : Mode:=M_Char;
          'R' : Mode:=M_Renumber;
          'R' : Mode:=M_Renumber;
          'V' : begin
          'V' : begin
-                 Writeln('Msg2Inc ',version,' for Free Pascal (C) 1998 Peter Vreman');
+                 Writeln('Msg2Inc ',version,' for Free Pascal (C) 1998-2000 Peter Vreman');
                  Writeln;
                  Writeln;
                  Halt;
                  Halt;
                end;
                end;
@@ -772,7 +787,11 @@ begin
 end.
 end.
 {
 {
   $Log$
   $Log$
-  Revision 1.7  2000-05-26 18:20:38  peter
+  Revision 1.8  2000-06-30 20:23:38  peter
+    * new message files layout with msg numbers (but still no code to
+      show the number on the screen)
+
+  Revision 1.7  2000/05/26 18:20:38  peter
     * fixed wrong var parameter with @
     * fixed wrong var parameter with @
 
 
   Revision 1.6  2000/05/15 13:14:48  pierre
   Revision 1.6  2000/05/15 13:14:48  pierre

+ 50 - 36
compiler/verbose.pas

@@ -75,14 +75,15 @@ procedure SetErrorFlags(const s:string);
 procedure GenerateError;
 procedure GenerateError;
 procedure Internalerror(i:longint);
 procedure Internalerror(i:longint);
 procedure Comment(l:longint;s:string);
 procedure Comment(l:longint;s:string);
-procedure Message(w:tmsgconst);
-procedure Message1(w:tmsgconst;const s1:string);
-procedure Message2(w:tmsgconst;const s1,s2:string);
-procedure Message3(w:tmsgconst;const s1,s2,s3:string);
-procedure MessagePos(const pos:tfileposinfo;w:tmsgconst);
-procedure MessagePos1(const pos:tfileposinfo;w:tmsgconst;const s1:string);
-procedure MessagePos2(const pos:tfileposinfo;w:tmsgconst;const s1,s2:string);
-procedure MessagePos3(const pos:tfileposinfo;w:tmsgconst;const s1,s2,s3:string);
+function  MessagePchar(w:longint):pchar;
+procedure Message(w:longint);
+procedure Message1(w:longint;const s1:string);
+procedure Message2(w:longint;const s1,s2:string);
+procedure Message3(w:longint;const s1,s2,s3:string);
+procedure MessagePos(const pos:tfileposinfo;w:longint);
+procedure MessagePos1(const pos:tfileposinfo;w:longint;const s1:string);
+procedure MessagePos2(const pos:tfileposinfo;w:longint;const s1,s2:string);
+procedure MessagePos3(const pos:tfileposinfo;w:longint;const s1,s2,s3:string);
 
 
 procedure InitVerbose;
 procedure InitVerbose;
 procedure DoneVerbose;
 procedure DoneVerbose;
@@ -242,19 +243,15 @@ end;
 
 
 procedure LoadMsgFile(const fn:string);
 procedure LoadMsgFile(const fn:string);
 begin
 begin
-  if not(msg=nil) then
-   dispose(msg,Done);
-  msg:=new(pmessage,InitExtern(fn,ord(endmsgconst)));
+  if not msg^.LoadExtern(fn) then
+   begin
 {$IFDEF TP}
 {$IFDEF TP}
-  if msg=nil then
-    begin
-        writeln('Fatal: Cannot find error message file.');
-        halt(3);
-    end;
+     writeln('Fatal: Cannot find error message file.');
+     halt(3);
 {$ELSE}
 {$ELSE}
-  if msg=nil then
-   msg:=new(pmessage,Init(@msgtxt,ord(endmsgconst)));
+     msg^.LoadIntern(@msgtxt,msgtxtsize);
 {$ENDIF TP}
 {$ENDIF TP}
+   end;
 end;
 end;
 
 
 
 
@@ -486,70 +483,76 @@ begin
 end;
 end;
 
 
 
 
-procedure Message(w:tmsgconst);
+function  MessagePchar(w:longint):pchar;
 begin
 begin
-  Msg2Comment(msg^.Get(ord(w)));
+  MessagePchar:=msg^.GetPchar(w)
 end;
 end;
 
 
 
 
-procedure Message1(w:tmsgconst;const s1:string);
+procedure Message(w:longint);
 begin
 begin
-  Msg2Comment(msg^.Get1(ord(w),s1));
+  Msg2Comment(msg^.Get(w));
 end;
 end;
 
 
 
 
-procedure Message2(w:tmsgconst;const s1,s2:string);
+procedure Message1(w:longint;const s1:string);
 begin
 begin
-  Msg2Comment(msg^.Get2(ord(w),s1,s2));
+  Msg2Comment(msg^.Get1(w,s1));
 end;
 end;
 
 
 
 
-procedure Message3(w:tmsgconst;const s1,s2,s3:string);
+procedure Message2(w:longint;const s1,s2:string);
 begin
 begin
-  Msg2Comment(msg^.Get3(ord(w),s1,s2,s3));
+  Msg2Comment(msg^.Get2(w,s1,s2));
 end;
 end;
 
 
 
 
-procedure MessagePos(const pos:tfileposinfo;w:tmsgconst);
+procedure Message3(w:longint;const s1,s2,s3:string);
+begin
+  Msg2Comment(msg^.Get3(w,s1,s2,s3));
+end;
+
+
+procedure MessagePos(const pos:tfileposinfo;w:longint);
 var
 var
   oldpos : tfileposinfo;
   oldpos : tfileposinfo;
 begin
 begin
   oldpos:=aktfilepos;
   oldpos:=aktfilepos;
   aktfilepos:=pos;
   aktfilepos:=pos;
-  Msg2Comment(msg^.Get(ord(w)));
+  Msg2Comment(msg^.Get(w));
   aktfilepos:=oldpos;
   aktfilepos:=oldpos;
 end;
 end;
 
 
 
 
-procedure MessagePos1(const pos:tfileposinfo;w:tmsgconst;const s1:string);
+procedure MessagePos1(const pos:tfileposinfo;w:longint;const s1:string);
 var
 var
   oldpos : tfileposinfo;
   oldpos : tfileposinfo;
 begin
 begin
   oldpos:=aktfilepos;
   oldpos:=aktfilepos;
   aktfilepos:=pos;
   aktfilepos:=pos;
-  Msg2Comment(msg^.Get1(ord(w),s1));
+  Msg2Comment(msg^.Get1(w,s1));
   aktfilepos:=oldpos;
   aktfilepos:=oldpos;
 end;
 end;
 
 
 
 
-procedure MessagePos2(const pos:tfileposinfo;w:tmsgconst;const s1,s2:string);
+procedure MessagePos2(const pos:tfileposinfo;w:longint;const s1,s2:string);
 var
 var
   oldpos : tfileposinfo;
   oldpos : tfileposinfo;
 begin
 begin
   oldpos:=aktfilepos;
   oldpos:=aktfilepos;
   aktfilepos:=pos;
   aktfilepos:=pos;
-  Msg2Comment(msg^.Get2(ord(w),s1,s2));
+  Msg2Comment(msg^.Get2(w,s1,s2));
   aktfilepos:=oldpos;
   aktfilepos:=oldpos;
 end;
 end;
 
 
 
 
-procedure MessagePos3(const pos:tfileposinfo;w:tmsgconst;const s1,s2,s3:string);
+procedure MessagePos3(const pos:tfileposinfo;w:longint;const s1,s2,s3:string);
 var
 var
   oldpos : tfileposinfo;
   oldpos : tfileposinfo;
 begin
 begin
   oldpos:=aktfilepos;
   oldpos:=aktfilepos;
   aktfilepos:=pos;
   aktfilepos:=pos;
-  Msg2Comment(msg^.Get3(ord(w),s1,s2,s3));
+  Msg2Comment(msg^.Get3(w,s1,s2,s3));
   aktfilepos:=oldpos;
   aktfilepos:=oldpos;
 end;
 end;
 
 
@@ -557,8 +560,14 @@ end;
 procedure InitVerbose;
 procedure InitVerbose;
 begin
 begin
 { Init }
 { Init }
+  msg:=new(pmessage,Init(20,msgidxmax));
+  if msg=nil then
+   begin
+     writeln('Fatal: MsgIdx Wrong');
+     halt(3);
+   end;
 {$ifndef EXTERN_MSG}
 {$ifndef EXTERN_MSG}
-  msg:=new(pmessage,Init(@msgtxt,ord(endmsgconst)));
+  msg^.LoadIntern(@msgtxt,msgtxtsize);
 {$else}
 {$else}
   LoadMsgFile(exepath+'errore.msg');
   LoadMsgFile(exepath+'errore.msg');
 {$endif}
 {$endif}
@@ -567,6 +576,7 @@ begin
   Status.MaxErrorCount:=50;
   Status.MaxErrorCount:=50;
 end;
 end;
 
 
+
 procedure DoneVerbose;
 procedure DoneVerbose;
 begin
 begin
   if assigned(msg) then
   if assigned(msg) then
@@ -580,7 +590,11 @@ end.
 
 
 {
 {
   $Log$
   $Log$
-  Revision 1.54  2000-05-23 20:32:48  peter
+  Revision 1.55  2000-06-30 20:23:38  peter
+    * new message files layout with msg numbers (but still no code to
+      show the number on the screen)
+
+  Revision 1.54  2000/05/23 20:32:48  peter
     * removed dup msgcrcvalue
     * removed dup msgcrcvalue
 
 
   Revision 1.53  2000/05/15 14:05:40  pierre
   Revision 1.53  2000/05/15 14:05:40  pierre

部分文件因为文件数量过多而无法显示