31 de mayo de 2023

Cómo ejecutar un comando y obtener el resultado en C++ Builder

Los sistemas operativos consisten en una gran cantidad de comandos del sistema, y ​​en C++, podemos ejecutar los comandos del sistema usando el comando  std::system(). En C++ Builder, podemos recuperar la salida de estos comandos en componentes, por ejemplo, en un Memo (TMemo) o en un ListView (TList). Esto le permite utilizar los beneficios de los comandos del sistema operativo en actividades como el desarrollo en Windows . Puede usar cualquier otra aplicación de back-end, incluidos otros lenguajes de programación instalados como Python, Node.js, etc. En este artículo, explicamos cómo ejecutar un comando y obtener el resultado en C++ Builder.

¿Cómo ejecuto un comando en C++ en Windows?

En C ++, podemos ejecutar comandos del sistema (en Windows, estos son comandos de DOS que se ejecutan en la ventana Terminal o CMD Prompt) utilizando el comando C++ system ()Es muy fácil de usar, simplemente escriba su comando como texto en el comando del sistema. Por ejemplo, podemos usar el comando dir que lista el directorio actual. Podemos ejecutar el comando dir en C++ como se muestra a continuación:

std::system("dir");

Con este ejemplo, puede ejecutar muchos comandos de DOS y otras aplicaciones de back-end ejecutables. Puede encontrar más ejemplos a continuación.

Aprenda a usar comandos DOS de Windows en una Aplicación C++

¿Cómo ejecutar un comando y obtener el resultado en C++ Builder?

Los sistemas operativos están evolucionando y han progresado en sofisticación gráfica. Algunos de los comandos del sistema operativo son muy útiles para obtener información del sistema, crear una carpeta o copiar o mover archivos. En C++ Builder, podemos recuperar la salida de estos comandos en componentes como un Memo (TMemo) o en un ListView (TList).

Si puede recuperar la salida de otros ejecutables, entonces esto le permitirá beneficiarse no solo de los comandos del sistema operativo si no de cualquier otra aplicación de back-end, incluidos otros lenguajes de programación instalados como Python, Node.js y otros. Python tiene algunas bibliotecas de inteligencia artificial muy útiles que son difíciles de encontrar o emular en otros lenguajes de programación. Python también tiene potentes frameworks o marcos que le permiten analizar imágenes y videos con funciones de aprendizaje profundo. Por supuesto, también puede hacer lo mismo en C ++, pero si desea usar el intérprete de Python, simplemente ejecute las aplicaciones de Python y luego puede obtener la salida o puede leer los archivos de salida. Muy simple y poderoso.

Si desea ejecutar un comando o cualquier ejecutable en Windows, puede utilizar elstd::systemy puede apuntar a un archivo usando ">" y el nombre del archivo. Aquí hay un ejemplo muy simple que genera un archivo (por ejemplo, "tmp.out"),

std::system("dir >> tmp.out");

Después de ejecutar este código, puede leer este archivo de salida en C++.

Memo1->Lines->LoadFromFile("tmp.out");

y puede eliminar esta salida después de haberla leído.

std::remove("tmp.out");

¿Hay un ejemplo simple para ejecutar un comando y obtener el resultado en C++ Builder?

Aquí hay un ejemplo simple que ejecuta el comando dir en el terminal de Windows, imprime la salida en un archivo y luego la carga desde esta a un componente Memo,

std::system("dir > tmp.out");
Memo1->Lines->LoadFromFile("tmp.out");
std::remove("tmp.out");


¿Hay un ejemplo completo de cómo ejecutar un comando y obtener el resultado en C++ Builder?

Aquí hay un ejemplo completo de C++ Builder VCL.

  • Simplemente cree una nueva C++ Builder VCL Application,
  • Arrastre los componentes Edit y Memo al formulario
  • Haga doble clic en el evento OnKeyDown () de Edit1
  • y modifique los códigos C ++ como se muestra a continuación,

#include <vcl.h> 

#pragma hdrstop

#include "Executor_Unit1.h"

//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"

TForm1 *Form1;

//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner) : TForm(Owner)
{
}
//---------------------------------------------------------------------------
void executor(UnicodeString input, TMemo *memo)
{
std::system( AnsiString(input+" > tmp.out").c_str() );

Memo1->Lines->LoadFromFile("tmp.out");
std::remove("tmp.out");
}

//---------------------------------------------------------------------------
void __fastcall TForm1::Edit1KeyDown(TObject *Sender, WORD &Key, TShiftState Shift)
{
  switch(Key)
  {
  case 13:
  executor(Edit1->Text, Memo1); 
  break;
  }
}

Este ejemplo completo da salida a cualquier comando que escriba e ingrese como se muestra a continuación.

Como ve, C ++ Builder es brillante, puede leer cualquier archivo de texto en su componente Memo usando el método LoadFromFile()Ahora usted puede usar fácilmente muchos comandos de DOS y otros lenguajes de programación en su C++.

¿Qué otras formas hay de hacer que un programa C++ lea y escriba en la consola de Windows?

Hay otras formas de interactuar con la terminal/consola de Windows (otro nombre para la ventana similar a DOS). Estos utilizan técnicas un poco más avanzadas que requieren que lea y escriba en los std:inidentificadores std:outde archivos virtuales o que llame directamente a las llamadas API de Windows para hacerlo. También hay una biblioteca de terceros para algunas versiones de C++ Builder disponible en GetIt que le permite leer y escribir en la consola de Windows. Puede encontrar el componente aquí: https://getitnow.embarcadero.com/DOSCommand-1.5cb-Sydney/

C++ Builder  es el IDE de C y C++ más fácil y rápido para crear aplicaciones simples o profesionales en los sistemas operativos Windows, MacOS, iOS y Android. También es fácil de aprender para los principiantes con su amplia gama de muestras, tutoriales, archivos de ayuda y soporte LSP para código. La versión C++ Builder de RAD Studio viene con el galardonado marco VCL para aplicaciones nativas de Windows de alto rendimiento y el poderoso marco FireMonkey (FMX) para interfaces de usuario multiplataforma.

Hay una edición gratuita de C++ Builder Community para estudiantes, principiantes y nuevas empresas; se puede descargar desde aquí. Para desarrolladores profesionales, existen versiones Professional, Architect o Enterprise.

No hay comentarios.: