10.05.2007, 12:56
Beitrag #1
|
ElectronicBodyMoritz
LVF-Neueinsteiger
Beiträge: 8
Registriert seit: Apr 2007
8.2
-
kA
Deutschland
|
TXT-Tabelle an beliebiger Stelle bearbeiten?
Grüße
ich habe folgendes Problem:
Ich lese aus einer .txt-Datei aus, und erstelle daraus ein Array, aus welchem ich, in einer Schleife immer in ein eindimensionales Array entnehme das folgende Daten enthält:
(Steckernr/PIN/Add1/Add2/Add3/Status). Nach diesen Angaben führe ich eine Automatische Prüfung durch.
Jetzt möchte ich die letzte Position des obigen Arrays z.b. von 1 auf 0 setzen und das direkt in der ausgelesenen Datei an antsprechender Stelle verändern.
(Hintergrund. Das Kabel ist unterdessen gebrochen, und soll aus der Prüfliste entnommen werden, um in den folgenen Durchläufen ignoriert zu werden!)
Ich ärgere mich selbst, aber irgendwie hat die Funktion "In Tabellkalkulationsdatei schreiben" im Gegensatz zu "Aus Tabellenkalkulationsdatei lesen" irgendwie keine Möglichkeit eine bestimme Zeile rauszupicken und diese zu verändern, ohne die komplette Liste vorher als verändertes Array abzuspeichern und komplett mit Änderunegn wieder in das File zu schreiben (dauert mir zu lange). Kann ich nicht irgendwie nur eine Zeile oder sogar ein Element (Zeile x, Spalte y) der Tabelle austauschen?
Das VI ist angehängt (Hoffe für 8.0..). Ignoriert die ganzen Cases mal getrrost die sind für die unterschiedlichen Prüfgeräte und Modi gedacht
Kabeltester_Komplett_V01.vi (Größe: 183,94 KB / Downloads: 221)
|
|
|
14.05.2007, 08:14
(Dieser Beitrag wurde zuletzt bearbeitet: 14.05.2007 08:41 von ElectronicBodyMoritz.)
Beitrag #3
|
ElectronicBodyMoritz
LVF-Neueinsteiger
Beiträge: 8
Registriert seit: Apr 2007
8.2
-
kA
Deutschland
|
TXT-Tabelle an beliebiger Stelle bearbeiten?
' schrieb:Du könntest mal ins innere von "Write Spreadsheet" gucken...da wird "nur" ein Textfile geschrieben...und man kann ne Position in der Datei angeben...das müsstest du dir umbauen...und - VORSICHT - unter anderem Namen speichern!
Würde ich gerne, aber wenn ich die Schreibsperre aufhebe und mir eine Kopie des VIs inklusive SubVIs erstelle kann ich mein String-Array nicht mehr mit den eingängen verbinden, da diese egtl DBL sind. Hat das irgendwas mit Polymorphie des VIs zu tun? Kenne mich da lieder nicht so aus...
EDIT: Okay das Problem habe ich gelöst, ich versuche jetzt mal das VI abzuändern!
' schrieb:EDIT: Hab dein VI mal aufgemacht...wo ersetzt du denn was? Konnt ich nicht finden...mach doch mal nen Screenshot und kreise es ein...
In der letzten Schliefe kurz bevor ich das WriteToSpreadsheet aufrufe, ersetze ich den letzten Wert des Clusters auf Position (Spalte) 5.
Zum Thema Druchlaufzeiten... also bei mir dauert es gute 4 bis 5 sekunden wenn ich in einer schleife eine textdatei mit 512x5 ZeilenxSpalten in eine txt Datei schreibe. Dazu ist zu sagen dass aber in jedem Durchlauf auch 32 analoge Eingänge gelesen werden. Und das ist mir zu lange um es während des Tests immer wieder vollständig zu schreiben.
|
|
|
14.05.2007, 08:54
Beitrag #4
|
ElectronicBodyMoritz
LVF-Neueinsteiger
Beiträge: 8
Registriert seit: Apr 2007
8.2
-
kA
Deutschland
|
TXT-Tabelle an beliebiger Stelle bearbeiten?
OKay denke die Stelle im VI gefunden zu haben von der aus die Positionsmarke einfließt. Ich kann da ja einen numerischen Wert der die Byte von Start oder Ende angibt übergeben. Mein Problem ist nur woher weiß ich wieviel Byte welche Stelle in der Textdatei sind? Er fügt mi die Änderung irgendwie nicht dort ein wo er soll, aber er fügt ein! Das ist ja schon mal was ^^
|
|
|
14.05.2007, 09:09
Beitrag #5
|
Lucki
Tech.Exp.2.Klasse
Beiträge: 7.699
Registriert seit: Mar 2006
LV 2016-18 prof.
1995
DE
01108
Deutschland
|
TXT-Tabelle an beliebiger Stelle bearbeiten?
Also ich würde die Datei einlesen und in ein zweidimensionales Text-Array umwandeln. Diesen Array dann darstellen mit dem Element "Tabelle". "Tabelle" ist nichts anderes als ein zweidimensionales Text-Array, aber mit dem Unterschied, daß es da genau die von Dir gewünschten Editiermöglichkeiten gibt, die es bei einem normalen Array nicht gibt. (Auswahl mit rechter Maustaste).
|
|
|
14.05.2007, 09:15
Beitrag #6
|
ElectronicBodyMoritz
LVF-Neueinsteiger
Beiträge: 8
Registriert seit: Apr 2007
8.2
-
kA
Deutschland
|
TXT-Tabelle an beliebiger Stelle bearbeiten?
' schrieb:Also ich würde die Datei einlesen und in ein zweidimensionales Text-Array umwandeln. Diesen Array dann darstellen mit dem Element "Tabelle". "Tabelle" ist nichts anderes als ein zweidimensionales Text-Array, aber mit dem Unterschied, daß es da genau die von Dir gewünschten Editiermöglichkeiten gibt, die es bei einem normalen Array nicht gibt. (Auswahl mit rechter Maustaste).
Hmm aber das würde doch dann wieder darauf hinauslaufen, dass ich eine Zeile editiere aber um diese Änderung zu speichern, wieder das komplette Array abspeichere- was ich ja letztendlich vermeiden möchte. Oder sehe ich das falsch? Weis auch nicht genau was du jetzt meinst ehrlich gesagt, weil ich lese die Datei ja ein und wandle sie erstmal um, um auf einzele Zeilen zugreifen zu können.
|
|
|
14.05.2007, 09:25
Beitrag #7
|
Achim
*****
Beiträge: 4.223
Registriert seit: Nov 2005
20xx
2000
EN
978xx
Deutschland
|
TXT-Tabelle an beliebiger Stelle bearbeiten?
' schrieb:In der letzten Schliefe kurz bevor ich das WriteToSpreadsheet aufrufe, ersetze ich den letzten Wert des Clusters auf Position (Spalte) 5.
Zum Thema Druchlaufzeiten... also bei mir dauert es gute 4 bis 5 sekunden wenn ich in einer schleife eine textdatei mit 512x5 ZeilenxSpalten in eine txt Datei schreibe. Dazu ist zu sagen dass aber in jedem Durchlauf auch 32 analoge Eingänge gelesen werden. Und das ist mir zu lange um es während des Tests immer wieder vollständig zu schreiben.
Hi,
mal zwischenrein...
1. Ersetzt du nirgends was in nem Cluster, sondern nur in nem 1D-Array
2. Schreibst du kein 2D-Array, sondern nur ein 1D-Array
3. Liegt dein Problem mit den Durchlaufzeiten nicht beim Array-verändern, sondern beim Einlesen...wobei 4-5 Sekunden für ein paar Analog-Eingänge schon seltsam sind...
Ich hab mal das schreiben von 512x5 Werten probiert, siehe Screenshot...das dauert maximal 6 ms
Gruss
Achim
"Is there some mightier sage, of whom we have yet to learn?"
"Opportunity is missed by most people because it is dressed in overalls and looks like work." (Thomas Edison)
|
|
|
14.05.2007, 09:30
(Dieser Beitrag wurde zuletzt bearbeitet: 14.05.2007 09:37 von Lucki.)
Beitrag #8
|
Lucki
Tech.Exp.2.Klasse
Beiträge: 7.699
Registriert seit: Mar 2006
LV 2016-18 prof.
1995
DE
01108
Deutschland
|
TXT-Tabelle an beliebiger Stelle bearbeiten?
' schrieb:Hmm aber das würde doch dann wieder darauf hinauslaufen, dass ich eine Zeile editiere aber um diese Änderung zu speichern, wieder das komplette Array abspeichere- was ich ja letztendlich vermeiden möchte. Oder sehe ich das falsch? Weis auch nicht genau was du jetzt meinst ehrlich gesagt, weil ich lese die Datei ja ein und wandle sie erstmal um, um auf einzele Zeilen zugreifen zu können.
Dann verstehe ich Dich auch nicht. Du liest Die Datei ein, die Daten befinden sich dann im Speicher, die editierst diese Daten nach Belieben - aber es zwingt Dich doch keiner, diese Daten nach jeder Änderung abzuspeichern oder überhaupt jemals wieder abzuspeichern? Die Tabelle sollte wegen der Editierbarkeit natürlich Bedienelement sein, das erstmalige Füllen der Tabelle mit den auf HD gespeicherten Daten geschieht über ein lokale Variable.
Und in Deinem Hauptprogramm, wenn Du ein bestimmte Zeile brauchst, benutzt Du natürlich immer die aktualisierte Tabelle und nicht die Daten im Speicher.
|
|
|
14.05.2007, 10:22
(Dieser Beitrag wurde zuletzt bearbeitet: 14.05.2007 10:23 von ElectronicBodyMoritz.)
Beitrag #9
|
ElectronicBodyMoritz
LVF-Neueinsteiger
Beiträge: 8
Registriert seit: Apr 2007
8.2
-
kA
Deutschland
|
TXT-Tabelle an beliebiger Stelle bearbeiten?
' schrieb:Dann verstehe ich Dich auch nicht. Du liest Die Datei ein, die Daten befinden sich dann im Speicher, die editierst diese Daten nach Belieben - aber es zwingt Dich doch keiner, diese Daten nach jeder Änderung abzuspeichern oder überhaupt jemals wieder abzuspeichern? Die Tabelle sollte wegen der Editierbarkeit natürlich Bedienelement sein, das erstmalige Füllen der Tabelle mit den auf HD gespeicherten Daten geschieht über ein lokale Variable.
Und in Deinem Hauptprogramm, wenn Du ein bestimmte Zeile brauchst, benutzt Du natürlich immer die aktualisierte Tabelle und nicht die Daten im Speicher.
Hmm ja ich bin ja auch erst Neuling in LabVIEW...
kömnntest du mir mal posten wie so ein Aufruf aussieht? Ich hätte kein Problem damit die Tabelle auszulesen...in ein Array (oder was auch imemr umzuwandeln) und nach nem kompletten Durchlauf oder einiger Zeit einfach mal sicherheitshalber zwischenzuspeichern...
Habe noch nie mit lokalen Variablen gearbeitet vllt könntest du mir mal kurz sagen, was deren Besonderheit ist...
|
|
|
| |