uBatch.pas 2.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129
  1. unit uBatch;
  2. interface
  3. uses
  4. Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  5. Dialogs, StdCtrls, FileCtrl, uEditor, uHSFParser, MasterUnit;
  6. const
  7. BrowseCaption = 'Select Directory';
  8. type
  9. TBatchEdit = class(TForm)
  10. WorkDirLbl: TLabel;
  11. WorkDirEdit: TEdit;
  12. WorkDirBtn: TButton;
  13. HsfDirLbl: TLabel;
  14. HsfDirEdit: TEdit;
  15. HsfDirBtn: TButton;
  16. GoBtn: TButton;
  17. LogMemo: TMemo;
  18. EnumCheck: TCheckBox;
  19. procedure GoBtnClick(Sender: TObject);
  20. procedure WorkDirBtnClick(Sender: TObject);
  21. procedure HsfDirBtnClick(Sender: TObject);
  22. procedure FormCreate(Sender: TObject);
  23. private
  24. { Déclarations privées }
  25. public
  26. { Déclarations publiques }
  27. Editor: TCEditorForm;
  28. end;
  29. var
  30. BatchEdit: TBatchEdit;
  31. implementation
  32. {$R *.dfm}
  33. procedure TBatchEdit.GoBtnClick(Sender: TObject);
  34. procedure Log(const S: string);
  35. begin
  36. LogMemo.Lines.Add(S);
  37. end;
  38. const
  39. Valids = faAnyFile and not (faDirectory or faSysFile or faHidden);
  40. var
  41. Sr: TSearchRec;
  42. Path, HSFs: string;
  43. F: TFileStream;
  44. begin
  45. DoEnum := EnumCheck.Checked;
  46. LogMemo.Clear;
  47. if Editor = nil then
  48. Exit;
  49. Path := IncludeTrailingPathDelimiter(WorkDirEdit.Text);
  50. HSFs := IncludeTrailingPathDelimiter(HsfDirEdit.Text);
  51. Log('Start processing...');
  52. if FindFirst(Path + '*.h', Valids, Sr) = 0 then
  53. begin
  54. repeat
  55. Log('Found: ' + Sr.Name);
  56. Editor.Clear;
  57. if Editor.ParseH(Path + Sr.Name) then
  58. begin
  59. Log('Processing ' + Sr.Name + ' ...');
  60. if DirectoryExists(HSFs + Sr.Name) then
  61. begin
  62. ClearCompletion(Editor.Lst);
  63. ImportDir(HSFs + Sr.Name, Editor, Editor.GetLine);
  64. Log('Found HSF Files ...');
  65. end;
  66. try
  67. F := TFileStream.Create(Path + ChangeFileExt(Sr.Name, '.ccf'), fmCreate);
  68. try
  69. Editor.SaveToStream(F);
  70. finally
  71. F.Free;
  72. end;
  73. except
  74. Log('Error while saving ccf for ' + Sr.Name);
  75. end;
  76. end;
  77. Editor.Modified := False;
  78. Log('');
  79. until FindNext(Sr) <> 0;
  80. FindClose(Sr);
  81. end;
  82. Editor.Modified := False;
  83. Log('Finished!');
  84. DoEnum := True;
  85. end;
  86. procedure TBatchEdit.WorkDirBtnClick(Sender: TObject);
  87. var
  88. Dir: string;
  89. begin
  90. Dir := WorkDirEdit.Text;
  91. if SelectDirectory(BrowseCaption, '', Dir) then
  92. WorkDirEdit.Text := Dir;
  93. end;
  94. procedure TBatchEdit.HsfDirBtnClick(Sender: TObject);
  95. var
  96. Dir: string;
  97. begin
  98. Dir := HsfDirEdit.Text;
  99. if SelectDirectory(BrowseCaption, '', Dir) then
  100. HsfDirEdit.Text := Dir;
  101. end;
  102. procedure TBatchEdit.FormCreate(Sender: TObject);
  103. var
  104. Folder: string;
  105. begin
  106. Folder := IncludeTrailingPathDelimiter(TIGCCFolder);
  107. WorkDirEdit.Text := Folder + CIncludeLocation;
  108. Folder := Folder + 'Src\doc\System\Include';
  109. if DirectoryExists(Folder) then
  110. HsfDirEdit.Text := Folder
  111. else
  112. HsfDirEdit.Text := TIGCCFolder;
  113. end;
  114. end.