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 

Dieses Thema hat akzeptierte Lösungen:

Werte nacheinander in Tabelle schreiben



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!

05.12.2012, 10:00
Beitrag #1

jh1988 Offline
LVF-Grünschnabel
*


Beiträge: 19
Registriert seit: Dec 2012

2011
2012
DE



Werte nacheinander in Tabelle schreiben
Hallo,

ich bin im Moment gerade dabei ein Programm zu schreiben, dass eine Datei einliest, einen exponentiellen Fit über einen bestimmten Bereich macht und das Ergebnis des Fits in eine Tabelle schreibt. Danach soll mit der nächsten Datei genau das selbe gemacht werden und das Ergebnis in die nächste Zeile der Tabelle geschrieben werden.
Einlesen und Fitten klappt auch, das Ergebnis in eine Tabelle schreiben leider nicht. Das Programm schreibt immer nur den Wert aus dem letzten Fit in die (richtige) Zeile der Tabelle. Die Werte davor werden leider alle wieder gelöscht. Wie kann ich das Löschen verhindern?
Das VI befindet sich im Anhang.

Ich benutze lv11_img


Angehängte Datei(en)
11.0 .vi  LIF Fit - Tabelle.vi (Größe: 55,27 KB / Downloads: 450)
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
Anzeige
05.12.2012, 10:13 (Dieser Beitrag wurde zuletzt bearbeitet: 05.12.2012 10:17 von GerdW.)
Beitrag #2

GerdW Offline
______________
LVF-Team

Beiträge: 17.469
Registriert seit: May 2009

LV2021
1995
DE_EN

10×××
Deutschland
RE: Werte nacheinander in Tabelle schreiben

Akzeptierte Lösung

Hallo jh,

die Antwort auf deine Frage heißt "Schieberegister"!
   
(InsertIntoArray ist überbewertet. BuildArray tut es auch...)

Außerdem:
- Brauchst du wirklich dermaßen viele Splitarray-Funktionen? Wirklich?
- Du hast mehrere RaceConditions eingebaut, indem du statt Drähten lokale Variablen verwendest.
- Es ist keine überhaupt gute Idee, den Namen eines Controls zu löschen. Man sieht dies an deiner Event-Struktur, die ein Event namens " "":Wertänderung "anzeigt...
- Wozu überhaupt eine Eventstruktur? Der Dateidialog wartet doch so schon auf eine User-Bestätigung...
- Noch mehr RubeGoldberg: Wozu suchst du erst nach Maximalwerten, um dann eben diesen Maximalwert im Array zu suchen? Verwende doch gleich die Index-Ausgabe der Array-Min/Max-Funktion:
    (RaceCondition und Rube-Goldberg!)

Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
05.12.2012, 10:38
Beitrag #3

jh1988 Offline
LVF-Grünschnabel
*


Beiträge: 19
Registriert seit: Dec 2012

2011
2012
DE



RE: Werte nacheinander in Tabelle schreiben
Vielen Dank für deine Hilfe! Auf die Idee mit dem Schieberegister bin ich nicht gekommen, aber es funktioniert genau so wie ich das möchte!

zu deinen Anmerkungen:

- Die Splitarray-Funktionen benötige weil ich nur einen ganz bestimmten Bereich fitten möchte (nach dem 2. Maxima).
- Die lokalen Variablen habe ich alle gelöscht. Das mit den Drähten ist die eindeutig bessere Variante.
- Die Eventstruktur habe ich eingebaut damit ich einen Button habe, der mir ein Dateidialogfeld öffnet. Wenn ich diese Event-Struktur nicht habe, kann ich immer nur eine Datei einlesen und muss dann das ganze Programm stoppen und wieder starten. Da ich noch Anfänger bin, ist mir keine bessere Lösung eingefallen.
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
05.12.2012, 10:41 (Dieser Beitrag wurde zuletzt bearbeitet: 05.12.2012 10:48 von GerdW.)
Beitrag #4

GerdW Offline
______________
LVF-Team

Beiträge: 17.469
Registriert seit: May 2009

LV2021
1995
DE_EN

10×××
Deutschland
RE: Werte nacheinander in Tabelle schreiben
Hallo jh,

Zitat:- Die Splitarray-Funktionen benötige weil ich nur einen ganz bestimmten Bereich fitten möchte (nach dem 2. Maxima).
Dann benutze doch die Funktion "Teil-Array". Einfach Index und Anzahl der gewünschten Werte angeben. Sieht definitiv besser aus als 2mal "Array umkehren" und 3mal "Array teilen"...

Zitat:damit ich einen Button habe, der mir ein Dateidialogfeld öffnet. Wenn ich diese Event-Struktur nicht habe, kann ich immer nur eine Datei einlesen
Die Dateidialog-Funktion wird doch mit oder ohne Eventstruktur aufgerufen. Du kannst also immer eine Datei auswählen...

Noch mehr RubeGoldberg:
Um einen Dateinamen zu bestimmen, kann man wie du den Pfad in ein Array of Strings umwandeln, den letzten Eintrag des Arrays per SplitArray abfragen (warum nicht per IndexArray?), und das Ergebnis per ArrayToSpreadsheetString in einen String umwandeln (warum nicht IndexArray?) (das ist ja schon ein RubeGoldberg in einem RubeGoldberg, also RubeGoldberg²!).
Man könnte aber auch einfach die Funktion StripPath ("Pfad zerlegen") verwenden...
Wall

Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
05.12.2012, 12:04
Beitrag #5

jh1988 Offline
LVF-Grünschnabel
*


Beiträge: 19
Registriert seit: Dec 2012

2011
2012
DE



RE: Werte nacheinander in Tabelle schreiben
Zitat: Die Dateidialog-Funktion wird doch mit oder ohne Eventstruktur aufgerufen. Du kannst also immer eine Datei auswählen...
Wenn ich aber keine Datei mehr einlesen möchte, kommt immer Fehler 43. Der macht zwar nichts, ist aber nervig und mit dem Button umgehe ich diesen Fehler.

Zitat:Man könnte aber auch einfach die Funktion StripPath ("Pfad zerlegen") verwenden...
Die Funktion StripPath kannte ich leider nicht, vereinfacht die Suche nach dem Dateinamen aber gewaltig. Danke für die Info!
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
05.12.2012, 15:31
Beitrag #6

GerdW Offline
______________
LVF-Team

Beiträge: 17.469
Registriert seit: May 2009

LV2021
1995
DE_EN

10×××
Deutschland
RE: Werte nacheinander in Tabelle schreiben
Hallo jh,

Zitat:Wenn ich aber keine Datei mehr einlesen möchte, kommt immer Fehler 43.
Genau: Fehler 43 = UserCancel.

Zitat:Der macht zwar nichts, ist aber nervig
Genau. Deswegen macht man eine Fehlerauswertung und nutzt eine Casestruktur...

Gegenfrage:
Warum nutzt du dann eine FOR-Loop, die 1000× durchlaufen soll? Wenn man die Anzahl der Schleifendurchläufe nicht kennt, nimmt man eine While-Loop mit Endebedingung...

Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
Anzeige
06.12.2012, 15:19
Beitrag #7

jh1988 Offline
LVF-Grünschnabel
*


Beiträge: 19
Registriert seit: Dec 2012

2011
2012
DE



RE: Werte nacheinander in Tabelle schreiben
Zitat: Genau. Deswegen macht man eine Fehlerauswertung und nutzt eine Casestruktur...
Die Fehlerbehandlung mit dem Express VI Dateidialog funktioniert auch, leider kommt aber dann immer noch der Fehler bei Read From Spreadsheet File. Um diesen Fehler zu umgehen, habe ich die Event-Struktur mit dem Button eingefügt. Wenn du eine Idee hast, wie ich die Fehlerbehandlung der Read From Spreadsheet File hinbekomme kannst du es mir gerne sagen. Ich habe es mal mit einer Case-Struktur versucht bei der der Dateidialog nicht geöffnet wird, wenn ein leerer String anliegt. Hat aber nicht so geklappt....

Zitat: Warum nutzt du dann eine FOR-Loop, die 1000× durchlaufen soll? Wenn man die Anzahl der Schleifendurchläufe nicht kennt, nimmt man eine While-Loop mit Endebedingung...
Die For-Schleife habe ich nur gewählt um mir keine Endbedingung zu überlegen ;-)
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
06.12.2012, 15:31 (Dieser Beitrag wurde zuletzt bearbeitet: 06.12.2012 15:33 von GerdW.)
Beitrag #8

GerdW Offline
______________
LVF-Team

Beiträge: 17.469
Registriert seit: May 2009

LV2021
1995
DE_EN

10×××
Deutschland
RE: Werte nacheinander in Tabelle schreiben
Hallo fh,

Zitat:leider kommt aber dann immer noch der Fehler bei Read From Spreadsheet File
Eben deswegen nutze ich diese Funktion nicht (mehr)...
Das schöne an diesem VI ist aber, dass du dir anschauen kannst, wie es funktioniert! Es ist ziemlich simpel gestrickt: Textdatei lesen, Umwandeln mit SpreadsheetStringToArray. Kann man wunderbar selbst programmieren - und dann mit vernünftigem Fehlerhandling Smile
Oder: Lege dir eine Kopie dieses VIs (und seiner subVIs) an. Diese Kopie bearbeitest du dann so, dass auch ein Fehlerhandling enthalten ist (bzw. kein Dialog mehr gezeigt wird) und verwendest sie dann immer, wo du sie gebrauchen kannst. Aber daran denken: Kopie anlegen, da es sich hier um ein VI aus der vi.lib handelt!

Zitat:Die For-Schleife habe ich nur gewählt um mir keine Endbedingung zu überlegen
Wall Big Grin
Endebedingung = Fehler (z.B. 43 = UserCancel). Wenn doch alles so einfach wäre...

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
  Werte in Excel Regelkarte schreiben Rene172 9 8.805 17.03.2016 09:49
Letzter Beitrag: Rene172
  mehrere Messungen nacheinander in dem selben Excelsheet speichern Ulmer 3 5.493 05.08.2015 11:56
Letzter Beitrag: GerdW
  Werte aus FIFO kontinuierlich in csv Datei schreiben Stefan_r 6 6.891 19.12.2013 11:01
Letzter Beitrag: Stefan_r
  Werte in TXT schreiben froschels 3 6.983 12.03.2012 20:44
Letzter Beitrag: froschels
  Werte in Tabelle schreiben Flogge154 10 12.726 08.03.2012 08:32
Letzter Beitrag: Flogge154
  Dateiein nacheinander automatisch einlesen Merick005 3 6.209 25.01.2012 14:30
Letzter Beitrag: Merick005

Gehe zu: