home *** CD-ROM | disk | FTP | other *** search
- program MakeCls;
-
- { Program copyright (c) 1995 by Charles Calvert }
- { Project Name: EXPLORER }
-
- uses
- Classes,
- WinCrt,
- WinDos,
- StrBox,
- Strings;
-
-
- function IsUnique(ClassName: String; var SList: TStringList): Boolean;
- var
- Dup: Boolean;
- i: Integer;
- begin
- Dup := False;
- for i := 0 to SList.Count - 1 do begin
- if ClassName = GetFirstWord(SList.Strings[i]) then begin
- Dup := True;
- break;
- end;
- end;
- IsUnique := Dup;
- end;
-
- function Parse(var OutList: Text; S, FName: String; var SList: TStringList) : String;
- var
- Temp, Answer, ClassName, Parent: String;
- Len, OffSet: Integer;
- T: Boolean;
- Position: Integer;
- begin
- Temp := '';
- OffSet := Pos('= class(', S);
- if OffSet > 0 then begin
- Temp := CleanString(S);
- ClassName := GetFirstWord(Temp);
- Len := Length(Temp) - (OffSet + 6);
- Move(Temp[OffSet + 6], Parent[1], Len);
- Parent[0] := Chr(Len);
- Position := Pos(')', Parent);
- if Position <> 0 then Parent[0] := Chr(Position);
- If Parent[Length(Parent)] = ')' then
- Dec(Parent[0]);
- {WriteLn(OutList, '"', ClassName, '", ', '"', Parent, '"', ', "', FName, '"');}
- {WriteLn(OutList, LeftSet(ClassName, 25, T), LeftSet(Parent, 25, T), FName);}
- Answer := LeftSet(ClassName, 25, T) + LeftSet(Parent, 25, T) + FName;
- if not IsUnique(ClassName, SList) then
- SList.Add(Answer);
- end;
- Parse := Temp;
- end;
-
- procedure ProcessList(var OutList: Text; SubDir, FName: String; var SList: TStringList);
- var
- F: Text;
- Temp, S: String;
- begin
- Assign(F, SubDir + FName);
- Reset(F);
- while not EOF(F) do begin
- ReadLn(F, S);
- Temp := Parse(OutList, S, FName, SList);
- end;
- Close(F);
- end;
-
- procedure FindDir(var OutList: Text;
- SubDir: String;
- var TotalFiles: Integer;
- var SList: TStringList);
- var
- SR: TSearchRec;
- SDir: array[0..100] of Char;
- begin
- StrPCopy(SDir, SubDir);
- StrCat(SDir, '*.pas');
- FindFirst(SDir, faArchive, SR);
- while DosError = 0 do begin
- Inc(TotalFiles);
- FindNext(SR);
- GotoXY(1,1);
- WriteLn('Processing: ', SR.Name, ' ');
- GotoXY(1,2);
- WriteLn('Files Parsed: ', TotalFiles, ' ');
- ProcessList(OutList, SubDir, StrPas(SR.Name), SList);
- end;
- end;
-
- const
- SubDir1 = 'c:\appbuild\rtl\vcl\';
- SubDir2 = 'c:\appbuild\rtl\sys\';
-
- var
- OutList: Text;
- TotalFiles: Integer;
- SList: TStringList;
-
- begin
- ClrScr;
- TotalFiles := 0;
- SList := TStringList.Create;
- Assign(OutList, 'e:\delphi\getclass\class1.lst');
- ReWrite(OutList);
- FindDir(OutList, SubDir1, TotalFiles, SList);
- FindDir(OutList, SubDir2, TotalFiles, SList);
- Close(OutList);
- SList.SaveToFile('e:\delphi\getclass\class1.lst');
- SList.Free;
- end.
-