Changeset 28 for trunk/Compiler/UCompiler.pas
- Timestamp:
- Feb 13, 2012, 12:26:12 PM (13 years ago)
- Location:
- trunk
- Files:
-
- 2 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk
- Property svn:ignore
-
old new 4 4 backup 5 5 LazFuckIDE 6 compiled
-
- Property svn:ignore
-
trunk/Compiler/UCompiler.pas
r25 r28 6 6 7 7 uses 8 Classes, SysUtils, StrUtils, Registry, URegistry, SpecializedList; 8 Classes, SysUtils, StrUtils, Registry, URegistry, SpecializedList, 9 FileUtil, Process; 9 10 10 11 type … … 26 27 SourceExtension: string; 27 28 CompiledExtension: string; 29 ProjectFileName: string; 28 30 constructor Create; virtual; 29 31 procedure OptimizeSource; 30 32 procedure Compile; virtual; 33 procedure CompileToFile; virtual; 34 procedure Run; virtual; 31 35 end; 32 36 … … 39 43 40 44 45 resourcestring 46 SCompilerNotFound = 'Compiler "%s" not found'; 47 SCompiledFileNotFound = 'Program compiled file "%s" not found'; 48 49 41 50 implementation 51 42 52 43 53 { TCompilerList } … … 99 109 end; 100 110 111 procedure TBrainFuckCompiler.CompileToFile; 112 var 113 Process: TProcess; 114 CompiledFile: string; 115 begin 116 CompiledFile := ExtractFilePath(ProjectFileName) + 117 'compiled' + DirectorySeparator + Name + DirectorySeparator + 118 ExtractFileNameOnly(ProjectFileName) + SourceExtension; 119 ForceDirectoriesUTF8(ExtractFilePath(CompiledFile)); 120 with TStringList.Create do 121 try 122 Text := Output; 123 SaveToFile(CompiledFile); 124 finally 125 Free; 126 end; 127 if FileExistsUTF8(CompilerPath) then 128 try 129 Process := TProcess.Create(nil); 130 Process.CurrentDirectory := ExtractFilePath(CompilerPath); 131 Process.CommandLine := '"' + CompilerPath + '" "' + CompiledFile + '"'; 132 Process.Options := [poWaitOnExit]; 133 Process.Execute; 134 finally 135 Process.Free; 136 end else raise Exception.Create(Format(SCompilerNotFound, [CompilerPath])); 137 end; 138 139 procedure TBrainFuckCompiler.Run; 140 var 141 CompiledFile: string; 142 Process: TProcess; 143 begin 144 CompiledFile := ExtractFilePath(ProjectFileName) + 145 'compiled' + DirectorySeparator + Name + DirectorySeparator + 146 ExtractFileNameOnly(ProjectFileName) + CompiledExtension; 147 if FileExistsUTF8(CompiledFile) then 148 try 149 Process := TProcess.Create(nil); 150 Process.CommandLine := '"' + CompiledFile + '"'; 151 Process.Options := [poWaitOnExit]; 152 Process.Execute; 153 finally 154 Process.Free; 155 end else raise Exception.Create(Format(SCompiledFileNotFound, [CompiledFile])); 156 end; 157 101 158 102 159
Note:
See TracChangeset
for help on using the changeset viewer.