PDA

Просмотр полной версии : [Вопрос] И снова вопрос по pawncc.exe C#



MuhammadPawn
23.07.2017, 12:37
Добрый день
не давно на форуме создавал тему как скомпилировать определённый файл
Дело в том что при нормальной компиляции всё пишет нормально
Но если в коде допустить ошибку то по чему-то в диалог возвращает токо количество ошибок
Как можно это исправить?

Process p = new Process();
p.StartInfo.UseShellExecute = false;
p.StartInfo.RedirectStandardOutput = true;
p.StartInfo.FileName = @"pawno\pawncc.exe";
p.StartInfo.Arguments = string.Format("-iinclude {0} -;+ -v2 -d3 -\\)+", files);
p.Start();
string output = p.StandardOutput.ReadToEnd();
MessageBox.Show(output);

https://pp.userapi.com/c836727/v836727235/5478b/_pFen_6q7Rs.jpg

Fallen A.
23.07.2017, 15:13
Что говорит свойство StandardError?

- - - Добавлено - - -

Как вариант. Писал на коленке.


Process ProcessCompile = new Process();
ProcessStartInfo ProcessCompileInfo = new ProcessStartInfo(@"pawno\pawncc.exe", string.Format("-iinclude {0} -;+ -r -w 203 -d3 -O2 -\\)+", files) );

ProcessCompileInfo.UseShellExecute = false;
ProcessCompileInfo.RedirectStandardError = true;
ProcessCompile.StartInfo = ProcessCompileInfo;
ProcessCompile.Start();

StreamReader reader = ProcessCompile.StandardError;
Console.WriteLine( reader.ReadLine() );
reader.Close();

MuhammadPawn
23.07.2017, 18:12
Что говорит свойство StandardError?

- - - Добавлено - - -

Как вариант. Писал на коленке.


Process ProcessCompile = new Process();
ProcessStartInfo ProcessCompileInfo = new ProcessStartInfo(@"pawno\pawncc.exe", string.Format("-iinclude {0} -;+ -r -w 203 -d3 -O2 -\\)+", files) );

ProcessCompileInfo.UseShellExecute = false;
ProcessCompileInfo.RedirectStandardError = true;
ProcessCompile.StartInfo = ProcessCompileInfo;
ProcessCompile.Start();

StreamReader reader = ProcessCompile.StandardError;
Console.WriteLine( reader.ReadLine() );
reader.Close();

а как исправить вот к примеру у меня есть путь с русским именем


C:\Users\Виктор\Desktop\pawntest.pwn

то он пишет типо нет файла pawn.p закинул на диск C и всё норм компилировало

Fallen A.
23.07.2017, 18:20
С путями сложнее.

По теме: ошибки теперь показывает?

MuhammadPawn
23.07.2017, 18:31
С путями сложнее.

По теме: ошибки теперь показывает?

Ошибки да но с путём проблема ;c

Seregamil
23.07.2017, 19:03
А никак вы путь не сделаете, если там используется кириллица. Это багфитча такая.
Можно клонировать файл в директорию без кириллицы и там работать с ним.
Если можно передать в pawncc текст скрипта - еще проще, считываете в кодировке 1251, благо при считывании пути к файлу File.ReadAllText не ругается на кириллицу в пути.

Fallen A.
23.07.2017, 19:57
А никак вы путь не сделаете, если там используется кириллица. Это багфитча такая.
Можно клонировать файл в директорию без кириллицы и там работать с ним.
Если можно передать в pawncc текст скрипта - еще проще, считываете в кодировке 1251, благо при считывании пути к файлу File.ReadAllText не ругается на кириллицу в пути.

Не знаю, как работает этот самый "путь", но у c# с путями проблем нет. Можно делать через temp файл.

MuhammadPawn
24.07.2017, 04:21
Я так понимаю есть токо решение перемещать файл к примеру на диск C а после компиляции обратно по указаному пути
P.S щас в самом компиляторе увидел что за место русского пути он пишет на какой-то другой кодировке (CP1252)

и да если компилировать с ошибками в коде всё норм ошибки показывает вот если без ошибок скомпилировать
https://pp.userapi.com/c841129/v841129848/a8a2/tF53S_5n1Ak.jpg

Щас ещё нашол кое-что если к примеру в папке которой есть пробел он считает за файл
к примеру идёт Pawn Test\test.pwn то он в компиляторе пишет первое слово из папки

MuhammadPawn
24.07.2017, 12:12
Исправил путь делаю через \"{0}\"

Fallen A.
24.07.2017, 21:51
Ощущение, будто мы здесь все должны делать за тебя.