Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Получить результат выполнения команды консоли? [D7, 2003]


Страницы:   1 2

Vyacheslav ©   (2011-11-26 05:03:00) 

Здравствуйте.
Хотелось бы не просто запустить консольное приложение на выполнение, например:

dir:=ExtractFilePath(ParamStr(0))+'ffmpeg.exe';
params:=' -i test.flv';
ShellExecute(Handle,  PWideChar('open'), PWideChar(dir), Pwidechar(params), PWideChar(''), SW_SHOW);

но и получить результат работы консоли, например в TMemo..
Может кто-то подскажет как это реализовать?


Anatoly Podgoretsky   (2011-11-27 08:12:00) [1]

Хотя если не понимаешь 60% то это не твое, тебе, как минимум, противопоказано использовать ХЕ2


Anatoly Podgoretsky   (2011-11-27 08:08:00) [2]

> Vyacheslav  (26.11.2011 23:13:18)  [18]

Это код для Д7 для ХЕ2 надо дорабатывать


Германн   (2011-11-27 03:12:00) [3]


> Но не писал бы я в ветке для новичков, если бы понимал,
> что в этом модуле делается хотябы на 60%.

А вот и не надо было его использовать, если не понимаешь.
Иначе ССЗБ!


sniknik   (2011-11-27 02:27:00) [4]

> А проблему решил, воспользовавшись Delphi 7. Родная среда!
оно у тебя с самого начало было...
> Получить результат выполнения команды консоли? [ D7, 2003]
или опять мозг парил?

> Начну сначала!
> 1) Windows 7 64 bit, Intel i5, Delphi XE2
ну, точно... блин.


Vyacheslav   (2011-11-27 01:14:00) [5]

Вобщем, вызвало подозрения.. Но не писал бы я в ветке для новичков, если бы понимал, что в этом модуле делается хотябы на 60%.

А проблему решил, воспользовавшись Delphi 7. Родная среда!

Сам модуль не асилил переделывать, не для моих знаний задача Было бы интересно узнать, в чём проблема в совместимости этих версий.


Германн   (2011-11-27 00:23:00) [6]


> Vyacheslav   (26.11.11 23:13) [18]
>
> Начну сначала!
>
> 2) unit uZpRunConsoleApp; не скомпилировался сразу:
> szCurrentDir := PCharOrNil(Trim(aCurrentDir));
> [DCC Error] uZpRunConsoleApp.pas(617): E2010 Incompatible
> types: 'PWideChar' and 'PAnsiChar'
> Меняю на
> szCurrentDir := PChar(Trim(aCurrentDir));
> Компилится.
>

Ничего не вызвало подозрений?
Ошибка сообщала о несовместимых типах. Изменили функцию в исходнике стороннего компонента (как я подозреваю), но типы остались прежними. Ошибка на этапе компиляции исчезла. А вот что после этого можно сказать о работоспособности компонента, который разработан кем-то там ещё?


Simon   (2011-11-26 23:22:00) [7]


> Delphi XE2

О так модуль-то старый. Наверное его надо править под юникодовскую дельфю.


Amoeba_   (2011-11-26 23:20:00) [8]


> получить результат работы консоли, например в TMemo..

Здесь:
http://www.delphikingdom.com/asp/viewitem.asp?catalogid=801


Simon   (2011-11-26 23:20:00) [9]

На какой строке вылетает?


Vyacheslav   (2011-11-26 23:13:00) [10]

Начну сначала!

1) Windows 7 64 bit, Intel i5, Delphi XE2

2) unit uZpRunConsoleApp; не скомпилировался сразу:
szCurrentDir := PCharOrNil(Trim(aCurrentDir));
[DCC Error] uZpRunConsoleApp.pas(617): E2010 Incompatible types: 'PWideChar' and 'PAnsiChar'
Меняю на
szCurrentDir := PChar(Trim(aCurrentDir));
Компилится.

3) Добаляю модуль в проект, добавляю Memo1 и Button1 на форму..

4) в код кнопки пишу:

procedure TForm1.Button1Click(Sender: TObject);
begin
 ExecuteConsoleApp('ffmpeg.exe -i', 'c:\bin\', Memo1.Lines);
end;


5) При нажатии на Button1 Вылетает ошибка:
Access violation at address 7519B763 in module 'kernell32.dll'. Write of address 00515754.

--------------
В случае с ExecuteConsoleApp('cmd', '', Memo1.Lines);
Access violation at address 7519B763 in module 'kernell32.dll'. Write of address 0051578A


Vyacheslav   (2011-11-26 23:04:00) [11]

Дк та же самая ошибка в случае с ExecuteConsoleApp('ffmpeg.exe -i', 'c:\bin\', Memo1.Lines);


sniknik   (2011-11-26 22:34:00) [12]

> в данном случае - это ffmpeg.exe
так чего ты нам с cmd мозг "паришь"?

> ExecuteConsoleApp('ffmpeg.exe -i', 'c:\bin\', Memo1.Lines);
иии....?
все хорошо? ну хорошо тогда.


Vyacheslav   (2011-11-26 21:49:00) [13]

ExecuteConsoleApp('ffmpeg.exe -i', 'c:\bin\', Memo1.Lines);


Vyacheslav   (2011-11-26 21:38:00) [14]

Ох, камрады, запутался окончательно...

> Возьми любое или напиши 32-разрядное консольное приложение для теста.
Вобщем-то я и хочу запустить 32х разрядное приложение, в данном случае - это ffmpeg.exe


Anatoly Podgoretsky   (2011-11-26 21:26:00) [15]

> Омлет  (26.11.2011 21:16:12)  [12]

Системная переменная
PROCESSOR_ARCHITECTURE


Омлет   (2011-11-26 21:16:00) [16]


> Но вот только как проверить cmd.exe разрядность

Возьми любое или напиши 32-разрядное консольное приложение для теста.


Омлет   (2011-11-26 21:15:00) [17]


> почему то нормально закрыть программу не дает, не охота
> разбираться почему, но ошибок на старте нет.


Надо вызвать StopConsoleApp для остановки процесса.


Vyacheslav   (2011-11-26 19:03:00) [18]

> а приложение 32 разрядное...
Да, 32х разрядное. Пробовал и 64, тоже самое, только адреса ошибок больше!

>> cmd есть, проверил
> 32 разрядная версия?
А вот это хороший вопрос! Но вот только как проверить cmd.exe разрядность и может ли это как-то помочь направить на решение проблемы?


sniknik   (2011-11-26 18:34:00) [19]

> Windows 7 64 bit
а приложение 32 разрядное...

> cmd есть, проверил
32 разрядная версия? я как то столкнулся в 64-х винде не было 32-х разрядного IE ... ну вернее не самого, а части объектов COM, ну те, что в TWebBrowser-е используются. печать из него не работала... а так пожалуйста запускай IE печатает, любой причем.


Vyacheslav   (2011-11-26 16:06:00) [20]

Как искать причину?
Какие в какую сторону крутить поисковик?


Страницы:   1 2

Наверх

Титульная страница Поиск, карта сайта Написать письмо