Seite 1 von 1

Konsolenprogramm mit gleichzeitiger Eingabe und Ausgabe

Verfasst: 13. Dezember 2007 13:40
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

Verfasst: 13. Dezember 2007 16:13
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;
}

Verfasst: 20. Dezember 2007 13:06
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").