Konsolenprogramm mit gleichzeitiger Eingabe und Ausgabe

Verschiedenes zu Qt
Antworten
PeterLustig
Beiträge: 386
Registriert: 21. November 2007 20:07

Konsolenprogramm mit gleichzeitiger Eingabe und Ausgabe

Beitrag von PeterLustig »

Hallo erstmal!

Ich bin neu und möchte gerne etwas kleines schreiben, doch da ich bisher relativ unerfahren bin, weiß ich nicht wie ich es realisieren kann, besonders nicht mit Qt.

Ich möchte einfach erst einmal ein kleines Konsolenprogramm schreiben, was einerseits etliche Funktionen ausführt (welche weiß ich noch nicht, irgendwelche halt) und das Ergebnis dieser in die Konsole ausgibt, gleichzeitig dem Benutzer aber erlaubt Befehle in der Konsole einzugeben (also cout und cin gleichzeitig).

Hat jemand Tipps oder kann mich in die richtige Richtung schubsen? :)


PeterLustig
ChMaster
Beiträge: 252
Registriert: 23. Februar 2005 14:44
Wohnort: RP -> Alzey
Kontaktdaten:

Beitrag von ChMaster »

Ein kleines aber feines Bsp. Müsste meinerseits erstmal reichen, ich will nicht zuviel verraten.

Es gibt die "Examples" im Installierten Qt Verzeichnis. Einfach mal reinschauen.

app.pro:

Code: Alles auswählen

TEMPLATE = app
TARGET =  console_app
DESTDIR = .
DEPENDPATH += .
INCLUDEPATH += .
CONFIG += console thread warn_on qt release

SOURCES += main.cpp

main.cpp:

Code: Alles auswählen

#include <QApplication>
#include <QDebug>
#include <QString>
#include <QStringList>
#include <QUuid>
#include <QVariant>

int help()
{
	qDebug() << "Usage:\n";
	qDebug() << "-h" <<  "\t\t\t" << "This help.";
	qDebug() << "-cuid" << "\t\t\t" << "Create Unique id.";
	qDebug() << "-name=<username>" << "\t" << "Enter a user name.";
	return -1;
}

int main( int argc, char **argv )
{
	QApplication app( argc, argv );

    // Prüfen ob überhaupt was eingegeben wurd ( 1 Parameter ).
	if( QVariant( argv[ 1 ] ).toString().isNull() || QVariant( argv[ 1 ] ).toString().isEmpty() || QVariant( argv[ 1 ] ).toString().length() <= 0 )
	{
		return help();
	}

    // Mit einer for Schleife die gewünschten Parameter durchgehen.
	for( int i = 0; i < argc; i++ )
	{
           // wurde "prog -h" angegeben dan gib die hilfe aus
		if( ( QVariant( argv[ i ] ).toString() == "-h" ) )
		{
			return help();
		}
                
        // Wurde "prog -cuid" angeben dann erstelle eine QUuid ...
		if( ( QVariant( argv[ i ] ).toString() == "-cuid" ) )
		{
			qDebug() << "UID                 : " << QUuid::createUuid().toString().replace( "-", "" ).replace( "{", "" ).replace( "}", "" );
		}

        // Wurde "prog -name=name" angeben dann gib den Namen
        // aus. Wir müssen aber den Paremter erstmal aufteilen bzw.
        // spliten ( "=" ) und den ersten Wert aus der QStringList
        // nehmen und prüfen ob es überhaupt der Parameter "-name" ist
       // und anschließend den Wert hinter dem "=" also den 2 Wert aus der
       // QStringList holen und ausgeben
		else if( ( QVariant( argv[ i ] ).toString().split( "=" ).value( 0 ) == "-name" ) )
		{
			qDebug() << "Name                : " << QVariant( argv[ i ] ).toString().split( "=" ).value( 1 );;
		}
	}

    // das programm normal verlassen
	return 0;
}
ChMaster
------------ Projekte------------
DBoxFE
DMS
First4 (Plugin-Develper)
PeterLustig
Beiträge: 386
Registriert: 21. November 2007 20:07

Beitrag von PeterLustig »

Das hilft mir nicht wirklich..
Dein Beispiel beschreibt ja nur wie ich auf unterschiedliche Kommandozeilenparameter reagiere. Das ist aber weeeit entfernt von dem was ich möchte.

Ich möchte ein kleines Konsolenserverprogramm schreiben was eingehende Verbindungen verwaltet, aber gleichzeitig ermöglicht über die Konsole befehle einzugeben (z.B. "kick Blauser" oder "quit").
Antworten