| |
|
|
- Seite 1 - |
|
Walter | Hallo,
(Freeprofan32) habe bei einem größeren funktionierenden Programm ein wenig hier verändert und und ein wenig dort hinzugefügt - beim nachfolgenden Start im Interpreter ein kurzes Aufflackern - und nichts weiter. Auch der Compiler stürzte sogleich nach seinem Start mit einem knappen Fehlermeldungsschrei ab. Dies hier blieb dann nach längerem Recherchieren und anschließendem Eindampfen des Problems als Auslöser übrig:
cls
declare text&,Name$
Text&= CREATE("Text",%HWND,"",0030,0020,0550,0150)
Name$="Hugo"
' Das fehlende Anführungszeichen vor dem Rufzeichen
' in der nächsten Zeile killt Interpreter und Compiler
settext text&,Name$+!"
waitinput
Ich hatte einfach ein Anführungszeichen vergessen.
Nebst dem Spaß, Compiler und Interpreter dadurch lahmlegen zu können, dass man ein Anführungszeichen entfernt, nun eine Frage: Wie kann ich die Fehlermeldung von Interpreter/Compiler in eine Datei umleiten oder auf dem Bildschirm für länger als 1/10 Sekunde sehen - ich weiß leider noch immer nicht, ob diese Meldung mir vielleicht 30 Minuten Suchzeit erspart hätte, da ich sie bisher noch nicht lesen konnte... |
|
|
| |
|
|
|
« Dieser Beitrag wurde als Lösung gekennzeichnet. » |
|
RGH | Ok:
1. Die Stelle an der FreePascal empfindlicher reagiert als Delphi wurde gefunden und bereinigt. Der Fehler trat nur auf, wenn das Anführungszeichen das letzte Zeichen der Zeile war, selbst wenn es eine Kommentar-Zeile war. Der Interpreter reagiert nun wie er soll und meldet den Fehler "Stringende nicht gefunden." (Natürlich nicht bei Kommentar-Zeilen)
2. Der Compiler überprüft jetzt, ob eckige und Runde Klammern ausgewogen sind und die Anzahl der Anführungszeichen gerade ist.
In XProfan wird dies in der kommenden Version X3.1 realisiert sein, bei FreeProfan 32 und 64 mit der jeweils nächsten Version.
Gruß Roland |
|
|
| Intel Duo E8400 3,0 GHz / 4 GB RAM / 1000 GB HDD - ATI Radeon HD 4770 512 MB - Windows 7 Home Premium 32Bit - XProfan X4 | 07.03.2016 ▲ |
|
|
|
|
|
RGH | Einen Weg, diese Fehlermeldung (ohne Debugger) länger anzuzeigen habe ich auch noch nicht gefunden, aber in der Regel dürfte sie auf eine Schutzverletzung hinweisen und somit nicht hilfreich sein.
Und ja: Eigentlich sollte hier, wie in XProfan, eine ordentliche Fehlermedung "Stringende fehlt!" erscheinen.
In einigen Punkten ist FreePascal, mit dem FreeProfan kompiliert wurde, leider etwas empfindlicher als Delphi, mit dem XProfan kompiliert wird. Ich muss mal schauen ...
Gruß Roland |
|
|
| XProfan X3Intel Duo E8400 3,0 GHz / 4 GB RAM / 1000 GB HDD - ATI Radeon HD 4770 512 MB - Windows 7 Home Premium 32Bit - XProfan X4 | 05.03.2016 ▲ |
|
|
|
|
Walter | Jetzt funktioniert es ja wieder, und darüber bin ich sehr froh! Man ist aber reichlich hilflos, wenn man nicht weiß, wo man zu suchen beginnen soll. Und so ein kleines, fehlendes Zeichen in 7.000 Zeilen Code ist nicht leicht zu finden... Danke, beste Grüße Walter |
|
|
| |
|
|
|
E.T. | Eben probiert: XPSE "merkt" es auch meckert mit Fehlermeldung. Vlt. kann man dies ja derweil irgendwie zur Fehlersuche nutzen. |
|
|
| XProfan X3Grüße aus Sachsen... Mario WinXP, Win7 (64 Bit),Win8(.1),Win10, Win 11, Profan 6 - X4, XPSE, und 'nen schwarzes, blinkendes Dingens, wo ich das alles reinschütte... | 05.03.2016 ▲ |
|
|
|
|
Walter | In dem kurzen Beispiel findet XPSE tatsächlich den Fehler, im großen Programm jedoch leider nicht (weshalb auch immer). Danke aber jedenfalls für die Hilfe - ist zumindest eine weitere Möglichkeit, bevor man sich der großen Verzweiflung hingibt... Liebe Grüße Walter |
|
|
| |
|
|
|
Jörg Sellmeyer | Sowas kann bei der Fehlersuche hilfreich sein:
|
|
|
| |
|
|
|
| hat das Thema nach FreeProfan verschoben. |
|
|
| |
|
|
|
Walter | Das ist eine gute Idee! Man findet damit natürlich auch Stellen, wo die fehlenden Anführungszeichen erst in Fortsetzungszeilen auftauchen, doch sind die schnell als unschuldig zu entlarven. Ja, danke, funktioniert, ist super! LG Walter |
|
|
| |
|
|
|
Jörg Sellmeyer | Man kann es noch sehr einfach erweitern, um z. B. fehlende Klammern zu finden. Die können auch manchmal solche Probleme bereiten.
Var Datei$ = Par$(1)
Declare Zeile$,i%,Anzahl%
Assign #1,Datei$
Reset #1
WhileNot EoF(#1)
Inc i%
Input #1,Zeile$'"
If InStr("\q",Zeile$)')
Anzahl% = Len(Zeile$,"\q")
CaseNot Anzahl% Mod 2:AddString Str$(i%) + " Quote Error " + Zeile$
EndIf
If Match$("(~(|~))",Zeile$) > ""
If Len(Zeile$,"(") <> Len(Zeile$,")")
AddString Str$(i%) + " Bracket Error " + Zeile$
EndIf
EndIf
Wend
ListBox$("Ergebnis",2)
|
|
|
| |
|
|
|
H.Brill | Ich fände es auch gut, wenn Roland dazu noch was einfällt. Hatte solche Probleme mit den Freeprofanversionen auch öfters.
Besonders, wenn die Meldung kommt :
Speicher für Integer Variablen erschöpft
oder so ähnlich.
Da kann man u.U. recht lange nach dem Fehler suchen. |
|
|
| Benutze XPROFAN X3 + FREEPROFAN Wir sind die XProfaner. Sie werden von uns assimiliert. Widerstand ist zwecklos! Wir werden alle ihre Funktionen und Algorithmen den unseren hinzufügen.
Was die Borg können, können wir schon lange. | 06.03.2016 ▲ |
|
|
|
|
Jörg Sellmeyer | Da muss man eigentlich immer nach einer Variablendeclaration innerhalb einer Schleife suchen, würde ich mal vermuten. Wenn du mein Programm anpasst und nach " var " und "declare " suchst, bekommst du zumindest alle Zeilen des Programms aufgelistet, die das enthalten und kannst so den Bereich eingrenzen. Vielleicht geht das sogar schneller mit der Suchfunktion im verwendeten Editor. |
|
|
| |
|
|
|
H.Brill | Was ich meinte, hat nicht nur mit Variablendeklarationen zu tun. Auch wenn ein Speicher zu klein dimensioniert wurde u.v.a. kommen solche Meldungen. |
|
|
| Benutze XPROFAN X3 + FREEPROFAN Wir sind die XProfaner. Sie werden von uns assimiliert. Widerstand ist zwecklos! Wir werden alle ihre Funktionen und Algorithmen den unseren hinzufügen.
Was die Borg können, können wir schon lange. | 06.03.2016 ▲ |
|
|
|