"zusammenhängen von Strings" spinnt teilweise
-
Guten Morgen zusammen.
Also ich habe eine Datei, in der verschiedene Befehle gespeichert sind. Der Name des Befehls, eine Parameterliste (in Form einer Zeichenfolge) und schließlich noch eine Beschreibung des Befehls, bilden eine Einheit.
Ich habe folgende Schleife zum Auslesen geschrieben:while (!feof(file)) { readText = ""; // Titel fread(&charBuffer, 2, 1, file); while (charBuffer != '#') { readText += charBuffer; fread(&charBuffer, 2, 1, file); } // for (int i=0; i<byteBuffer; i++) sText.Format("Titel: %s", readText); curItem = m_fileTree.InsertItem(sText, fatherItem); readText = ""; // Paramterliste fread(&charBuffer, 2, 1, file); while (charBuffer != '#') { readText += charBuffer; fread(&charBuffer, 2, 1, file); } // for (int i=0; i<byteBuffer; i++) sText.Format("Parameterliste: %s", readText); m_fileTree.InsertItem(sText, curItem); readText = ""; // Bemerkung fread(&charBuffer, 2, 1, file); while (charBuffer != '#') { readText += charBuffer; fread(&charBuffer, 2, 1, file); } // for (int i=0; i<byteBuffer; i++) sText.Format("Bemerkung: %s", readText); m_fileTree.InsertItem(sText, curItem); }Komischerweise hat das Debuggen ergeben, dass in dem Teil
readText = ""; // Titel fread(&charBuffer, 2, 1, file); while (charBuffer != '#') { readText += charBuffer; fread(&charBuffer, 2, 1, file); } // for (int i=0; i<byteBuffer; i++) sText.Format("Titel: %s", readText); curItem = m_fileTree.InsertItem(sText, fatherItem);der Titel des ersten(!) Befehls jeweils gelesen wird (also in charBuffer steht), aber nicht an readText angehängt wird. Das ist insofern verwunderlich, da es bei den darauf folgenden Befehlen klappt. Auch die Parameterliste wird richtig angezeigt etc.
Es sollte noch gesagt sein, dass beim ersten Durchgang dieser Schleife (von der Titel zusammengesetzt wird) charBuffer=''. Kann das was damit zu tun haben?Liebe Grüße und danke!
Euer Schuri
-
Ich verstehe nicht was Du hier machst! fread liest zwei Zeichen! Wie ist aber Dein charBuffer konstruiert? Auch zwei Zeichen? Wenn Du nun += verwendest muss natürlich charBuffer nullterminiert sein!
Gehe ich recht in der Annahme das es sich hier um einen Sring handelt bei dem die einzelnen Segmente miteinem # getrennt sind?
Dann ist es schneller und einfacher eine Zeile zu lesen und mit strtok dann aufzuspalten!Dieses zeichenweise lesen halte ich persönlich für unübersichtlich und wenig performant.