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 

TXT-Tabelle an beliebiger Stelle bearbeiten?



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!

10.05.2007, 12:56
Beitrag #1

ElectronicBodyMoritz Offline
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 gedachtWink


Sonstige .vi  Kabeltester_Komplett_V01.vi (Größe: 183,94 KB / Downloads: 221)
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
Anzeige
10.05.2007, 13:26 (Dieser Beitrag wurde zuletzt bearbeitet: 10.05.2007 13:29 von Achim.)
Beitrag #2

Achim Offline
*****
*****


Beiträge: 4.223
Registriert seit: Nov 2005

20xx
2000
EN

978xx
Deutschland
TXT-Tabelle an beliebiger Stelle bearbeiten?
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!

Ich versteh aber nicht, warum dir das neuerliche Schreiben des kompletten Arrays zu lange dauert...ist es so groß, d.h. viele tausend Werte lang? Ansonsten geht es doch ruckizucki...verwendest du für's ersetzen im Array die Funktion "ReplaceArraySubset"? Die ist doch auch recht schnell...allerdings ist es war, das Array-Operationen in LV relativ rechenintensiv sind...bei sehr großen Arrays gibts da evtl. schon mal Wartezeiten

Gruss
Achim


EDIT: Hab dein VI mal aufgemacht...wo ersetzt du denn was? Konnt ich nicht finden...mach doch mal nen Screenshot und kreise es ein...

"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)
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
14.05.2007, 08:14 (Dieser Beitrag wurde zuletzt bearbeitet: 14.05.2007 08:41 von ElectronicBodyMoritz.)
Beitrag #3

ElectronicBodyMoritz Offline
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.
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
14.05.2007, 08:54
Beitrag #4

ElectronicBodyMoritz Offline
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 ^^
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
14.05.2007, 09:09
Beitrag #5

Lucki Offline
Tech.Exp.2.Klasse
LVF-Team

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).
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
14.05.2007, 09:15
Beitrag #6

ElectronicBodyMoritz Offline
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.
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
Anzeige
14.05.2007, 09:25
Beitrag #7

Achim Offline
*****
*****


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)
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
14.05.2007, 09:30 (Dieser Beitrag wurde zuletzt bearbeitet: 14.05.2007 09:37 von Lucki.)
Beitrag #8

Lucki Offline
Tech.Exp.2.Klasse
LVF-Team

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.
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
14.05.2007, 10:22 (Dieser Beitrag wurde zuletzt bearbeitet: 14.05.2007 10:23 von ElectronicBodyMoritz.)
Beitrag #9

ElectronicBodyMoritz Offline
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...
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
14.05.2007, 10:35
Beitrag #10

Achim Offline
*****
*****


Beiträge: 4.223
Registriert seit: Nov 2005

20xx
2000
EN

978xx
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).

Ich versteh da wohl was nicht...er braucht doch überhaupt keine manuellen Editiermöglichkeiten, oder? Wenn ne automatisierte Messung fehlschlägt, wird in seinem Array ein Wert (automatsich) getauscht, damit diese Messung beim nächsten Durchlauf nicht mehr durchgeführt wird.

Da kann man doch schlicht und einfach "ReplaceArraySubset" machen...und ob man jetzt die ganze Liste (=2D Array) mit jedem Durchlauf neu speichert oder nur z.b. jedes zehnte Mal sollte doch wurscht sein...wie weiter oben schon mal gesagt, dauert das bei mir ca. 6ms...

A.

"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)
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
Antwort schreiben 


Möglicherweise verwandte Themen...
Themen Verfasser Antworten Views Letzter Beitrag
  Kommentar an erster Stelle Dustin 5 5.913 23.07.2015 12:31
Letzter Beitrag: GerdW
  Tabelle einlesen//bearbeiten//abarbeiten Kirsc 10 11.432 20.05.2011 07:39
Letzter Beitrag: Kirsc
  Stelle in .txt Datei suchen und schreiben GT123 9 9.170 03.05.2010 12:12
Letzter Beitrag: jg
  Array von bestimmter Stelle an lesen taylor 4 7.108 04.03.2010 08:45
Letzter Beitrag: M Nussbaumer
  Eine bestimmte Stelle in einer Datei überschreiben nixblicker 4 5.083 09.11.2008 22:43
Letzter Beitrag: IchSelbst
  Datei in Tabelle bearbeiten joe1234 2 4.086 18.01.2008 10:14
Letzter Beitrag: joe1234

Gehe zu: