Deutsch
Forum

Super-Absturz

 
- 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...
 
05.03.2016  
 



« Dieser Beitrag wurde als Lösung gekennzeichnet. »

- Seite 2 -



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  
 



 
- Seite 1 -



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.
 
XProfan X3
Windows XP SP2 XProfan X4
... und hier mal was ganz anderes als Profan ...
06.03.2016  
 



 
- Seite 2 -



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  
 




Walter
Noch zu Mario:
Habe jetzt eine Idee davon, warum XPSE im großen Programm den Fehler nicht meldet: XPSE bringt eine Warnung ("Unbekannte Escapesequenz"), die wahrscheinlich den Fehler überdeckt (und in meinem großen Programm gibt es etliche Stellen mit "\", die auch nur mühselig auskommentierbar sind).

Ein Beispiel:

cls
declare text&,Name$,Datei$
Text&= CREATE("Text",%HWND,"",0030,0020,0550,0150)
Name$="Hugo"
Datei$="Test"+"\Datei.prf"
' Das fehlende Anführungszeichen vor dem Rufzeichen
' in der nächsten Zeile killt Interpreter und Compiler
settext text&,Name$+!"
waitinput

Viele Grüße
Walter
 
06.03.2016  
 




E.T.
Jörg Sellmeyer (05.03.2016)
Sowas kann bei der Fehlersuche hilfreich sein:
...


Das inspiriert doch gleich mal zu 'nem kleinen Tool
 
XProfan X3
Grüß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...
07.03.2016  
 




Jörg
Sellmeyer
Dazu fällt mir nochwas ein. Ich hab in meiner version vom XProfEd folgendes eingebaut:
Proc SyntaxCheck

    Parameters Line$
    Declare T$,In%,Out%,i%,o%
    In% = Len(Line$,"(")' - 1
    Out% = Len(Line$,")")' - 1

    WhileLoop 1,Len(Line$,"\q"),2

        T$ = SubStr$(Line$,&Loop,"\q")
        Add i%,Len(T$,"(") - 1
        Add o%,Len(T$,")") - 1

    Wend

    In% = i%
    Out% = o%
    Case In% <> Out%:MessageBox(Line$ + "\n\nUngleiche Anzahl Klammern\n" + Str$(in%) + " geöffnet  (\n" + Str$(Out%)\
    + " geschlossen  )","Syntaxcheck",~MB_ICONSTOP)

EndProc


Unter dieser If-Abfrage in der Hauptschleife dann den Funktionsaufruf:
ElseIf MenuItem(13)' Enter-Taste

SyntaxCheck(Edit#[AktTab%].OnEnter())

Das lässt sich ja leicht auf Quotes erweitern.
Vielleicht will Roland das ja in den Editor mit einbauen.
 
Windows XP SP2 XProfan X4
... und hier mal was ganz anderes als Profan ...
07.03.2016  
 



Das gesubstrse stelle ich mir übel vor bei großen Quelltexten, vlt. besser explode verwenden.

Zunächst alle Strings rauswerfen, dann alle Rems, dann Explode auf \n.
 
07.03.2016  
 




Jörg
Sellmeyer
Ja - ist schon alt. Hatte ich mal mit XProfan10 eingebaut. Jetzt würde ich Len() verwenden.
Len(Line$,"(") <> Len(Line$,")") und schon hat man's.
Die Länge des Codes spielt ja auch dabei keine Rolle, da immer nur die aktuelle Zeile im Editor direkt nach dem Schreiben/Enter überprüft wird.
 
XProfan X3
Windows XP SP2 XProfan X4
... und hier mal was ganz anderes als Profan ...
07.03.2016  
 




RGH
Eine gute Idee!

Trotzdem überlege ich, eine solche Prüfung der aktuellen Zeile auch im Interpreter und Compiler einzubauen. Und hier gibt es auch kein Problem mehr , wenn ein Befehl durch \ am Ende über mehrere Editor-Zeilen verteilt wird.
Der Zeitaufwand sollte vertretbar sein. Auf die fertige EXE hat das ja eh' keinen Einfluss.

Gruß
Roland
 
XProfan X3
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  
 




Jörg
Sellmeyer
Im Editor könnte man sogar einen Zähler einbauen, der in einer Statuszeile die Anzahl der () und "" in der jeweiligen Zeile während das Schreibens anzeigt.
Wenn man den Cursor in eine Zeile setzt, kann dann auch direkt angezeigt werden, ob die Anzahl passt, oder nicht. Die richtige Position der Zeichen müsste dann natürlich selber kontrolliert werden.
 
XProfan X3
Windows XP SP2 XProfan X4
... und hier mal was ganz anderes als Profan ...
07.03.2016  
 




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  
 




Walter
Danke, super!
LG
Walter
 
07.03.2016  
 




Antworten


Thementitel, max. 100 Zeichen.
 

Systemprofile:

Kein Systemprofil angelegt. [anlegen]

XProfan:

 Beitrag  Schrift  Smilies  ▼ 

Bitte anmelden um einen Beitrag zu verfassen.
 

Themenoptionen

23.206 Betrachtungen

Unbenanntvor 0 min.
Gast.0815 vor 9 Tagen
Member 862464111.05.2024
p.specht01.08.2021
Walter22.05.2019
Mehr...

Themeninformationen



Admins  |  AGB  |  Anwendungen  |  Autoren  |  Chat  |  Datenschutz  |  Download  |  Eingangshalle  |  Hilfe  |  Händlerportal  |  Impressum  |  Mart  |  Schnittstellen  |  SDK  |  Services  |  Spiele  |  Suche  |  Support

Ein Projekt aller XProfaner, die es gibt!


Mein XProfan
Private Nachrichten
Eigenes Ablageforum
Themen-Merkliste
Eigene Beiträge
Eigene Themen
Zwischenablage
Abmelden
 Deutsch English Français Español Italia
Übersetzungen

Datenschutz


Wir verwenden Cookies nur als Session-Cookies wegen der technischen Notwendigkeit und bei uns gibt es keine Cookies von Drittanbietern.

Wenn du hier auf unsere Webseite klickst oder navigierst, stimmst du unserer Erfassung von Informationen in unseren Cookies auf XProfan.Net zu.

Weitere Informationen zu unseren Cookies und dazu, wie du die Kontrolle darüber behältst, findest du in unserer nachfolgenden Datenschutzerklärung.


einverstandenDatenschutzerklärung
Ich möchte keinen Cookie