| |
|
|
- Seite 1 - |
|
Sebastian König | Hallo,
gerade habe ich ProfanInspector Version 2.0 fertiggestellt. Darin werden nun die mit XProfan 11 eingeführten Erweiterungen unterstützt und außerdem ein paar Dinge mehr erkannt - unter anderem ungültige Escape-Sequenzen...
Den Download gibt es auf der Profan2Cpp-Homepage oder einfach direkt im Anhang dieses Beitrags.
Ich wünsche allen Frohe Ostern!
MfG
Sebastian
Download Aktuelle Version: 2.0e [...] |
|
|
| |
|
|
| |
|
- Seite 3 - |
|
|
Sebastian König | Stimmt - hätte ich direkt so machen sollen... |
|
|
| |
|
|
|
Christian Schneider | Mal ne kleine Anregung: Ich persönlich fände es aus gegebenem Anlass super wenn auch überprüft würde, ob eine Funktion per importfunc den gleichen Namen hat wie eine Proc (hat mich gestern 3 Stunden Schlaf gekostet ;) ). Der Interpreter hat es noch geschluckt, aber in der Runtime war dann Schluss - sonst wärs mir wahrscheinlich direkt aufgefallen. Vielleicht kannst der Inspektor anderen in Zukunft diesen (zugegebenermaßen dummen) Fehler ersparen |
|
|
| |
|
|
|
Michael Wodrich | So dumm ist das gar nicht. Denken wir da einfach mal an ImportDLL.
Bei vielen Funktionen kann immer mal eine dabei sein, die schon vorhanden ist.
Oder in der Hilfe ein großes Schild aufhängen:
Obwohl der Alias auch ein Leerstring sein darf, sollten Sie aus gesundheitlichen Gründen NICHT darauf verzichten.
Schöne Grüße Michael Wodrich
P.S.: Manchmal ist der Sig-Generator ja ein richtiger Spaßvogel - stand da doch drunter: XProfan mobbt Dich nicht! |
|
|
| Programmieren, das spannendste Detektivspiel der Welt. | 01.04.2008 ▲ |
|
|
|
|
RGH | Hallo, bei ImportDLL wird der Profan-Inspector aber wenig ausrichten können, da er ja nicht unbedingt weiß, welche Funktionen in einer zur Laufzeit des Programmes geladenen DLL drin sein werden. Aus genau diesem Grund erfolgt in XProfan 11 die Fehlermeldung Funktion nicht vorhanden! ja auch erst zur Laufzeit und nicht schon wie bisher beim Compilieren.
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 | 02.04.2008 ▲ |
|
|
|
|
Sebastian König | Da war Roland schneller als ich und hat natürlich völlig recht...
Welche Funktionen vorhanden sind, weiß man in der Tat erst zur Laufzeit des Programms und kann durch den Inspector, der ja quasi auf der Ebene des Compilers arbeitet, nicht festgestellt werden. (Aus dem gleichen Grund wird übrigens die Meldung E0020 komplett deaktiviert, wenn irgendwo im Code ein ImportFunc() oder ImportDLL() steht.)
Eine kleine Möglichkeit zur Überprüfung fällt mir allerdings ein: Wenn bei einem ImportFunc() für den Namen der Funktion ein Literal übergeben wird (was wohl der Normalfall sein dürfte - wer generiert solche Namen schon zur Laufzeit?), könnte dies im Prinzip durch den Inspector geprüft und ggf. eine W0012-Meldung erzeugt werden. Ich werde mich mal darum kümmern...
MfG
Sebastian |
|
|
| |
|
|
|
Sebastian König | Noch ein Nachtrag zu Michaels Posting: Wenn man nicht gerade sehr viele Funktionen aus einer DLL benötigt, würde ich empfehlen, die wirklich benötigten einzeln mit ImportFunc() zu linken, da für jeden Aufruf immer eine Liste mit allen vorhandenen Funktionen durchsucht werden muss. Und das Suchen in kleinen Listen ist natürlich immer schneller... |
|
|
| |
|
|
|
Dieter Zornow | Ich habe gerade festgestellt, dass der Inspector in einem Programm mit Procs in der Proc ein fehlendes Endif nicht erkennt. Er meldet stattdessen Endproc unerwarter, Fehler in der Struktur. |
|
|
| Er ist ein Mann wie ein Baum. Sie nennen ihn Bonsai., Win 7 32 bit und Win 7 64 bit, mit XProfan X2 | 19.07.2008 ▲ |
|
|
|
|
Sebastian König | Dieter Zornow
Ich habe gerade festgestellt, dass der Inspector in einem Programm mit Procs in der Proc ein fehlendes Endif nicht erkennt. Er meldet stattdessen Endproc unerwarter, Fehler in der Struktur.
Hallo Dieter,
danke für den Hinweis! Ich werde mal nachsehen, was da schiefläuft.
MfG
Sebastian |
|
|
| |
|
|
|
Sebastian König | Nachtrag: Als ich den Fehler gerade nachvollziehen wollte, fiel mir auf, dass die Meldung so wahrscheinlich sogar in Ordnung ist... Es wird immer die Anweisung moniert, die unerwartet auftaucht. Im folgenden Beispiel wäre das "endproc unerwartet."
Entspricht das in etwa der Situation in Deinem Code, Dieter?
MfG
Sebastian |
|
|
| |
|
|
|
Dieter Zornow | Ja die Situation ist in etwa die gleiche, ich habe nur noch procs in der Proc
ich denke aber die Meldung ist nicht richtig. Zuerst müsste er feststellen, dass beim Beenden der Proc das Endif fehlt, diesen Fehler müsste er schon monieren wenn er zu endproc kommt. So weiß man ja nicht wo der Fehler aufgetreten ist und sucht und sucht. In größeren Programmen kann man sich den Wolf suchen. Zum Glück merkt XProfan, dass das Endif fehlt, sodass man den Fehler schnell findet. Die Meldung des Inspectors ist dagegen irreführend und meiner Meinung nach falsch, da der den ersten Fehler übersieht.
Gruß
Dieter |
|
|
| Er ist ein Mann wie ein Baum. Sie nennen ihn Bonsai., Win 7 32 bit und Win 7 64 bit, mit XProfan X2 | 20.07.2008 ▲ |
|
|
|
|
Sebastian König | Dieter Zornow
Ja die Situation ist in etwa die gleiche, ich habe nur noch procs in der Proc
ich denke aber die Meldung ist nicht richtig. Zuerst müsste er feststellen, dass beim Beenden der Proc das Endif fehlt, diesen Fehler müsste er schon monieren wenn er zu endproc kommt. So weiß man ja nicht wo der Fehler aufgetreten ist und sucht und sucht. In größeren Programmen kann man sich den Wolf suchen. Zum Glück merkt XProfan, dass das Endif fehlt, sodass man den Fehler schnell findet. Die Meldung des Inspectors ist dagegen irreführend und meiner Meinung nach falsch, da der den ersten Fehler übersieht.
Die Art der Meldung ergibt sich aus der Art und Weise, wie nach dem Fehler gesucht wird (Stack für alle Blöcke; bei einem end...-Befehl wird geguckt, ob er zur aktuellen Spitze des Stacks passt). Wenn der if-Block im Beispiel noch in einer Schleife enthalten wäre, würde man als Fehler "endwhile unerwartet" bekommen...
Als Lösung könnte ich zusätzlich noch anzeigen, welche Art von Anweisung stattdessen erwartet wird (die Information steht ja zur Verfügung). Was hältst Du von dem Vorschlag?
MfG
Sebastian
P.S.: Mir fällt gerade ein, dass dieser Hinweis bei einer längeren Liste von "... unerwartet"-Meldungen nur für den ersten Eintrag sinnvoll ist. In der aktuellen Version ist es ja so, dass ein Fehler in der Verschachtelung unter Umständen einen ganzen Schwanz solcher Meldungen nach sich zieht. Am besten ändere ich dieses nicht besonders sinnvolle Verhalten gleich mit... |
|
|
| |
|
|
|
Dieter Zornow | Ja eine Meldung wie
"endproc unerwartet, Endif erwartet" würde Klarheit schaffen.
Gruß
Dieter |
|
|
| Er ist ein Mann wie ein Baum. Sie nennen ihn Bonsai., Win 7 32 bit und Win 7 64 bit, mit XProfan X2 | 20.07.2008 ▲ |
|
|
|