Hi
,
welchen Fehlercode gibt die Fehlermeldung " Nicht genügend Speicher zum Abschließen dieser Operation" heraus?
Hab nach mehr als sechs Stunden Messung nach der Anzeige dieser Fehlermeldung ausversehen das Programm geschlossen und würde ungern solange warten, bis die Fehlermeldung wieder aufplottet;P.
Gruß
HCO
Hallo HCO,
Zitat:welchen Fehlercode gibt die Fehlermeldung " Nicht genügend Speicher zum Abschließen dieser Operation" heraus?
Wenn dir diese Fehlermeldung aufgrund eines stetig anwachsenden Arrays nach einer BuildArray/InsertIntoArray-Funktion angezeigt wird: gar kein Fehlercode!
Wie sah denn die Meldung
genau aus?
War es ein "normaler" Fehlerdialog (mit Angabe des Fehlerortes) oder eine allgemeine "Out of memory"-Meldung?
Hi Gerd,
ja genau ich verwende ein stetig anwachsendes Array nach einer BuildArray/InsertIntoArray-Funktion und schreibe die anwachsenden Messdaten anschließend über Dateiposition festlegen (start) immer wieder in eine Textdatei.
Die Textdatei war am Ende 75.063kB. Glaube aber nicht das die Fehlermeldung wegen der Textdatei aufplottet (verwendete Notepad ++). Kann es sein, das eventuell das Array im Blockdiagramm zu groß für LabVIEW wird?
Gruß
HCO
Hallo HCO,
Zitat:ich verwende ein stetig anwachsendes Array nach einer BuildArray/InsertIntoArray-Funktion
Das sollte man NIE machen!
Und wenn man es doch macht, dann sollte man IMMER dafür sorgen, dass man keinen "out of memory"-Fehler generiert!
Zitat:Kann es sein, das eventuell das Array im Blockdiagramm zu groß für LabVIEW wird?
"Im Blockdiagramm" wird ein Array nie zu groß werden - es benötigt aber irgendwann zuviel Speicher!
Folgendes passiert: dein Array erfordert ~100MB. Du vergrößerst es durch anhängen von weiteren 10kB: LabVIEW muss nun einen neuen Speicherblock von 100,01MB anfordern, die "alten" 100MB dort hin kopieren und die "neuen" 10kB hintendran kopieren. Dann wird der "alte" 100MB Speicherbereich freigegeben. Dummerweise fragmentiert man sich seinen Speicher damit sehr schnell: LabVIEW hat dann zwar noch "viel" Speicher zur Verfügung, der ist aber schon in diverse kleinere Blöcke fragmentiert, die nicht mehr groß genug für die nächste Anforderung sind. Ergebnis: "out of memory"!
Top Antwort.
Ja, sinnvoll wäre es, die Messdaten nach jeder Messung direkt spaltenweise in die Textdatei zu schreiben.
So würde man sich das Gedusel mit den angehängten Messwerten im Array ersparen und der benötigte Speicher wird nicht zu groß und die Fehlermeldung plottet nicht auf.
Ich würde aber ungern was an der Programmstruktur verändern und wie du schon geschrieben hast , man kann die Fehlermeldung auch mit einem verwendeten stetig anwachsendes Array nach einer BuildArray/InsertIntoArray-Funktion beheben.
Wie kann ich die Fehlerbehebung vornehmen?
Gruß HCO
(19.07.2016 11:56 )Hydrogencarbonat schrieb: [ -> ]Wie kann ich die Fehlerbehebung vornehmen?
Wenn du nichts ändern willst an der Art der Datenspeicherung - GAR NICHT!
Dass das Konzept bescheiden ist, darauf hatten wir dich
aber schon hingewiesen und davor gewarnt.
Wer nicht hören will, muss fühlen - sorry.
Gruß, Jens
Eventuell eine Defragmentierung vornehmen?
Hallo HCO,
das schöne an LabVIEW ist, dass du dich als Programmierer (eigentlich) überhaupt nicht um die Speicherverwaltung kümmern musst.
Jedensfalls solange nicht, wie du "vernünftig" programmierst!
Wenn du dagegen "unvernünftig" programmierst, bekommst du Fehlermeldungen.
Lösung: "vernünftig"/"ordentlich" programmieren!
Ja, aber man könnte die Speicherverwaltung verändern.
Aber ja, Ihr habt recht.
TDMS und direkt einlesen ist die beste Option.
Danke für die Hilfe