LabVIEWForum.de - Texte in externer Datei verwalten

LabVIEWForum.de

Normale Version: Texte in externer Datei verwalten
Du siehst gerade eine vereinfachte Darstellung unserer Inhalte. Normale Ansicht mit richtiger Formatierung.
Hallo zusammen,

ich bin gerade auf einem allgemeinen "GUI-Verbesserungstrip" und versuche gerade, folgendes Konzept in LabVIEW zu realisieren:
In größeren Projekten habe ich eine Vielzahl von Dialogen, Labels & Erklärungstexten, die ich gerne allesamt (oder größtenteils) in externen Ascii-Dateien unterbringen würde. So habe ich einerseits einen recht schnellen Überblick darüber, wie konsistent die im Programm verwendeten Formulierungen und Begriffe sind und kann andererseits leicht gleiche Meldungen an unterschiedlichen Stellen verwenden.

Nun gibt es sicherlich eine Vielzahl an Möglichkeiten, sowas zu implementieren. Standardmäßig würde ich da erst mal mit Brute Force rangehen (einer meiner Lieblingsfehler) und einfach eine alle Text in eine Textdatei schreiben und zeilenmäßig abfragen. So simpel diese Methode ist, so beliebig viele Nachteile hat diese Methode, insbesondere weil ich ständig wissen muss, in welcher Zeile was steht. Nachträgliches einfügen würde alles zerstören.

Mein nächster Favorit wäre eine XML Datei. Hier wäre zwar anfänglich etwas Programmieraufwand gefragt, dafür kann ich dann auf Texte mit eindeutigen IDs zurückgreifen.

Lange Rede, kurze Frage: Hat jemand von Euch sich schonmal Gedanken zu sowas gemacht und kann mir was raten?

Danke und Grüße,
Kasi
(11.03.2014 22:55 )Kasi schrieb: [ -> ]Lange Rede, kurze Frage: Hat jemand von Euch sich schonmal Gedanken zu sowas gemacht und kann mir was raten?

ja, hab ich: ich wollte mittels der Export VI-String bzw. der Import VI-Strings eine Übersetzungs-Funktion für VIs implementieren. Wenn man "Export VI-Strings" (entweder aus dem Tools-Menü oder über eine Invoke Node) benutzt wird eine XML-Datei erstellt, die alle Strings eines VIs enthält, auf Wunsch auch die aus dem Block-Diagramm.

"Gescheitert" bin ich erst mal daran, dass das Parsing des XML-Files etwas aufwändiger ist, da war ich schlicht zu faul zu ...

viele Grüße
cb
Hallo Kasi,

Zitat:einfach eine alle Text in eine Textdatei schreiben und zeilenmäßig abfragen. So simpel diese Methode ist, so beliebig viele Nachteile hat diese Methode, insbesondere weil ich ständig wissen muss, in welcher Zeile was steht. Nachträgliches einfügen würde alles zerstören.
Dann verfeinert man diesen Ansatz nur ein klitzekleines bisschen: man packt vor jeden Text eine ID! Das kann im einfachsten Fall eine Nummer sein, im besseren Fall eine eineindeutige Bezeichnung.
- Wenn jetzt ein Text aus dieser Datei gesucht wird, sucht man erst nach der passenden ID…
- Man kann beliebig hinzu- oder auch einfügen, da ja immer nach der passenden ID gesucht wird.
- Man bekommt sogar eine Rückmeldung im Programm, wenn eine ID fehlt…
- Und das schöne dabei: man kann sowas wunderbar in einer FGV (aka AE) verpacken…
(12.03.2014 08:31 )GerdW schrieb: [ -> ]Dann verfeinert man diesen Ansatz nur ein klitzekleines bisschen: man packt vor jeden Text eine ID! Das kann im einfachsten Fall eine Nummer sein, im besseren Fall eine eineindeutige Bezeichnung.
- Wenn jetzt ein Text aus dieser Datei gesucht wird, sucht man erst nach der passenden ID…
- Man kann beliebig hinzu- oder auch einfügen, da ja immer nach der passenden ID gesucht wird.
- Man bekommt sogar eine Rückmeldung im Programm, wenn eine ID fehlt…
- Und das schöne dabei: man kann sowas wunderbar in einer FGV (aka AE) verpacken…
- einfach erweiterbar auf mehrere Sprachen durch Hinzufügen von weiteren Spalten
- nimmt man das Label eines Elements als ID kann man die Suche auch automatisieren

Thomas
Weiter Alternative: Ini-Dateien, auch die bieten dir ein "Key" "Value" ähnlich XML an.

Gruß, Jens
Vielen Dank für die Meinungen und Alternativen.
Die Möglichkeit mit der zusätzlichen ID sollte zwar funktionieren, klingt mir aber zu sehr nach unnötigem Aufwand, wenn es vorhanden Konzepte wie XML und Config-Dateien schon gibt. Ich werde mal alles durchprobieren und - sofern ich mich erinnere - nochmal mit persönlichem Resultat zurückmelden.
Ich habe jetzt alle fast alle eure Ideen in einen Ansatz verwursten können Smile
Das Ergebnis ist ein Programm, welches:
  • mittels Export und Import alle Texte eines VIs extrahiert
  • die Captions von bestimmten Elementen, die anhand ihres Labels identifiziert werden, herauslöscht
  • durch entsprechende Captions einer .ini Datei ersetzt
  • nicht funktioniert, wenn die entsprechenden vis nicht geöffnet sind (daran arbeite ich noch)

Im Zip hab übernimmt diese Aufgabe das "feed_text.vi", die "texts.ini" macht die Labels = Captions Zuordnung.
Wie sehr das für große Projekte zeitmäßig skaliert muss ich dann sehen.
Hab den "Fehler", warum es scheinbar nicht klappt, wenn die VIs nicht offen sind, identifiziert:
Man muss noch die VI-Methode "save.instrument" nach der "Vi string.import" Methode anhängen, sonst führt er die Änderung zwar durch, verwirft sie aber mit dem Schließen der Referenz direkt wieder.
Referenz-URLs