Registriert: So Jun 23, 2002 12:37 Beiträge: 144
Programmiersprache: C/C++, Delphi
Ich weiß nicht ob der Bug hier im Feedback-Teil oder woanders im Forum schon angesprochen wurde oder ob es anderen schon aufgefallen ist, aber beim Aufruf der GetSym-Prozedur wird das allerletzte Zeichen eines Scriptes einfach ignoriert (sofern es ein Einzelzeichen ( ',', '.', '(', ')', ... ) ist).
Rekonstruktion:
- Herunterladen der Sourcen des Script-Tutorials
- Löschen des Line-Breaks am Ende der test.script Datei oder erstellen einer neuen Textdatei, wobei der Inhalt einfach nur ein Punkt oder Komma ist.
- Laden der test.script bzw. der neu erstellten Textdatei mit der scanner.exe
Bei der Datei test.script sollte das letzte Symbol (ein ";") eigentlich angezeigt werden, wird aber ignoriert.
Bei der selbst erstellten Textdatei wird überhaupt kein Symbol angezeigt.
Das Problem liegt ganz am Anfang der GetSym-Prozedur:
Zitat:
... while true do begin Str := ''; Symbol := sNone;
while (Ch = ' ') and not EoF(InFile) do GetCh;
//Wir brauchen nichts machen, wenn das Dateiende erreicht ist if EoF(InFile) then Exit; ...
Falls das letzte Zeichen wird hier mittels des Grün-markiertem Code gelesen. Da nun aber das EoF (Rot) erreicht ist wird GetSym abgebrochen (in der test-Datei der Script-Sourcen bewirkt das Line-Break, das das EoF noch nicht erreicht ist, nachdem das Zeichen eingelesen wurde).
Tauscht man das Grüne und das Rote Statement aus klappt alles wunderbar.
Ist jetzt vlt. nicht weltbewegend, hat mich vorhin bloß geärgert weil ich nicht genau wusste wo der Fehler lag und ob ich iergendetwas wichtiges überlesen hab. (Sollte evtl. geändert werden)
hupsi, das stimmt tatsächlich... da wird tatsächlich das letzte zeichen nicht gescanned. ich bin leider grad in meinen urlaubsvorbereitungen und schon fast weg, deswegen ist es grad aweng schlecht mit fehler ausbessern - ich denke ihr bekommt das ausgemerzt - ansonsten bin ich in 2 wochen wieder da, dann kann ich mich drum kümmern
Mitglieder in diesem Forum: 0 Mitglieder und 5 Gäste
Du darfst keine neuen Themen in diesem Forum erstellen. Du darfst keine Antworten zu Themen in diesem Forum erstellen. Du darfst deine Beiträge in diesem Forum nicht ändern. Du darfst deine Beiträge in diesem Forum nicht löschen. Du darfst keine Dateianhänge in diesem Forum erstellen.