@@ -19,68 +19,75 @@ implementation
1919
2020procedure Diagnostics ;
2121var i, CharIndex, ChildIndex: Integer;
22- DiagFile: textfile ;
22+ DiagFile: ITextFile ;
2323begin
2424
25- AssignFile(DiagFile, ChangeFileExt( UnitName[1 ].Name , ' .txt' ) );
26- Rewrite(DiagFile);
25+ DiagFile:=TFileSystem.CreateTextFile;
26+ DiagFile.Assign(ChangeFileExt( UnitName[1 ].Name , ' .txt' ) );
27+ DiagFile.Rewrite;
2728
28- WriteLn(DiagFile);
29- WriteLn(DiagFile, ' Token list: ' );
30- WriteLn(DiagFile);
31- WriteLn(DiagFile, ' #' : 6 , ' Unit' : 30 , ' Line' : 6 , ' Token' : 30 );
32- WriteLn(DiagFile);
29+ DiagFile.WriteLn;
30+ DiagFile.WriteLn(' Token list: ' );
31+ DiagFile.WriteLn;
32+ // DiagFile.WriteLn('#' : 6, 'Unit': 30, 'Line': 6, 'Token': 30);
33+ DiagFile.Write(' # ' ,6 ).Write( ' Unit' ,30 ).Write( ' Line' ,6 ).Write(' Token' ,30 ).WriteLn;
34+
35+ DiagFile.WriteLn;
3336
3437 for i := 1 to NumTok do
3538 begin
36- Write(DiagFile, i: 6 , UnitName[Tok[i].UnitIndex].Name : 30 , Tok[i].Line: 6 , GetSpelling(i): 30 );
39+ // DiagFile.Write(i: 6, UnitName[Tok[i].UnitIndex].Name: 30, Tok[i].Line: 6, GetSpelling(i): 30);
40+ DiagFile.Write(i,6 ).Write( UnitName[Tok[i].UnitIndex].Name , 30 ).Write(Tok[i].Line, 6 ).Write(GetSpelling(i), 30 ).WriteLn;
3741 if Tok[i].Kind = INTNUMBERTOK then
38- WriteLn(DiagFile, ' = ' , Tok[i].Value )
42+ DiagFile. WriteLn(' = ' , IntToStr( Tok[i].Value ) )
3943 else if Tok[i].Kind = FRACNUMBERTOK then
40- WriteLn(DiagFile, ' = ' , Tok[i].FracValue: 8 : 4 )
44+ // DiagFile.WriteLn(' = ', Tok[i].FracValue: 8: 4)
45+ DiagFile.WriteLn(' = ' , FloatToStr(Tok[i].FracValue))
4146 else if Tok[i].Kind = IDENTTOK then
42- WriteLn(DiagFile, ' = ' , Tok[i].Name )
47+ DiagFile. WriteLn(' = ' , Tok[i].Name )
4348 else if Tok[i].Kind = CHARLITERALTOK then
44- WriteLn(DiagFile, ' = ' , Chr(Tok[i].Value ))
49+ DiagFile. WriteLn(' = ' , Chr(Tok[i].Value ))
4550 else if Tok[i].Kind = STRINGLITERALTOK then
4651 begin
47- Write(DiagFile, ' = ' );
52+ DiagFile. Write(' = ' );
4853 for CharIndex := 1 to Tok[i].StrLength do
49- Write(DiagFile, StaticStringData[Tok[i].StrAddress - CODEORIGIN + (CharIndex - 1 )]);
50- WriteLn( DiagFile) ;
54+ DiagFile. Write( StaticStringData[Tok[i].StrAddress - CODEORIGIN + (CharIndex - 1 )],- 1 );
55+ DiagFile.WriteLn ;
5156 end
5257 else
53- WriteLn( DiagFile) ;
58+ DiagFile.WriteLn ;
5459 end ;// for
5560
56- WriteLn( DiagFile) ;
57- WriteLn(DiagFile, ' Identifier list: ' );
58- WriteLn( DiagFile) ;
59- WriteLn( DiagFile, ' #' : 6 , ' Block' : 6 , ' Name' : 30 , ' Kind' : 15 , ' Type' : 15 , ' Items/Params' : 15 , ' Value/Addr' : 15 , ' Dead' : 5 ) ;
60- WriteLn( DiagFile) ;
61+ DiagFile.WriteLn ;
62+ DiagFile. WriteLn( ' Identifier list: ' );
63+ DiagFile.WriteLn ;
64+ DiagFile.Write( ' #' , 6 ).Write( ' Block' , 6 ).Write( ' Name' , 30 ).Write( ' Kind' , 15 ).Write( ' Type' , 15 ).Write( ' Items/Params' , 15 ).Write( ' Value/Addr' , 15 ).Write( ' Dead' , 5 ).WriteLn ;
65+ DiagFile.WriteLn ;
6166
6267 for i := 1 to NumIdent do
6368 begin
64- Write(DiagFile, i: 6 , Ident[i].Block: 6 , Ident[i].Name : 30 , Spelling[Ident[i].Kind]: 15 );
65- if Ident[i].DataType <> 0 then Write(DiagFile, Spelling[Ident[i].DataType]: 15 ) else Write(DiagFile, ' N/A' : 15 );
66- Write(DiagFile, Ident[i].NumAllocElements: 15 , IntToHex(Ident[i].Value , 8 ): 15 );
67- if (Ident[i].Kind in [PROCEDURETOK, FUNCTIONTOK, CONSTRUCTORTOK, DESTRUCTORTOK]) and not Ident[i].IsNotDead then WriteLn(DiagFile, ' Yes' : 5 ) else WriteLn(DiagFile, ' ' : 5 );
69+ DiagFile.Write( i, 6 ).Write( Ident[i].Block, 6 ).Write( Ident[i].Name , 30 ).Write( Spelling[Ident[i].Kind], 15 );
70+ if Ident[i].DataType <> 0 then DiagFile.Write( Spelling[Ident[i].DataType], 15 ) else DiagFile.Write( ' N/A' , 15 );
71+ DiagFile.Write( Ident[i].NumAllocElements, 15 ).Write( IntToHex(Ident[i].Value , 8 ), 15 );
72+ if (Ident[i].Kind in [PROCEDURETOK, FUNCTIONTOK, CONSTRUCTORTOK, DESTRUCTORTOK]) and not Ident[i].IsNotDead
73+ then DiagFile.Write( ' Yes' , 5 ) else DiagFile.Write(' ' , 5 );
6874 end ;
6975
70- WriteLn(DiagFile);
71- WriteLn(DiagFile, ' Call graph: ' );
72- WriteLn(DiagFile);
76+ DiagFile.WriteLn;
77+ DiagFile.WriteLn;
78+ DiagFile.WriteLn( ' Call graph: ' );
79+ DiagFile.WriteLn;
7380
7481 for i := 1 to NumBlocks do
7582 begin
76- Write(DiagFile, i: 6 , ' ---> ' );
83+ DiagFile. Write( i, 6 ).Write( ' ---> ' );
7784 for ChildIndex := 1 to CallGraph[i].NumChildren do
78- Write(DiagFile, CallGraph[i].ChildBlock[ChildIndex]: 5 );
79- WriteLn( DiagFile) ;
85+ DiagFile. Write( CallGraph[i].ChildBlock[ChildIndex], 5 );
86+ DiagFile.WriteLn ;
8087 end ;
8188
82- WriteLn( DiagFile) ;
83- CloseFile( DiagFile) ;
89+ DiagFile.WriteLn ;
90+ DiagFile.Close ;
8491
8592end ;
8693
0 commit comments