aus Binärdatei lesen funktioniert nicht
-
Zickedi schrieb:
Was ist daran nicht korrekt?
dass deine Klasse kein POD ist
Soll ich dann den Konstruktor weglassen ?
Nein, die einzelnen Felder separat abspeichern und laden.
-Wie fang ich dann das Ende der Datei ab ?
Wie immer.
-sizeof(*this) hab ich natürlich
aha, nur falsch abgetippt?
Macht es eigentlich einen Unterschied, ob ich
outfile.write((char*)this, sizeof(*this));
oder
//outfile.write((char*)(&messplatz), sizeof(messplatz));
schreibe ?
Logisch, ersteres schreibt die ganze Instanz in die Datei, letzteres nur den Inhalt des messplatz-Arrays. Was mich nahtlos zu der Frage bringt, was die zusätzlichen Membervariablen eigentlich für einen Zweck erfüllen? Augenscheinlich keinen, das sollten lokale Variablen der jeweiligen Funktionen sein.
BTW: Der Adressoperator vor messplatz ist unnötig.
Das Einlesen funktioniert immer noch nicht.
Ich versteh den Code nicht. Warum ist da eine Schleife drin?
-
aha, nur falsch abgetippt?
Bin mittlerweile beim Try/Error-Verfahren.
Daher kommt das.
zu der Frage bringt, was die zusätzlichen Membervariablen eigentlich für einen Zweck erfüllen
Die Aufgabenstellung gibt vor, die Messwerte in ne Struktur zu packen.
Warum ist da eine Schleife drin?
Welche Schleife?
-
Zickedi schrieb:
Bin mittlerweile beim Try/Error-Verfahren.
Daher kommt das.
Schlechte Idee, das bringt überhaupt nichts, weil die meisten Fehler zunächst unbemerkt bleiben oder deren Auswirkungen nicht zugeordnet werden können. Du solltest immer wissen, was du tust und warum du es tust.
zu der Frage bringt, was die zusätzlichen Membervariablen eigentlich für einen Zweck erfüllen
Die Aufgabenstellung gibt vor, die Messwerte in ne Struktur zu packen.
Ich rede von zusätzlichen Variablen. Also alle ausser dem Messwert-Array. Die sind anscheinend unnütz und sollten nicht Membervariablen sein.
Warum ist da eine Schleife drin?
Welche Schleife?
die while-Schleife in Import()
-
zusätzlichen Variablen
Ich muss die doch irgendwo definieren. Wüsste jetzt nicht, wie ich das anders anstellen sollte.
[quote]while-Schleife in Import()[quote]
Die liest aus der Datei aus, solange Zeichen darin vorhanden sind.if (!infile) cout << "bla";
müsste es auch heißen.
Hm, irgendwie steh ich auf dem Schlauch.
-
Zickedi schrieb:
zusätzlichen Variablen
Ich muss die doch irgendwo definieren. Wüsste jetzt nicht, wie ich das anders anstellen sollte.
Nur da, wo sie gebraucht werden. Der Gültigkeitsbereich einer Variablen sollte immer so klein wie möglich sein ... nimm z.B. deine Variable i. Die kommt in 3 Funktionen vor, aber sie wird am Ende auf 0 gesetzt bzw. ihr Wert am Ende ist irrelevant, weil sie am Anfang der anderen Funktionen auf 0 gesetzt wird. Anders gesagt, der Wert von i gehört nicht zum Zustand des Objektes. i sollte demzufolge im Kopf der for-Schleife im Konstruktor sowie jeweils am Anfang von Eingabe und Ausgae deklariert werden.
Ähnliches gilt für zaehl und antwort.
[quote][quote]while-Schleife in Import()
Die liest aus der Datei aus, solange Zeichen darin vorhanden sind.
Aber warum? Dein Array hat nur soundsoviele Einträge, was wenn die Datei länger ist? Dann überschreibst du das Array immer wieder ... wo ist da der Sinn?
-
i sollte demzufolge im Kopf der for-Schleife im Konstruktor sowie jeweils am Anfang von Eingabe und Ausgae deklariert werden.
Dann hab ich das bisher immer falsch gelernt. Selbst unser Prof definiert i am Anfang der Klasse.
Ich will jetzt nur mal, dass er die eingegebenen Werte wieder aus der Datei liest.
Ob der Array auch wirklich so gross ist wie die Datei spielt erst mal keine Rolle.
-
Wenn ich das Programm unter Windows starte, funktioniert es wie gewollt.
Also hat es wohl etwas mit der Linux-Oberfläche zu tun...
-
Zickedi schrieb:
i sollte demzufolge im Kopf der for-Schleife im Konstruktor sowie jeweils am Anfang von Eingabe und Ausgae deklariert werden.
Dann hab ich das bisher immer falsch gelernt. Selbst unser Prof definiert i am Anfang der Klasse.
Dafür kann er bestimmt andere Dinge ganz toll
Wenn ich das Programm unter Windows starte, funktioniert es wie gewollt.
Also hat es wohl etwas mit der Linux-Oberfläche zu tun...Komische Schlussfolgerung. Ich teste das mal ... bei mir gehts.
-
Hm, woran könnte es dann liegen?
Beim Einlesen gibt er mir nur den Konstruktorwert wieder -> Wert1: 0, Wert2: 0.
Bei Windows gibt er mir sauber die Werte der Datei aus.Kanns am Header liegen ?
Welche hast du eingebunden?
-
#include <iostream> #include <fstream> #include <ostream> #include <istream>
Den ganzen conio-Kram hab ich entfernt.
-
Jetzt funktioniert es, habe mal den Pfad geändert und siehe da.
Hat auch mit dem Löschen der Datei zu tun.
Werd das nochmal bearbeiten.Aber schon wieder was gelernt.