Hier nochmal eine etwas schönere Version mit "Open" anstelle dem Read und einer Zahl. So sollte es eigentlich gehen.
Edit: Wenn du beim ScanFormat auch %s angibst, aber in Wirklichkeit ein double lesen möchtest geht das auch nicht, wenn dir LV dort nicht bereits beim verdrahten einen Fehler anzeigt kommt er beim ausführen. Also mach dir auch darüber ruhig ein paar Gedanken bevor du dich ans verkabeln setzt.
Auch mit dem neuen Programm von dir, bekomme ich die Fehlermeldung bei meiner Datei...
Was mich "nervt", dass man immer angeben muss was für einen Inhalt man "erwartet".
Kann er nicht einfach alles was in der Datei ist erstmal als String nehmen?
Also auch die Zahlen?
(15.09.2011 11:46 )lambda89 schrieb: [ -> ]Auch mit dem neuen Programm von dir, bekomme ich die Fehlermeldung bei meiner Datei...
Was mich "nervt", dass man immer angeben muss was für einen Inhalt man "erwartet".
Kann er nicht einfach alles was in der Datei ist erstmal als String nehmen?
Also auch die Zahlen?
Und dann? willst du aus einer elend langen Zeichenkette die ganzen Zahlen raussuchen?
Also das Problem ist, das er im prinzip erwartet das dein gesuchtes Objekt als erstes in der txt steht. Kannste ja mal ausprobieren, wenn du dein NeueTestNummer in die erste Zeile schreibst wird es keinen Fehler geben.
Vielleicht schaust du dir das mit den ini Dateien doch nochmal an, du scheinst ja eh aus einer beliebigen Datei eine txt machen zu wollen, dann kannste da auch eine ini reinsetzen und dort nach einem Key suchen. Vielleicht gestaltet sich das als etwas einfacher.
Klick mich!
Edit: Falls nötig musst du dann aber noch eine section, ob man eine ini rein ohne section erstellen kann hab ich noch nie ausprobiert.
Hallo lambda,
Zitat:Was mich "nervt", dass man immer angeben muss was für einen Inhalt man "erwartet".
So arbeitet diese Funktion nun einmal. Wenn du in C "printf" schreibst, ärgerst du dich dann auch über dessen Funktionsweise?
Zitat:Kann er nicht einfach alles was in der Datei ist erstmal als String nehmen?
Mit der richtigen Funktion schon: ReadTextFile...
Was kann LV dafür, dass deine Vorstellungen mit der Programmierpraxis kollidieren?
Schon mal erfolgte Ratschläge:
- INI-Dateien nutzen
- Textdatei als String einlesen und selbst parsen
Danke, werd mir gleich mal durchlesen.
Im Prinzip gehts immer noch um das Thema .dat oder .ept zu .std (STDF-Format).
Da ich nun einigermaßen gute Dokumente zu geschickt bekommen habe, wie das im Endeffekt genau funktioniert, wollte ich mich nun damit beschäftigen, wie ich diese .dat oder .ept Files am besten in LV reinlade um dann die entsprechenden Werte aus den Files (sei es das Datum vom Test oder eine Kennung des Objekts) in STDF umzuwandeln.
Das Problem ist, dass so eine .dat/.ept Datei wie folgt aufgebaut ist:
Zitat:# #########################################################################################################
# >>>>>>>>>>>>>>>>>>> GENERAL INFORMATION
# #########################################################################################################
#
#DATE = 12-08-2547
#START_TIME = 07:02:13
#STOP_TIME = 09:02:44
#SOFTWARE_VERSION = *********
#OPERATOR_NAME = Mustermann
#PROBER_TYPE = ABC2
#PROBECARD = V5.10393
#TEMPERATURE = 29393
#RECIPE = "langer Dateipfad zu einer ini Datei"
Und das ist nur ein kleiner Teil.
Sozusagen der erste Teil der "Einleitung"
Mein Vorhaben war es dann, immer abzugleichen.
Nach Datum zu suchen, das ins STDF zu schreiben.
Nächster Durchlauf nach Start_Time und ins STDF schreiben und so weiter...
Nach meiner Einschätzung ist das verdammt viel Arbeit, aber mir fällt keine andere Methode ein.
Hallo lambda,
nochmal: Datei als String einlesen, String parsen...
(Alles als subVI(s) verpacken - beliebig oft wiederverwenden!)
Es klappt trotzdem nur, wenn die gesuchte Zeile direkt am Anfang der Datei steht...
[
attachment=35986]
Hallo lambda,
ich schrieb "
parsen"...
Die String-Palette bietet da mannigfaltige Möglichkeiten: Suchen mit und ohne RegEX etc...
In deinem Beispiel: String einlesen, durchsuchen nach "Neue Testnummer:", Auswerten der Zahl danach...
oder doch mal über INI-Files nachdenken, da übernimmt LV das Parsen für dich!
Hallo Lambda,
im beigefügten Beispiel versuche ich Deine Frage aufzugreifen und mit den von GerdW genannten LabVIEW-STRING-Functions nach einer gefragten Zeichenkette "NTNr" zu suchen.
Die Daten sind zeilenweise in der ASCII-Datei "protokoll.txt" gespeichert; darin sind die Spalten durch TAB getrennt. Diese CSV-Datei wird komplett in das STRING-Array >Text< eingelesen. Dieses Array wird mittels "Spreadsheet String to Array" in ein zweidimensionales STRING-Array >Array< gewandelt. In den verschachtelten FOR-Schleifen sucht "Match Pattern" nach "NTNr". Falls "NTNr" gefunden, wird "NTNr" samt dem folgenden Messwert in >Array3< (>Array2<) geschrieben. Abschließend wird >Array3< mit den gefundenen Einträgen in "protokoll_e.txt" gespeichert.
Ich hoffe, mein Beispiel hilft Dir.
Schöne Grüße,
BeFu
Und genau sowas bleibt dir bei der INI erspart!
Zu welchem Entschluss biste denn nun gekommen?