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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> console application, на форме 
:(
    Опции темы
kuzyara
Дата 2.7.2008, 17:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 215
Регистрация: 13.11.2006

Репутация: нет
Всего: 1



скажите пожалуйста, как сделать так, чтобы по нажатию кнопки запускалось консольное приложение (Console Wizard) в коммандной строке, но не ShellExeute'ом, а чтоб прям исходники править можно было. 

Я сначала для консоли писал, потом сказали переделать под vcl, может быть как-нибудь можно с минимальными потерями?
--------------------
подпись
PM MAIL   Вверх
Любитель
Дата 2.7.2008, 17:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Программист-романтик
****


Профиль
Группа: Комодератор
Сообщений: 3645
Регистрация: 21.5.2005
Где: Воронеж

Репутация: нет
Всего: 92



Ты сам понял, что сказал?! Если речь об интеграции имеющегося кода cin/cout - то смотри перенаправление ввода/вывода и AllocConsole в MSDN.


--------------------
PM MAIL ICQ Skype   Вверх
kuzyara
Дата 3.7.2008, 11:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 215
Регистрация: 13.11.2006

Репутация: нет
Всего: 1



спасибо за наводку, вот накапал:
Код

bool CreateConsole()
{

     FreeConsole();
     if (AllocConsole())
     {
       SetConsoleOutputCP(1251); // Чтобы русские буквы отображать
       int hCrt = _open_osfhandle((long) GetStdHandle(STD_OUTPUT_HANDLE), _O_TEXT);
       FILE *f=::_fdopen(hCrt, "w");
       if(setvbuf(f, NULL, _IONBF, 0)==0)
       {
            *stdout = *f;
            *stderr = *f;
            return false;
       }
     }
     return true;
}


void __fastcall TForm1::Button1Click(TObject *Sender)
{
    CreateConsole();
       int x;
      for(int i=0;i<20;i++)
        std::cout << i << "\n";
       std::cin >> x;
       std::cout << "Проба\n";
    

}



А как сделать, чтобы консоль в конце закрыалась? 
Типа  cout >> "Press anykey to exit..."; getch();?

Это сообщение отредактировал(а) kuzyara - 3.7.2008, 11:23
--------------------
подпись
PM MAIL   Вверх
Любитель
Дата 3.7.2008, 13:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Программист-романтик
****


Профиль
Группа: Комодератор
Сообщений: 3645
Регистрация: 21.5.2005
Где: Воронеж

Репутация: нет
Всего: 92



Для закрытия - вызови просто в нужный момент FreeConsole.


--------------------
PM MAIL ICQ Skype   Вверх
kuzyara
Дата 4.7.2008, 07:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 215
Регистрация: 13.11.2006

Репутация: нет
Всего: 1



в том то и дело, что сразу закрывает, не дождавжись введения символа! 
Код

//---------------------------------------------------------------------------

#include <vcl.h>
#pragma hdrstop
#include <iostream> 
#include <io.h> 
#include <stdio.h>
#include <conio.h>
#include <fcntl.h>


#include "Unit1.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm1 *Form1;

//---------------------------------------------------------------------------

bool CreateConsole()
{

     FreeConsole();
     if (AllocConsole())
     {
       SetConsoleOutputCP(1251); // ×òîáû ðóññêèå áóêâû îòîáðàæàòü
       int hCrt = _open_osfhandle((long) GetStdHandle(STD_OUTPUT_HANDLE), _O_TEXT);
       FILE *f=::_fdopen(hCrt, "w");
       if(setvbuf(f, NULL, _IONBF, 0)==0)
       {
            *stdout = *f;
            *stderr = *f;
            return false;
       }
     }
     return true;
}


__fastcall TForm1::TForm1(TComponent* Owner)
        : TForm(Owner)
{


}
//---------------------------------------------------------------------------

void __fastcall TForm1::Button1Click(TObject *Sender)
{
    CreateConsole();
       int x;
      for(int i=0;i<20;i++)
        std::cout << i << "\n";
       std::cin >> x;
       std::cout << "Ïðîáà\n";
        getch();
        FreeConsole();

}
//---------------------------------------------------------------------------


Консоль появляется на долю секунды, потом закрывается, а нужно, чтобы после гетчара закрывалась! Подскажите в чём дело, буду очень благодарен.
--------------------
подпись
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "C/C++: Для новичков"
JackYF
bsa

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, JackYF, bsa.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Для новичков | Следующая тема »


 




[ Время генерации скрипта: 0.0719 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.