Guten Morgen,
ich arbeite gerade an einem Programm, das einfach nur Punkte aus einer Datei lesen soll. Dazu habe ich eine Klasse Point2D, welche die einzelnen Punkte darstellen, und eine Klasse Outline, die ein Kontur enthält. Eine Kontur besteht aus einem Startpunkt und einer Menge von Punkten, die relativ zum Startpunkt liegen.
Das Auslesen klappt. Ich kann auch alle Punkte setzen. Das einzige Problem ist der Startpunkt, auch ein Objekt der Klasse Point2D. Mein Programm setzt die Punkte richtig, aber wenige Anweisungen später sind die Werte wieder verschwunden. Ich kann mir nicht erklären, warum die Werte geändert werden.
Hier seht ihr den relevanten Ausschnitt aus dem Programm:
Die x- und y-Werte des Startpunktes sind richtig nach der Zeile Outline outline(x, y);, also am Ende der Schleife. Im nächsten Schleifendurchlauf sind sie wieder anders. Und zwar handelt es sich um Werte am obersten Rand von int.
Ich habe die beiden Klassen Outline und Point3D getestet ohne Schleife und mit von Hand eingegebenen Werten. Da hat alles einwandfrei funktioniert.
Hat jemand von euch eine Idee, wo der Fehler liegen könnte?
Viele Grüße,
Christopher
ich arbeite gerade an einem Programm, das einfach nur Punkte aus einer Datei lesen soll. Dazu habe ich eine Klasse Point2D, welche die einzelnen Punkte darstellen, und eine Klasse Outline, die ein Kontur enthält. Eine Kontur besteht aus einem Startpunkt und einer Menge von Punkten, die relativ zum Startpunkt liegen.
Das Auslesen klappt. Ich kann auch alle Punkte setzen. Das einzige Problem ist der Startpunkt, auch ein Objekt der Klasse Point2D. Mein Programm setzt die Punkte richtig, aber wenige Anweisungen später sind die Werte wieder verschwunden. Ich kann mir nicht erklären, warum die Werte geändert werden.
Hier seht ihr den relevanten Ausschnitt aus dem Programm:
Code:
QByteArray buffer; // A buffer. QString bufferString; // A buffer for a string. QString line; // The current line. int x; // The x-coordinate of a point. int y; // The y-coordinate of a point. Outline outline; //A readed outline. int charCounter = 0; // A counter for the characters in the line. Point2D point; // A temporary point. QFile file(filename); if ((file.open(QIODevice::ReadOnly)) != true) { // Fehlermeldung. Try-catch. } else { while (file.atEnd() == false) { // Read one line. buffer = file.readLine(); line = buffer; // If line contains the word "Polygon". if((charCounter = line.indexOf(Constants::POLYGONS_START_WORD, 0, Qt::CaseInsensitive)) >= 0) { // Determine the x-coordinate of the startingpoint. buffer = file.readLine(); line = buffer; posEqualSign = line.indexOf("=", charCounter, Qt::CaseInsensitive); bufferString = line.mid(posEqualSign + 1); x = bufferString.toInt(false, 10); // Determine the y-coordinate of the startingpoint. buffer = file.readLine(); line = buffer; posEqualSign = line.indexOf("=", charCounter, Qt::CaseInsensitive); bufferString = line.mid(posEqualSign + 1); y = bufferString.toInt(false, 10); // Create the outline with the determined startingpoint. Outline outline(x, y); } } } file.close();
Ich habe die beiden Klassen Outline und Point3D getestet ohne Schleife und mit von Hand eingegebenen Werten. Da hat alles einwandfrei funktioniert.
Hat jemand von euch eine Idee, wo der Fehler liegen könnte?
Viele Grüße,
Christopher
Comment