Вызов fpc.exe из Deplhi

Вопросы программирования на Free Pascal, использования компилятора и утилит.

Модератор: Модераторы

Вызов fpc.exe из Deplhi

Сообщение Elf » 02.05.2009 19:43:27

Никак не могу сделать вызов по типу 'path1\fpc.exe "path2\file.pas" > "path3\log.txt"' на Delphi.

Пробую через CreateProcess:
CreateProcess(nil,
PChar(cmd),
@SeAttr,@SeAttr,false,NORMAL_PRIORITY_CLASS,
nil,
PChar(curdir),
StInfo, ProcInfo);
Где cmd - и есть строка вида 'path1\fpc.exe "path2\file.pas" > "path3\log.txt"', пути могут содержать русские буквы, быть на разных дисках. curdir = path1

В чем косяк: при таком вызове он почему-то пытается скомпилить log.txt. Если запускать 'path1\fpc.exe "path2\file.pas"' - то все нормально, но логично что вывод он ведет на консоль.

Подскажите, что за баг такой, и как его исправить?
Elf
незнакомец
 
Сообщения: 2
Зарегистрирован: 02.05.2009 19:26:43

Re: Вызов fpc.exe из Deplhi

Сообщение shade » 02.05.2009 20:37:24

Перенаправление ввода-вывода ( > ) делает командная оболочка.
Читайте внимательнее описание CreateProcess, там написано как перенаправить вывод.

В общих чертах:
1. нужно открыть файл FileHandle := CreateFile(...)
2. указать FileHandle как стандартный вывод при вызове CreateProcess
см. структура STARTUPINFO, в частности её поле hStdOutput
Аватара пользователя
shade
энтузиаст
 
Сообщения: 879
Зарегистрирован: 21.02.2006 20:15:48
Откуда: http://shamangrad.net/

Re: Вызов fpc.exe из Deplhi

Сообщение Elf » 02.05.2009 21:59:25

Спасибо, во всем разобрался!
Elf
незнакомец
 
Сообщения: 2
Зарегистрирован: 02.05.2009 19:26:43

Re: Вызов fpc.exe из Deplhi

Сообщение Vadim » 03.05.2009 05:58:12

Elf
Может быть стоит поступить проще и применить ShellExecute()?
Код: Выделить всё
ShellExecute(0, 'open', 'cmd.exe', 'path1\fpc.exe "path2\file.pas" > "path3\log.txt"', NIL, SW_HIDE);
Vadim
долгожитель
 
Сообщения: 4112
Зарегистрирован: 05.10.2006 08:52:59
Откуда: Красноярск


Вернуться в Free Pascal Compiler

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 6

Рейтинг@Mail.ru