INFO: Dieses Forum nutzt Cookies...
Cookies sind für den Betrieb des Forums unverzichtbar. Mit der Nutzung des Forums erklärst Du dich damit einverstanden, dass wir Cookies verwenden.

Es wird in jedem Fall ein Cookie gesetzt um diesen Hinweis nicht mehr zu erhalten. Desweiteren setzen wir Google Adsense und Google Analytics ein.


Antwort schreiben 

String Formatierung



Wenn dein Problem oder deine Frage geklärt worden ist, markiere den Beitrag als "Lösung",
indem du auf den "Lösung" Button rechts unter dem entsprechenden Beitrag klickst. Vielen Dank!

03.06.2013, 17:54 (Dieser Beitrag wurde zuletzt bearbeitet: 03.06.2013 18:10 von Spitzaa.)
Beitrag #1

Spitzaa Offline
LVF-Neueinsteiger


Beiträge: 4
Registriert seit: Jun 2013

2012 MAC
2011
DE



Question String 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
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
Anzeige
03.06.2013, 18:39 (Dieser Beitrag wurde zuletzt bearbeitet: 03.06.2013 18:40 von Spitzaa.)
Beitrag #2

Spitzaa Offline
LVF-Neueinsteiger


Beiträge: 4
Registriert seit: Jun 2013

2012 MAC
2011
DE



RE: String Formatierung
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
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
03.06.2013, 19:31
Beitrag #3

Holy Offline
LVF-Stammgast
***


Beiträge: 339
Registriert seit: Sep 2008

2014
2007
EN

09XXX
Deutschland
RE: String Formatierung
Ich würde die Daten einfach komplett parsen und dann das Output File komplett neu aufbauen. Siehe hierzu das Snippet.
   
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.
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
03.06.2013, 20:20
Beitrag #4

Spitzaa Offline
LVF-Neueinsteiger


Beiträge: 4
Registriert seit: Jun 2013

2012 MAC
2011
DE



RE: String Formatierung
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
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
09.06.2013, 17:13
Beitrag #5

Spitzaa Offline
LVF-Neueinsteiger


Beiträge: 4
Registriert seit: Jun 2013

2012 MAC
2011
DE



RE: String Formatierung
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


Angehängte Datei(en) Thumbnail(s)
   
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
09.06.2013, 19:26
Beitrag #6

Holy Offline
LVF-Stammgast
***


Beiträge: 339
Registriert seit: Sep 2008

2014
2007
EN

09XXX
Deutschland
RE: String Formatierung
Dein Problem ist, dass du deinen kompletten String in einen einzigen Zahlenwert konvertierst. Eine korrekte Konvertierung entsprechend deiner Vorgabe wäre z.B.
11.0 .vi  HEX to ASCII.vi (Größe: 8,12 KB / Downloads: 180)
.
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?
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
Antwort schreiben 


Gehe zu: