Registriert: Mo Sep 02, 2002 15:41 Beiträge: 867 Wohnort: nahe Stuttgart
Hi,
ich hab ein kleines Programm geschrieben, dass Codes für Toneditoren von Nokiahandys (von zB. <a href='http://www.adir.de/' target='_blank'>http://www.adir.de/</a> ) zu normalem Text, Soundausgabe und Notenliniensystem verarbeiten soll.
Alles kein Problem, hab ich mir gedacht und gecodet. Jetzt steh ich vor einem Problem... anscheinend funktioniert die Sache, aber aus irgendeinem Grund zerreißts ihn, nach ein paar Abfragen, mit einem CPU Window und ich habe momentan keine Ahnung woran das liegen könnte.
Wenn also jemand so nett sein könnte und sich mein Programm <a href='http://encorex.no-ip.com/hosted_sites/bluetoby/ext/NokiaT.zip' target='_blank'> hier </a> anschauen könnte?
Vielen Dank im Vorraus !
Registriert: Mo Sep 23, 2002 19:27 Beiträge: 5812
Programmiersprache: C++
Oja...da sollte wohl jemand etwas Nachhilfe in Sachen Object Pascal suchen
Mir ist nämlich direkt folgende, typische Bereichsverletzung aufgefallen, dein Code :
Code:
for NumCount := 0 to Length(Nums) do
Du gehst mit deiner Schleife ein Element zu weit, was dann zu dieser Fehlermeldung führt.Richtig muß es so aussehen :
Code:
for NumCount := 0 to Length(Nums)-1 do
Wenn du unter den Compileroptionen die Bereichsprüfung aktiviert hättest, hättest du dir das Posting sparen können, denn dann hätte dir der Compiler nämlich gesagt das du an dieser (und einigen anderen Stellen) die Bereiche überschreitest.
Registriert: Mo Sep 02, 2002 15:41 Beiträge: 867 Wohnort: nahe Stuttgart
Hupsala, das hatte ich jetzt ganz vergessen noch einzufügen.... Wo finde ich denn die Compileroptionen? Unter "Environment-" und "Debuggeroptions" finde ich nichts...
Du hast zuerst den Zähler um 1 erhöht, und greifst mit dem neuen Wert als Index zu. Dabei fängt deine Liste mit der unteren Grenze 0 und nicht mit 1 an.
War trickreich, bin zuerst auch darauf reingefallen und habe den Fehler in der Funktion Decode gesucht.
Registriert: Mo Sep 02, 2002 15:41 Beiträge: 867 Wohnort: nahe Stuttgart
Wenn das Inc unten steht, will er mich immernoch nicht mit
"cmp dword ptr [edi+ecx*4+$04] $00" in Ruhe lassen.
Lasse ich es weg, sehe ich kein Output....
und sich im Debugmode befindet, gibts den Fehler... außerdem funktioniert so was wie 1* oder 1** nicht, was eigentlich C 2. Oktave, bzw. C 3. Oktave ergeben müsste...
Registriert: Mo Sep 02, 2002 15:41 Beiträge: 867 Wohnort: nahe Stuttgart
Jo, jetzt funktionierts prächtig...
nur leider wirds nicht richtig nach dem Schema
"1. Oktave / C / Viertelnote (4) / Zeilenumbruch" angezeigt, sondern irgendwie anders...
Registriert: Mo Sep 02, 2002 15:41 Beiträge: 867 Wohnort: nahe Stuttgart
Ahhh... das casen hat nicht funktioniert weil eine if-Abfrage ein else davor hatte, wo keins seins sollte, bei einer if-Abfrage das and-Statement gefehlt hat und die Addition von Plus und Minus nicht gut festgelegt war
(statt Plus = 1 und Minus = -1 war Plus = -1 und Minus = -2....)
Registriert: Mo Sep 02, 2002 15:41 Beiträge: 867 Wohnort: nahe Stuttgart
Jetzt funktioniert fast alles, nur bei einem * oder # wird der direkte Ton (zB. C oder D) danach nicht angezeigt, sondern ein leere Lücke gelassen. Download is updated)... ich entdeck den verdammten Bug nicht....
Mitglieder in diesem Forum: 0 Mitglieder und 8 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.