Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 30.01.2013, 16:14   #1
Anonymous1235
Пользователь
 
Регистрация: 30.01.2013
Сообщений: 10
По умолчанию Работа с консолью в GUI приложении

Тема давно избитая, однако недавно столкнулся с проблемой при вводе команд. WriteFile работает нормально и даже возвращает кол-во записанных байт, однако ничего не происходит. В чём проблема?

P.S. Компилирую в Delphi XE3 под Win 7 x64.
Вложения
Тип файла: rar GUI_konsol.rar (2.2 Кб, 29 просмотров)
Anonymous1235 вне форума Ответить с цитированием
Старый 31.01.2013, 17:47   #2
Anonymous1235
Пользователь
 
Регистрация: 30.01.2013
Сообщений: 10
По умолчанию

Неужели никто не поможет?
Хотя бы дайте знать в какую сторону копать.
Anonymous1235 вне форума Ответить с цитированием
Старый 31.01.2013, 17:53   #3
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Вот где-то читал что пока пайп не закрыт до адресата его содержимое не дойдет...
Вообще-то могу ошибатся...

http://delphiworld.narod.ru/base/console_in_out.html
Может поможет.

P.S.
Цитата:
WriteFile(Pipes[IN_WRITE], Buf, Length(stdInput), i, nil);

// Хендл записи в StdIn надо закрыть - иначе выполняемая программа
// может не прочитать или прочитать не весь StdIn.

CloseHandle(Pipes[IN_WRITE]);
Окак!
I'm learning to live...

Последний раз редактировалось Stilet; 31.01.2013 в 18:04.
Stilet вне форума Ответить с цитированием
Старый 31.01.2013, 18:50   #4
Slym
Участник клуба
 
Регистрация: 07.12.2011
Сообщений: 1,025
По умолчанию

некоторые команды ждут CTRL+Z типа EOF
вроде #26 не помню
Не стесняемся, плюсуем!
Slym вне форума Ответить с цитированием
Старый 31.01.2013, 21:02   #5
Человек_Борща
Старожил
 
Аватар для Человек_Борща
 
Регистрация: 30.12.2009
Сообщений: 11,426
По умолчанию

Может разрабы налажали?
Человек_Борща вне форума Ответить с цитированием
Старый 31.01.2013, 23:35   #6
Somebody
Участник клуба
 
Регистрация: 08.10.2007
Сообщений: 1,185
По умолчанию

В ReadStrFromChild для chBuf сначала память выделяется вызовом New, а освобождается - FreeMem.
После CreateProcess надо бы закрыть хэндл потока, если не нужен.
А основная ошибка - что-то ты в WriteToChild перемудрил с PAnsiString. В таком виде в WriteFile надо передавать chBuf^[1]. А лучше вообще замени на AnsiString без указателей.
Somebody вне форума Ответить с цитированием
Старый 01.02.2013, 13:52   #7
Anonymous1235
Пользователь
 
Регистрация: 30.01.2013
Сообщений: 10
По умолчанию

Somebody,
пробовал менять на AnsiChar и убирать лишние преобразования. Толку нету.
В общем решил написать всё с нуля и полностью разобраться с пайпами.
P.S. Код в архиве не мой. На форуме, где его выложили, писали что он полностью рабочий.
Anonymous1235 вне форума Ответить с цитированием
Старый 02.02.2013, 11:39   #8
Anonymous1235
Пользователь
 
Регистрация: 30.01.2013
Сообщений: 10
По умолчанию

Проблема была в IDE. После переустановки заработало нормально.
UPD: Написал небольшой модуль, для работы с консолями. Может кому-нибудь понадобиться.
Вложения
Тип файла: rar Console.rar (2.0 Кб, 34 просмотров)

Последний раз редактировалось Anonymous1235; 02.02.2013 в 11:41.
Anonymous1235 вне форума Ответить с цитированием
Старый 05.08.2014, 14:23   #9
aLLeXUs
Новичок
Джуниор
 
Регистрация: 05.08.2014
Сообщений: 2
По умолчанию

Спасибо большое за модуль, очень помог! Единственная проблема что вместо русского текста в консоль отправляются корозябины. И при работе с другими консольными приложениями консольный текст читается тоже корозябинами.
aLLeXUs вне форума Ответить с цитированием
Старый 05.08.2014, 14:34   #10
alextrof94
Форумчанин
 
Регистрация: 16.03.2013
Сообщений: 599
По умолчанию

http://forum.sources.ru/index.php?showtopic=332467
alextrof94$gmail.com
alextrof94 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Работа с консолью BomaN1 Помощь студентам 0 19.12.2011 20:41
GUI приложения. Работа с БД. Airou Помощь студентам 0 24.03.2011 15:43
Работа с текстовыми строками в GUI приложениях Anubys Общие вопросы C/C++ 7 24.03.2011 00:59
Работа с консолью WindOfDark Помощь студентам 0 07.01.2011 15:21
Работа с консолью, вопросы Hacker19_90 Общие вопросы C/C++ 21 24.12.2008 20:41