Frontend?

MSAB

Mitglied
Moin Leute.
Ich muss für eines meiner Programme (kein c++-Programm) ein Frontend, oder eine andere Eingabemaske erstellen. Im Grunde müsste dieses Frontend nur eine Datei mit den eingegeben Werten schreiben (und evtl. noch ein anderes Prog als Child-Prozess starten)


Soweit die Theorie. Da ich aber nicht allzuviele Erfahrungen mit c++ habe, weiß ich nun überhaupt nicht, wie ich das machen könnte, bzw. ob c++ überhaupt die richtige Sprache dafür ist. Und darum wollt jetzt fragen, ob mir da jemand helfen könnte, oder noch besser ob es irgendwo Tutorials dafür (egal in welcher Sprache) gibt.

Wäre sehr dankbar dafür,
MfG
MSAB
 
Ein Frontend ist ja normalerweise die Verbindung zwischen dem "System" oder der "Architektur" eines Programmes und dem Benutzer. Ein Frontend dient im wesentlichen dazu, die Benutzung zu vereinfachen oder überhaupt zu gewährleisten, oft in Form einer GUI.

Für mich stellt sich gerade die Frage, wie sieht die Verbindung/die Schnittstelle von Deinem Programm zum Frontend aus? Oder soll das Frontend lediglich ein paar Eingaben entgegennehmen und diese, wie Du sagtest, in eine Datei schreiben? Letzteres würde bedeuten, dass Du Dir die Sprache aussuchen kannst, vorausgesetzt, sie wird von Deiner Zielplattform unterstützt und bietet, wenn Du es überhaupt willst, eine GUI Bibliothek. Ersteres bedeutet, Du musst die Schnittstelle zwischen Programm/"Core"/Backend und Frontend mit in Deine Betrachtung ziehen und ggf. eine andere Auswahl treffen.

Allgemein kann man sagen, dass man schon sehr viele Fälle mit C++ abdecken kann. Ich nehme mal an, dass dies auch in Deinem Fall so sein wird. Für detaillierte Antworten musst Du wohl noch ein paar mehr Infos rausrücken.
 
Ergänzend zu DarthShader's Ausführungen läßt sich noch sagen, daß es bei einer GUI Hauptsächlich auf die Auswahl des Fenstersystems ankommt. Wenn das Programm unter Windows laufen soll, dann bieten sich die MFC (Microsoft Foundation Classes) oder QT an. Natürlich kannst Du eine reine Oberflächer auch leicht mit VisualBasic erstellen.
Unter Linux gibt es auch mehrere Möglichkeiten, allerdings kenne ich mich da nicht so aus. Ich weiß allerdings, daß es QT auch für Linux gibt.

Es wäre einfacher Deine Fragen zu beantworten, wenn Du dazuschreiben würdest, welches Betriebssystem und welche Entwicklungsumgebung Du verwendest.
 
Thx, für die Antworten.
Also erstmal soll das ganze für Windows sein, auf eine Entwicklungsumgebung hab ich mich noch nicht festgelegt.

So, und jetzt mal genau, was dieses Frontend machen soll:
Als erstes soll dieses Frontend aus einer ASCII-Datei Zahlen auslesen. (Wie diese Zahlen darin gespeichert sind, ist belibig, man könnte sie also auch mit einem kompletten c++-Code schreiben.)
Anschließend soll man natürlich, in dem Frontend Daten und Werte eingeben können und auf dessen Grundlage soll dann eine andere ASCII-Datei geschrieben werden.
So und nun wird kompliziert. Undzwar arbeite ich mit dem Renderprogramm POV-Ray. Dieses Programm soll vom Frontend (nach erstellen der Datei) gestartet werden und POV-Ray soll die Datei rendern. Ich habe wo anders gelesen, dass das gehen soll, indem man es irgendwie als "Child-Prozess" mit einem "EXEC-Aufruf" aufruft.

Mehr soll das Frontend gar nicht können, denn der Rest macht POV-Ray.
Ich hoffe das war genau genug :(

MfG
MSAB
 
Als erstes soll dieses Frontend aus einer ASCII-Datei Zahlen auslesen. (Wie diese Zahlen darin gespeichert sind, ist belibig, man könnte sie also auch mit einem kompletten c++-Code schreiben.)
Das hätte den Nachteil, daß Du jedesmal, wenn du Daten in der Ausgangsdatei änderst, das Programm neu compilieren mußt. Was soll denn in dieser Datei an Daten drinstehen? Daten für Povray-Objekte oder Hilfsdaten zur Erstellung von Povray-Objekten oder noch was anderes?
Ich denke, es wäre sinnvoller, die Daten aus einer Textdatei mit istream auszulesen.
Anschließend soll man natürlich, in dem Frontend Daten und Werte eingeben können und auf dessen Grundlage soll dann eine andere ASCII-Datei geschrieben werden.
So und nun wird kompliziert. Undzwar arbeite ich mit dem Renderprogramm POV-Ray. Dieses Programm soll vom Frontend (nach erstellen der Datei) gestartet werden und POV-Ray soll die Datei rendern. Ich habe wo anders gelesen, dass das gehen soll, indem man es irgendwie als "Child-Prozess" mit einem "EXEC-Aufruf" aufruft.
Das ist der einfachste Teil des Programmes. Unter Windows kannst Du Povray mit
Code:
system("C:\\PfadZuPovray\\povray.exe ErstellteDatei.pov")
aufrufen, wobei du natürlich den korrekten Pfad und den richtigen Namen Deiner erstellten Datei verwenden mußt.
 
Das hätte den Nachteil, daß Du jedesmal, wenn du Daten in der Ausgangsdatei änderst, das Programm neu compilieren mußt. Was soll denn in dieser Datei an Daten drinstehen? Daten für Povray-Objekte oder Hilfsdaten zur Erstellung von Povray-Objekten oder noch was anderes?
Ich denke, es wäre sinnvoller, die Daten aus einer Textdatei mit istream auszulesen.
Nein, in dieser Datei steht im Grund nur Zahlen. Die Datei könnte z.B. so aus sehen:
Code:
1,27,3
oder auch so:
Code:
int A = 1;
int B = 27;
int C = 3;
Dem sind also keine Grenzen gesetzt, ich kann die Daten beliebig verpacken.
Wie er sie mir nun ausließt ist mir ziemlich egal, hauptsache das Frontend kennt die Zahlen die da drinnen stehen und kann sie mir zum Beispiel irgendwo anzeigen. Wenn es mit istream geht, dann werde ich natürlich das machen.


Das ist der einfachste Teil des Programmes. Unter Windows kannst Du Povray mit
Code:
system("C:\\PfadZuPovray\\povray.exe ErstellteDatei.pov")
aufrufen, wobei du natürlich den korrekten Pfad und den richtigen Namen Deiner erstellten Datei verwenden mußt.
Thx, hätte ich auch selber drauf kommen können :D
 
Zuletzt bearbeitet:
Nach Deiner Beschreibung, was das Programm leisten soll, ist so ziemlich jede Sprache geeignet, z.B. auch Java. Unter C++ könntest Du als GUI Bibliothek auch wxWidgets verwenden. Unter Java Swing oder SWT.

Falls Du in solchen Dingen noch nichts gemacht hast, wäre für Dich die erste Anlaufstelle zunächst einmal ein Dokument, z.B. ein Tutorial, was Dir ein wenig GUI Programmierung beibringt, das sollte leicht zu "ergooglen" sein.

Ich weiß nicht, wie komplex die Aufgabe wird, die Daten zu verarbeiten und rauszuschreiben, je nach Aufwand und ob Du nun wirklich eine GUI brauchst, könnten man sowas sogar per Shell Skript machen, unter Linux ggf. mit Cygwin.
 
Vielen Vielen dank, ich denke ich werd's mal mit wxWidgets probieren. Allerdings werd ich wohl vorher ein paar Tutorials "ergooglen" müssen^^

Falls Fragen auftauchen, weiß ich ja, wo ich Hilfe finde :D (Was aber nicht heißt, dass ich's nicht erstmal selber probiere zu lösen)

MfG
MSAB
 
Das ist der einfachste Teil des Programmes. Unter Windows kannst Du Povray mit
Code:
system("C:\\PfadZuPovray\\povray.exe ErstellteDatei.pov")
aufrufen, wobei du natürlich den korrekten Pfad und den richtigen Namen Deiner erstellten Datei verwenden mußt.
Hmm... ganz so einfach scheint es dann doch nicht zu sein. Er rendert mir dann zwar die Datei ordnungsgemäß, aber er wartet dann darauf, dass POV-Ray wieder beendet wird. Das hat zur Folge, dass das Programm sogar abstürtzt, wenn man es anspricht. Naja, und das ist halt nicht Sinn der Sache.

Ich hab auch es auch schon mit
Code:
system("start C:\\Programm...")
ausprobiert, dann funktioniert es soweit, aber er öffnet mir die Datei nur und rendert sich nicht.

Gibt es irgendeine Möglichkeit, das Programm nicht auf POV-Ray warten zu lassen? (Andersrum wüsste ich sofort wie's ginge^^)

MfG
MSAB

PS:Manmanman, ich hab da noch ne Menge zu lernen...:(
 
Nur weil Du statt der normalen Befehlszeile "start [befehl]" benutzt, sollte sich das Verhalten des Programmes (pov) ja nicht ändern (datei rendern <-> datei nur öffnen). Hast Du in Deinem Pfad zur Datei vielleicht Leerzeichen drin und müsstest den Befehl und/oder den Parameter in Anführungszeichen setzen? Wie genau sieht der Befehl aus, den Du starten willst?

Vielleicht ist dazu noch zu erwähnen, dass sich sowas "Process and Environment Control" nennt, hier kannst Du Dir einige Infos ansehen:
http://msdn2.microsoft.com/en-gb/library/d6dtz42k(VS.80).aspx
 
Zuletzt bearbeitet:
Zurück