LabVIEWForum.de - String Formatierung

LabVIEWForum.de

Normale Version: String Formatierung
Du siehst gerade eine vereinfachte Darstellung unserer Inhalte. Normale Ansicht mit richtiger Formatierung.
Hallo ^^

Ich bin erst seit Kurzem auf diesem Forum, also bitte entschuldigt, wenn das das falsche Subforum ist.


Um gleich zum Punk zu kommen, ich benötige ein wenig Hilfe mit der Realisierung eines Programms.
Programmablauf sieht folgendermaßen aus:
- Einzeiliges (aufgrund der HEX-Umwandlung gehen die Zeilensprünge verloren) Textfile wird mittels Input-File-Suchleiste ausgewählt und eingelesen
- Programm soll den Text in ein bestimmtes Format umwandeln und in ein Output-Textfile mit dem selben Namen wie das Input-File schreiben (File kommt in einen neuen Ordner)
- Programm soll mehrmals ausführbar sein und dynamisch auf die Text-Länge reagieren (nicht nach z.B. 10 Zeilen aufhören)

Input-Format:
Code:
[<date> <time>]///<name1>///<name2>///<name3>/// : <msg>///<group>
Output-Format:
Code:
Gruppe <group>:
[<date> <time>]<name3>: <msg>

Beispiel:
Input:
Code:
[03-06-2013 18:30]///UserA///UserB///UserC/// : TextA///A
[03-06-2013 18:31]///UserA///UserC///UserD/// : TextB///A
[03-06-2013 18:35]///UserB///UserA///UserC/// : TextC///B
[03-06-2013 18:36]///UserD///UserA///UserB/// : TextD///B
[03-06-2013 18:41]///UserC///UserB///UserA/// : TextE///A
Output:
Code:
Gruppe A:
[03-06-2013 18:30]UserC: TextA
[03-06-2013 18:31]UserD: TextB

Gruppe B:
[03-06-2013 18:35]UserC: TextC
[03-06-2013 18:36]UserB: TextD

Gruppe A:
[03-06-2013 18:41]UserA: TextE

Ich dachte da an ein Frame-Stuktur:
1.Frame: Input Datei einlesen
2.Frame: HEX-Decodierung und in Stringvariable speichern
3.Frame: Nach <group> im String suchen und ein "enter" (\n) anhängen
4.Frame: Zeilen zählen und in die Schleifendurchlaufsvariable übergeben
5.Frame: Nach <group> im String suchen und "A" mit "\n\nGruppe A:" ersetzen (selbiges mit "B")
6.Frame: (und da ist jetzt mein Problem) Zerlegen des Strings in einzelne Variablen und Zusammenfügen dieser in das Output-Format
7.Frame: Generieren des Output-Textfiles (wenn nötig auch den "Output" Ordner anlegen) und String in dieses File schreiben

Bitte um Hilfe und Danke im voraus Smile


MfG,
Spitzaa
Kleiner Fehler:
(03.06.2013 17:54 )Spitzaa schrieb: [ -> ]Input:
Code:
[03-06-2013 18:30]///UserA///UserB///UserC/// : TextA///A
[03-06-2013 18:31]///UserA///UserC///UserD/// : TextB///A
[03-06-2013 18:35]///UserB///UserA///UserC/// : TextC///B
[03-06-2013 18:36]///UserD///UserA///UserB/// : TextD///B
[03-06-2013 18:41]///UserC///UserB///UserA/// : TextE///A
Sollte eigentlich heißen:
Input:
Code:
[03-06-2013 18:30]///UserA///UserB///UserC/// : TextA///A[03-06-2013 18:31]///UserA///UserC///UserD/// : TextB///A[03-06-2013 18:35]///UserB///UserA///UserC/// : TextC///B[03-06-2013 18:36]///UserD///UserA///UserB/// : TextD///B[03-06-2013 18:41]///UserC///UserB///UserA/// : TextE///A

"Enter" btw \n wird ja erst später angehängt.

Die HEX-Codierung wurde im Beispiel zum besseren Verständnis vernachlässigt.


MfG,
Spitzaa
Ich würde die Daten einfach komplett parsen und dann das Output File komplett neu aufbauen. Siehe hierzu das Snippet.
[attachment=44879]
Deine Beschreibung und dein Beispieloutput passen irgendwie nicht ganz zusammen. Das Snippet gibt die Gruppe erstmal für jeden Eintrag an. Das kann man aber problemlos noch anpassen falls notwendig.
Danke erstmal für die schnelle Antwort und die doch viel einfachere Lösung ^^

Ja ich weiß, es passt nicht ganz zusammen. Es wäre so gedacht, dass die Gruppenzuordnung ("Gruppe A/B:") nur einmal pro Gruppenänderung angezeigt wird. Hat den Grund, dass die Protokoll-Datein doch ziemlich lang sind und die Gruppenänderungen nicht allzu oft auftreten. Da würde eine ständige Gruppenzuordnung das Output-File nur unnötig verlängern bzw. unübersichtlicher machen.


MfG,
Spitzaa
So nachdem ich endlich Zeit hatte mich mit diesem Programm zu beschäftigen, ist hier mein erster Entwurf.
Problem besteht im "HEX -> ASCII" Konverter sowie im Parser der nur die erste Zeile übersetzt.
Der Konverter übersetzt den input string nur 5 ASCII Zeichen, egal wie lang der input ist.

Input Format:
Code:
0xHEX0xHEX0xHEX0xHEX0cHEX0xHEX ...


MfG,
Spitzaa
Dein Problem ist, dass du deinen kompletten String in einen einzigen Zahlenwert konvertierst. Eine korrekte Konvertierung entsprechend deiner Vorgabe wäre z.B. [attachment=44945].
Dein zweites Problem ist, dass deine While-Schleife immer nur die letzte Iteration ausgibst. Also entweder Autoindexing aktivieren oder auf eine andere Art und Weise die Daten in Arrays speichern.
Um mir (und evtl. anderen) die Hilfe zu erleichtern wäre es gut wenn du statt Screenshots entweder VIs oder Snippets anhängst. Wenn du das tust bitte auch die Version beachten weil mit 2012 kann ich hier nix anfangen.
Soll der gezeigte Code eigentlich nur meinen letzten Vorschlag abbilden oder soll der schon eine zusätzliche Funktion haben?
Referenz-URLs