[uBasic] "Nested if" Bug

CHDK-Skripte, CHDK-Entwicklung, PC-Zusatzprogramme, Informationen für Tüftler

Beitragvon gehtnix » 18.09.2009, 21:47

Hallo,

Regel 2 ist verstanden.

.....mit GOTO-Zielen ausserhalb von IF-ENDIF-Bereiche.
Da meintest Du wohl "innerhalb"?
Da habe ich GOTO-Zeilen gelesen, mit GOTO-Zielen dann auch klar.

Mit dem Thread zu den If-Regeln könnte der Rudi ja zu gegebener Zeit einen neues Posting aufmachen und msl zieht dann diesen Thread unten rein, dann ist alles beieinander.

gruß gehtnix
Benutzeravatar
gehtnix
CHDK-Legende
CHDK-Legende
 
Beiträge: 2406
Bilder: 8
Registriert: 17.04.2008, 12:42
Wohnort: München
Kamera(s): A610 100e+f + IXUS990 IS

Beitragvon rudi » 21.09.2009, 12:09

Hallo Gemeinde,

gern würde ich sehen, dass unsere gemeinsame Arbeit es bis in den trunk schafft.
Nur ist mir der Ablauf für dieses Vorhaben nicht bekannt. Es geht schon damit los, dass das erzeugte Diff nicht das Richtige war und da gibt es bestimmt noch andere Stolpersteine.

Ach so, wenn man dann schon den Versuch startet, sollte ich nicht noch den DO- und WHILE-Schleifen eine Fehlermeldung wegen des Stapelüberlaufes spendieren?

Gruß Rudi
Benutzeravatar
rudi
CHDK-Spezialist
CHDK-Spezialist
 
Beiträge: 510
Registriert: 11.09.2009, 11:27
Kamera(s): A590IS_101B, SX260_100B

Beitragvon CHDKLover » 21.09.2009, 12:14

Hallo rudi,
rudi hat geschrieben:Ach so, wenn man dann schon den Versuch startet, sollte ich nicht noch den DO- und WHILE-Schleifen eine Fehlermeldung wegen des Stapelüberlaufes spendieren?
Ja das währe echt toll.
Die einfachste Möglichkeit währe, wenn du die "ubasic.c" postest. Dann kann einer ein diff erstellen.

Oder Differstellung mit der Windows Shell (32Bit):
Im Anhang ist ein SVN-Client. Denn kannst du in die Path-Varriable einbinden und dann per
Code: Alles auswählen
svn checkout https%u3a//tools.assembla.com/svn/chdk/trunk
ein neues Reposetroy einrichten.
Dann dein tauschst du einfach die ubasic.c aus und erstellst das diff wie folgt:
Code: Alles auswählen
cd trunk
svn diff > <Dateiname>.diff


CHDKLover
Dateianhänge
svn.zip
SVN-Client
(1.51 MiB) 636-mal heruntergeladen
Zuletzt geändert von CHDKLover am 21.09.2009, 19:10, insgesamt 6-mal geändert.
A610 100e CHDK-DE: aktuelle Version
Benutzeravatar
CHDKLover
Super-Mod
Super-Mod
 
Beiträge: 878
Bilder: 8
Registriert: 12.09.2007, 18:25
Wohnort: Dresden
Kamera(s): a610 100e

Beitragvon msl » 21.09.2009, 12:24

hallo rudi,

wir sollten Deine tollen Analysen und Bereinigungen ganz gezielt im Bugtracker anmelden und mit einer Patch-Datei als Lösung aufwarten. Das können wir gemeinsam lösen.

Meine Erfahrung ist aber, nicht mehrere Dinge "zusammenzuschmeißen". D. h., wir müssen if und do/while getrennt als Patch anbieten.

Das ist also alles nur eine Frage der Organisation.

Gruß msl
Benutzeravatar
msl
Super-Mod
Super-Mod
 
Beiträge: 4567
Bilder: 271
Registriert: 22.02.2008, 11:47
Wohnort: Leipzig
Kamera(s): A720 1.00c
SX220 1.01a

Beitragvon rudi » 21.09.2009, 18:29

Hallo msl und CHDKLover,

ich habe mich mal an das IF-diff gewagt. Aber bei CHDKLovers Tool bekomme ich eine Fehlermeldung über eine fehlende DLL. Mit dem CHDK-Shell sollte es ja auch gehen. Ich habe den trunk 803 als Referenz verwendet und die DIFF-Funktion aufgerufen. Als Ergebnis habe ich zwei Dateien (Endung TXT und PAT), deren Inhalt mir identisch erscheint und einen guten Eindruck macht. Möglicherweise kann eine dieser Dateien mit der Endung .diff versehen werden und gut. Oder geht es damit nicht?
Ich habe Euch die Dateien und die verwendete ubasic.c angehängt.

[EDIT|20:20]Ich habe es mit CHDKLovers Hilfe nun doch hinbekommen ein diff zu erstellen (siehe Anhang). Danke!
Die Dateien sehen ähnlich aus, sind aber nicht gleich. Hätten sie trotzdem funktioniert?[/EDIT]

Die "Stack-Meldungen" sind bereits auch fertig, aber ich will diese erst einmal ausgiebig Prüfen.

Vielen Dank für die Unterstützung.

Rudi
Dateianhänge
if.diff
(8.33 KiB) 629-mal heruntergeladen
if_patch.zip
(14.45 KiB) 629-mal heruntergeladen
Benutzeravatar
rudi
CHDK-Spezialist
CHDK-Spezialist
 
Beiträge: 510
Registriert: 11.09.2009, 11:27
Kamera(s): A590IS_101B, SX260_100B

Beitragvon CHDKLover » 21.09.2009, 19:34

Entschuldige rudi,
war mein Fehler! Ich habe einige dll's vergessen mit zu packen. Jetzt sollte es funktionieren.
Die diffs die du erstellt hast, scheinen aber auch schon richtig zu sein.
Nur die Zeilenumbrüche deiner Dateien sind nicht im Windows Format (CR+LF) sondern im Linux Format (LF). Das macht aber bei diffs nichts nur wenn du neue Dateien hast wird es kritisch. Aber sonst klasse Arbeit. =D>

CHDKLover
A610 100e CHDK-DE: aktuelle Version
Benutzeravatar
CHDKLover
Super-Mod
Super-Mod
 
Beiträge: 878
Bilder: 8
Registriert: 12.09.2007, 18:25
Wohnort: Dresden
Kamera(s): a610 100e

Beitragvon BigDaddy » 23.09.2009, 10:50

Hi Rudi & alle,

freut mich riesig, dass es in den letzten Tagen so erfolgversprechend weiter gegangen ist mit dieser Geschichte! :D
Seid ihr schon dabei, es im Bugtracker anzumelden?

Ich habe mir gedacht, dass es bei dieser Anmeldung bestimmt nützlich wäre, zusätzlich zur Lösung auch kurz zu verdeutlichen, wie schwerwiegend das Problem ist, welches sie löst. (Mein Eindruck ist, dass zwar jeder weiß, dass es irgendeinen Bug mit dem IF gibt, aber gemeinhin nicht so bekannt ist, wie schwerwiegend er eigentlich ist, wie auch uns hier im Forum ja vielleicht erst in den letzten Wochen so richtig klargeworden.) Vielleicht ein kurzes Script-Stück, an dem man verdeutlichen kann, dass es mit der jetzigen uBasic-Version unrettbar "krank" ist? Nur so eine Idee ...

Außerdem natürlich die "3 goldenen Regeln" nicht vergessen.

Und hier aber noch ein anderer Gedanke. Ich zögere etwas, das zu schreiben, weil es vielleicht zu Unzeit kommt. Aber ich befürchte natürlich, dass ein naheliegender Einwand gegen die Übernahme von Rudi's Verbesserung sein könnte, dass sie existierende Scripts inkompatibel macht. Ich hatte früher dazu bemerkt, dass das nur Scripts beträfe, die eh "defekt" sind. So ganz stimmt das aber natürlich nicht, weil ein alleine stehender (= nicht verschachtelter) Einzeiler mit "endif" in der bisherigen Version läuft, in der neuen aber nicht mehr. Das ist in der Praxis wahrscheinlich der häufigste Fall. Daher meine Frage an Rudi: wäre es denn nicht möglich, den uBasic-Code so zu ändern, dass auch in Zukunft ein "endif", welches nicht alleine in einer Zeile steht (also eines am Ende eines Einzeilers) einfach ignoriert wird, ohne einen parse error zu liefern? So dass es also quasi optional wäre am Ende eines Einzeilers? Ohne irgendwas anderes zu verändern an deiner Lösung?

Ich stelle mir vor, dass der Parser doch ohnehin auf jeden Fall weiß, ob das endif "unerwartet" (am Ende eines Einzeilers) kommt, und warum dann nicht einfach ignorieren?

Kann natürlich sein, dass die Idee ganz dumm ist und das nicht so einfach geht, wie ich mir das meiner Naivität vorstelle. Wenn's zu kompliziert wäre oder falls es ohnehin zu spät ist für so eine Überlegung, dann kann man es auch lassen.
Grüße
BigDaddy
__________________
A620 Firmware v100f
CHDK v0.9.8-794
BigDaddy
CHDK-Einsteiger
CHDK-Einsteiger
 
Beiträge: 32
Registriert: 04.09.2009, 15:05
Wohnort: München

Beitragvon rudi » 23.09.2009, 17:45

Hallo,

eine Option für das ENDIF in Einzeiligen IF-Befehlen ist machbar. Aus Kompatibilitätsgründen sollte dieser Aspekt hier mal diskutiert werden.

Zum Thema Bugtracker möchte ich gern die Hilfe eines erfahrenen Users in Anspruch nehmen.
Werden dafür noch Zuarbeiten benötigt?
Sollten am IF-Befehl noch Änderungen vorgenommen werden?
Hat jemand noch Unstimmigkeiten gefunden?
Haben den auch andere User, außer BigDaddy und gehtnix, Tests durchgeführt?

In jedem Fall sollte Alles geprüft und sinnvoll sein, damit es der Gemeinschaft hilft.

Gruß Rudi
Benutzeravatar
rudi
CHDK-Spezialist
CHDK-Spezialist
 
Beiträge: 510
Registriert: 11.09.2009, 11:27
Kamera(s): A590IS_101B, SX260_100B

Beitragvon gehtnix » 23.09.2009, 20:44

Hallo,

einige Skrpte die vom Englischen stammen habe ich mir angeschaut. Da wird ein Einzeilen-IF immer ohne Endif geschrieben. So wie Rudi es jetzt gestaltet hat finde ich das schon OK.

Es werden ohnehin nicht viele Einzeilen-EndIF´s existieren und das Löschen geht Schnell von der Hand. Auch weiß ich nicht ob dieses Einzeilen-EndIF sich anderswo verbreitet hat.

gruss gehtnix
Benutzeravatar
gehtnix
CHDK-Legende
CHDK-Legende
 
Beiträge: 2406
Bilder: 8
Registriert: 17.04.2008, 12:42
Wohnort: München
Kamera(s): A610 100e+f + IXUS990 IS

Beitragvon BigDaddy » 23.09.2009, 21:05

Hi,

ja, auch ich habe etwas rumgeschaut und habe den selben Eindruck.
Prima, dann braucht wohl nichts geändert zu werden!
Falls noch mehr getestet werden sollte, biete ich gerne meine Sklavendienste an.
Grüße
BigDaddy
__________________
A620 Firmware v100f
CHDK v0.9.8-794
BigDaddy
CHDK-Einsteiger
CHDK-Einsteiger
 
Beiträge: 32
Registriert: 04.09.2009, 15:05
Wohnort: München

Beitragvon CHDKLover » 24.09.2009, 08:45

Hallo rudi,
wir brauchen noch mal eine Zusammenfassung, damit derjenige, der dein Werk in den Bugtracker einträgt es gut verkaufen kann und nichts vergisst.

Danke CHDKLover
A610 100e CHDK-DE: aktuelle Version
Benutzeravatar
CHDKLover
Super-Mod
Super-Mod
 
Beiträge: 878
Bilder: 8
Registriert: 12.09.2007, 18:25
Wohnort: Dresden
Kamera(s): a610 100e

Beitragvon msl » 24.09.2009, 10:50

Hallo,

Zu der Zusammenfassung wäre es nützlich, kurze Beispielskripte beizulegen (Vorher-Nachher-Effekt).

Es gab oder gibt immer noch Anmeldeprobleme im Bugtracker. Ich weiß nicht, wie der gegenwärtige Status ist. Rudi könnte versuchen, sich anzumelden. Klappt es, kann er es selbst eintragen. Schließlich ist auch die Arbeit von Rudi. Funktioniert die Anmeldung immer noch nicht, können CHDKLover oder ich den Eintrag mit Hinweis auf die Arbeit von Rudi machen.

Gruß msl
Benutzeravatar
msl
Super-Mod
Super-Mod
 
Beiträge: 4567
Bilder: 271
Registriert: 22.02.2008, 11:47
Wohnort: Leipzig
Kamera(s): A720 1.00c
SX220 1.01a

Beitragvon CHDKLover » 26.09.2009, 11:25

Hallo rudi,
ich hab dein Werk in den Bugtracker gestellt ( http://chdk.kernreaktor.org/mantis/view.php?id=317 ). Danke für deine tolle Zusammenarbeit!!!

CHDKLover
A610 100e CHDK-DE: aktuelle Version
Benutzeravatar
CHDKLover
Super-Mod
Super-Mod
 
Beiträge: 878
Bilder: 8
Registriert: 12.09.2007, 18:25
Wohnort: Dresden
Kamera(s): a610 100e

Beitragvon rudi » 26.09.2009, 12:28

Hallo Scripter,

als Erstes möchte ich CHDKLover für seinen Einsatz danken! Er hat, durch seine Fachkompetenz und die geopferte Zeit, aus meiner Zuarbeit einen Text geschrieben, der das Problem meines erachtens auf den Punkt bringt. Zusätzlich zum Bugtracker hat CHDKLover das Problem und die Lösung im int. Forum vorgestellt.

Nun der Nachteil, sollte es das "Neue IF" ins CHDK schaffen:
1. Dann hat mindestens gehtnix 'ne ganze menge Arbeit um seine Scripte neu zu testen.
2. Der Versionsinformation kommt bei uBasic-Scripten eine neue Bedeutung zu.
3. Die Moderatoren/unser Admin müssen sich überlegen, wie sie die Script-Sammlung gestalten wollen oder ob sie eine Deadline festlegen.
4. Änderungen im Handbuch.

Ob CHDKLover diesen Sachverhalt im int. Forum absichtlich wegelassen hat?

Gurß Rudi
Benutzeravatar
rudi
CHDK-Spezialist
CHDK-Spezialist
 
Beiträge: 510
Registriert: 11.09.2009, 11:27
Kamera(s): A590IS_101B, SX260_100B

Beitragvon gehtnix » 26.09.2009, 13:36

Hallo Skripter,

mein Gedanke zur "Umstellung".

Bevor die Änderungen nun im CHDK erscheinen, mit reyalp oder wer das nun dort in die Hand nimmt, abklären ob die Änderungen übernommen werden. Dann könnte man ja einen Stichtag, Vorschlag 3.10. (oder 10.10), festlegen. Dadurch haben wir Skripter einen Vorlauf und können die Skripte abklopfen, ebenso msl der unermüdlich das Handbuch auf Vordermann bringt.

Zudem stelle ich dann ins Archiv FETT den Hinweis mit der CHDK-Version ein. Weiterhin könnte der Admin unter "AKTUELL" für 4 (8/12) Wochen einen Hinweis hinterlegen.

Vielleicht melden sich User die Lust haben mit ihrem Kameras die neue Version zu testen. Ich kann es ja nur für die A610 testen. Damit bringe ich jetzt ungefragt :oops: den Rudi mit ins Spiel, denn Rudi müsste die jeweilige Version kompilieren.

gruss gehtnix
Benutzeravatar
gehtnix
CHDK-Legende
CHDK-Legende
 
Beiträge: 2406
Bilder: 8
Registriert: 17.04.2008, 12:42
Wohnort: München
Kamera(s): A610 100e+f + IXUS990 IS

VorherigeNächste

Zurück zu Code-Ecke

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 2 Gäste

cron