Форум по Delphi программированию

Delphi Sources



Вернуться   Форум по Delphi программированию > Все о Delphi > Программа и интерфейс
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

 
 
Опции темы Поиск в этой теме Опции просмотра
  #12  
Старый 14.04.2013, 13:16
Аватар для Uniq!
Uniq! Uniq! вне форума
Местный
 
Регистрация: 29.09.2010
Сообщения: 539
Версия Delphi: Delphi XE3
Репутация: 374
По умолчанию

Для будущих поколений: ссылка к прочтению, и куча инфы о том, как это всё преобразовывать.

Проблема решена.
Обязательным условием должно быть то, что lpCommandLine - переменная (write acessable), а не константа. Функцией
Код:
UniqueString(CommandLine); 
мы это условие выполняем, а преобразование к PWideChar делаем внутри вызову CreateProcess:

Код:
CreateProcessW(nil, PWideChar(CommandLine), nil, nil, false,
    CREATE_NEW_CONSOLE or NORMAL_PRIORITY_CLASS, nil, nil, si, pi);

Новая проблема: в output и error пусто.

Передаю я ей в качестве CommabdLine следующее:
C:\Ruby200\bin\ruby.exe c:/Uni1.rb

в Unit1.rb лежит
Код:
puts 'hello world'
Вернуть должно hello world


Проблема тут:
Код:
Stream := TMemoryStream.Create;
    try
      while true do
        if ReadFile(hPipeOutputRead, szBuffer, 256, dwNumberOfBytesRead, nil)
        then
          Stream.Write(szBuffer, dwNumberOfBytesRead)
        else
          break;
      Stream.Position := 0;
      Output.LoadFromStream(Stream);
    finally
      Stream.Free;
    end;

Внутрь условия не заходит, т.е. ReadFile возвращает False;причина я так думаю всё в тех же
Код:
szBuffer: array [0 .. 256] of Char;

GetLastError вернул
Код:
ERROR_BROKEN_PIPE
109 (0x6D)

The pipe has been ended.

Разобрался! Ошибка означает, что приложение уже закрылось Т.е. запускать ruby.exe надо с ключём /K
Код:
  ExecConsoleApp('cmd /K ruby c:/Unit1.rb', Output, error);

Последний раз редактировалось Uniq!, 14.04.2013 в 14:08.
Ответить с цитированием
 


Delphi Sources

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 03:34.


 

Сайт

Форум

FAQ

Соглашения

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2025