Du verwendest einen veralteten Browser. Es ist möglich, dass diese oder andere Websites nicht korrekt angezeigt werden. Du solltest ein Upgrade durchführen oder ein alternativer Browser verwenden.
Ich habe folgendes Problem, ich hbe eine txt datei, die als Steuerung dient. Und ich möchte aus dieser Datei eine GUI erstellen. Meine erste Idee war, dass ich die txt datei zuerst in einer XML datei umwandle, dann diese in einem PropertyGrid mit XmlGridControl anzeigen. Jedoch kommt mir das etwas kopliziert und aufwändig.
Dann hab ich auf deise Seite kramann.info
diesen Beitrag gefunden. Ist diese Methode hilfreich für das was ich vor habe????
Was ist denn Mit anderen Verfahren, wie z.B. mit HTML oer PHP oder c++. Kann ich denn mit diesen Sprachen aus meiner txt datei eine GUI erzeugen????
Eine GUI ist ja eine grafische Benutzeroberfläche. Welchen Weg du zur Erzeugung einer solche wählst, hängt von verschiedenen Faktoren ab:
1. Was willst du damit steuern? (Java App? Android-App? Website? Fertigungsmaschine über USB-Port?)
2. Worin kennst du dich schon aus?
3. Was soll die GUI können? (Nur einfache Buttons, oder auch aufwendige dynamische grafische Effekte wie bei manchen Computerspielen?)
So ist z.B. hier das Forum ja auch eine GUI, die eine dahinterliegende Datenbank aufruft. Warscheinlich auf Basis von PHP/HTML, Javascript etc.
Dann gibt es noch GUI für z.B. Java-Apps. Zumindest bei Android weis ich z.B., das es da Editoren gibt, mit denen man Drag&Drop mässig seine GUI Elemente zusammen stellen kann. Deren Konfiguration wird dann auch in XML gespeichert.
Im Grunde genommen kannst du natürlich mit fast jeder Programmiersprache die Dateien öffnen kann und ein Fenster öffnen kann eine GUI durch eine Textdatei definieren. Allerdings macht es in vielen Fällen kaum Sinn so etwas zu implementieren, weil es dafür schon gute Lösungen gibt. Es gibt sogar so viele Lösungen dafür, dass es halt sehr stark auf den Kontext ankommt. Daher meine obigen Fragen.
also ich arbeite an einem simulationsprojekt mit C++. Diese hat eine txt datei, die zur steuerung dient. D.h. die Parameter und bestimmte werte werden in dieser Datei einetragen und das Programm (simulation) übernimmt dann diese Werte. Jedoch will ich aus dieser txt datei eine GUI erstellen, sodass die Simulation benutzerfreundlich wird. Also ich will dass es so funktioniert (meine Idee): ich lade die GUI hoch, die alle Komponenten der txt datei hat und dann kann ich in der gui werte eingeben, und mit Knopf druck soll dann die Txt datei diese werte übernehmen und mit denen die Simulation ausführen. Ich hoffe jetzt ist etwas klarer was ich möchte.
Okay, damit hättest du die erste Frage beantwortet. Fehlern noch 2. und 3.
Zu dem was du bisher geschrieben hast, verstehe ich das richtig: Du hast eine Textdatei, in der Simulationsparameter stehen und wenn du dein Simulationsprogramm startest, dann wird die Textdatei vom Simulationsprogram aufgerufen und die Simulation anhand der Werte in der Datei ausgeführt?
Also bräuchtest du quasi nur eine GUI-Software, die dir eine solche Textdatei generiert?
Bzw. zur auto-generierung einer GUI aus einer solchen Textdatei, hat diese ein einheitliches Format?
Grundsätzlich würde ich ja dazu raten, für solche "Settings-Dateien" XML zu verwenden. Vorgehensweise dafür: XML-Schema erzeugen und dann dieses zur eventuellen Generierung einer GUI nutzen. Jedenfalls solange es nicht zu komplex wird. Womit man die GUI letzten Endes automatisch generiert, hängt vom eigenen Kenntnisstand ab. Ich würde warscheinlich Java+Swing für einfache Sachen nutzen. Bzw. ich würde gar keine automatische generierung der GUI vorsehen, sondern einfach nur eine feste GUI mit Swing programmieren, die mir dann die Settings entsprechend in eine XML Datei schreibt, die ich dann mit dem C++ Program auslesen kann.
Für C++ gibt es allerdings auch direkte GUI Komponenten, z.B. wxWidgets mit Codeblocks.
Ich meine es so, wie ich es gesagt habe. Wie sieht denn deine Textdatei überhaupt aus?
Wenn du z.B. bisher C++ benutzt und da schon etwas vertraut mit bist, dann würde ich sogar eher empfehlen, die GUI ebenfalls mit C++ zu programmieren, z.B. mit wxWidgets. Denn dann kannst du eventuell Klassen wiederverwenden und brauchst nur in einer einzigen Entwicklungsumgebung zu arbeiten.
XML würde ich deshalb benutzen, weil es gut mit Objektorientierung zusammen funktioniert und es in fast allen Sprachen komfortable Möglichkeiten gibt, es ein- und auszulesen. Wenn es allerdings nur um 3-5 Zeilen geht, dann lohnt sich das fast nicht. Genau so, wie sich eine automatische GUI-Generierung eigentlich auch nicht lohnt, einfach aus dem Grund, dass es entweder nur eine große Liste von Variablen und Zuweisungen sind, sprich eine große Tabelle, und dein GUI-Program also nur ein großes Formular wird, oder es eben speziellere Bedienelemente erfordert, die sich dann aber schlecht automatisch generieren lassen.
Mein Tipp also: Schau dir wxWidgets an und schreib mal vielleicht, wie deine Settings-Textdatei gerade aussieht. Also Format-Beispiel und Angabe, wie umfangreich sie ist. Denn dann kann ich besser einschätzen, worum es geht.
Okay, also ich bleib bei meiner Empfehlung: Bau die GUI besser von Hand (sprich keine automatische generierung anhand des textfiles, sondern z.B. mit einem GUI-Editor wie in wxWidgets oder Swing glaube ich).
Grund: Wenn man automatisch durch das Dokument gehen würde, dann würde mir nur so eine Art Excel-Ähnliches Program bauen. Sprich Variablennamen als labels und dann Felder, in die man die Werte eintragen kann.
Aber wenn man es "von Hand" baut, dann kann man z.B. Auswahlboxen anbieten für z.B. "Calculation mode" oder "SimulationMethode" die nur bestimmte Werte zulassen. Oder für sowas hier:
Code:
# ---------------------------------------------------------------------
# program control
# ---------------------------------------------------------------------
# save the results in a vtk file each timestep
# 000000001b = 1: export vtk file with spherulite info every timestep
# 000000010b = 2: export spherulite density after calculation
# 000000100b = 4: export average spherulite growth speed after calculation
# 000001000b = 8: export vtk file with temperature data in every timestep
# 000010000b = 16: export filling percentage
# 000100000b = 32: export full geometry information
# 001000000b = 64: export cell center
# 010000000b = 128: export free energy in vtk
# 100000000b = 256: export normalized (G/3ckT) free energy of the center cell to txt file
SaveOption = 9
könnte man Checkboxen für die einzelnen Optionen anbieten und dann automatisch den entsprechenden Code daraus generieren.
Und für die #Elements Einträge würde einem bestimmt auch was schönes einfallen.
Hi,
von hand eine GUI zu erstellen ist ja auch einfacher , aber meine Aufgabe ist, bzw. mein chef will, dass die GUI anhand der Textdatei automatisch erzeugt wird.
Mir ist lieber mit Java zu arbeiten auch wenn die Simualtion in c++ geschrieben ist . Das ist meinem chef egal.
Ich hab mir eben JDOM angeguckt, ich dachte ich kann mit dieser Bib. aus .txt XML erzeugen, aber so wie ich das verstanden habe, mit JDOM kann man XML datei lesen und analysieren. Oder geht auch beides???
Wie kann ich denn sonst mit Java aus txt automatisch GUI erzeugen???
Naja, Zaubern kann Software auch nicht, auch wenn es manchmal den Eindruck macht.
Um aus deiner Textdatei automatisch eine GUI zu generieren (wovon ich abraten würde), muss du den Inhalt deiner Textdatei analysieren, Muster darin erkennen und diese Muster dann mit entsprechenden GUI-Elementen assoziieren.
Eines dieser Muster das ich erkennen konnte ist, dass alles was hinter einem # steht wohl als Kommentar gedacht ist.
Ein anderes, dass so eine Zeile wie:
Code:
SaveOption = 9
Die Zuweisung einer Variablen darstellt. D.h. man könnte daraus dann automatisch ein Texteingabefeld anlegen mit dem Label "SaveOption".
Um die "GUI" automatisch zu erstellen, muss du also in Java dein Textfile öffnen, Zeile für Zeile einlesen und den Inhalt dahingehend analysieren. z.B. ob in der Zeile erst ein Wort, dann ein "=" Zeichen und danach ein Wert vorkommt. Und mit diesen Informationen erstellst du dann in z.B. Swing ein Label und eine Texteingabebox.
Das einlesen und analysieren nennt man übrigens "parsen". Aber sei gewarnt: Das ist sehr aufwendig, weil du viele Ausnahmefälle abfangen musst. z.B. besteht der "Wert" ja hier nicht immer nur aus einem einzigen Eintrag, sondern manchmal auch aus Listen. Und teilweise sind nur ganz bestimmte Werte erlaubt, was aber nicht ausdrücklich dort steht sondern nur aus den Kommentaren heraus ersichtlich wird. So etwas kann man natürlich kaum noch einfach so automatisch interpretieren und umsetzen.
Textfiles haben eben eine sehr offene Struktur, oder wie in diesem Fall hier, eine Struktur die nicht explizit definiert ist. Oder gibt es irgendwo eine Anleitung, wie der Inhalt der Datei zu interpretieren ist? Also wo z.B. drin steht, dass # für Kommentare da ist?
XML ist im Grunde genommen ja auch nur ein Textfile, aber eben mit der zusätzlichen Konvention, wie man gewisse Dinge (Objekte, Variablen, Verschachtellung, Kommentare etc.) beschreibt. Dadurch wird dann das "parsen", also das Einlesen der Werte einfacher bzw. robuster. Mit XML könntest du z.B. folgendes Modell definieren:
Und dann könntest du einfach für jede "<variable>" eine textbox anlegen. Oder Abhängig vom datatype auch andere GUI-Elemente, wie z.B. eine Kombination mit der sich Listen anlegen lassen.
Oder du könntest folgendes definieren, um nur bestimmte Werte zuzulassen:
Ist allerdings auch nur ein ziemlichlich primitiver Ansatz. Im Endeffekt könnte man die Werte der XML-Elemente selbst auch schon dadurch eingrenzen, das man eine XML-Schema-Datei erstellt (von Hand) und dort die erlaubten Werte definiert. Damit hätte man dann auch explizit die Struktur der Daten definiert, was das automatische Erstellen einer GUI erheblich vereinfachen würde. Allerdings wäre das ja auch schon wieder "von Hand" erstellen, d.h. wenn jemand auf die Idee kommt, in der originalen Textdatei einfach die Notation zu ändern (z.B. in einem Kommentar ausführlich zu beschreiben, welche Modi jetzt erlaubt oder nicht erlaubt sind), dann müsste man das natürlich wieder anpassen. Aber das müsste man ja sowieso in jedem Fall.