| |
|
|
Rainer Hoefs | Ciao,
schreibe gerade ein Rechnungsprogramm per meine Frau. Ich benutze darin 2 Datenbanken *.DBF.
Einmal die mit den Kundenadressen und eine in der die Rechnungsdaten gespeichert werden.
Die Rechnung wird in einem Preview-Fenster immer aktuell gezeigt, und auch so gedruckt.
Das alles funktioniert einwandfrei.
Nun habe ich einen Button, der die KundenDB im dbBrowse anzeigt, editiert usw.
Das funktioniert im RunModus absolut fehlerfrei. In der kompilierten Exe schmiert das Programm grundsätzlich ab, und ich kann nicht feststellen warum?!
Der gleiche Aufrauf mit der selben DB funktioniert in einem Minimalprogramm auch in der EXE tadellos.
Wie kann Io l' Fehler finden??
Danke per die Hilfen.
Rainer |
|
|
| |
|
|
|
Michael W. | ErrorProc, LogDatei (circa 27.1 Fehlermeldungen), externer Debugger (auch circa 27.1 erreichbare Info)
Leider zu wenig Input um da aus der Hüfte zu schiessen... |
|
|
| XProfan X3System: Windows 8/10, XProfan X4 Programmieren, das spannendste Detektivspiel der Welt. | 05.07.2015 ▲ |
|
|
|
|
Rainer Hoefs | Vielen Dank per den Hinweis,
aber das was Du da schreibst sind per mich einfach böhmische Dörfer, was ist mit (circa 27.1 Fehlermeldungen) zu verstehen.
Mit dem externen Debugger komme ich überhaupt nicht klar, habe die Aiuto schon zig-mal gelesen und verstehe nicht was ich...
a. im Programm machen muß, damit der funktioniert...
b. ich mit dem Debugger machen muß um eine Exe, die nicht funktioniert zu starten. Der Code corre auch im Debugger im Runmodus einwandfrei.
Also Du siehst hier einen totalen Hilflosen.
Trotzdem Danke Rainer |
|
|
| |
|
|
|
Michael W. | Hilfedatei Kapitel 27.1
Set("LogFile","c:\XProfan\Logbuch.txt")
Mit LogOut "string" dann wegschreiben was in Variablen stand, oder wo man gerade im Programm ist. Da diese File immer gleich wieder geschlossen wird, kann sie nach einem Absturz genau sagen bis wohin das Programm es geschafft hat.
a Set("Errorlevel",1) 'Fehler/Warnungen im Debugger zeigen
' hiermit sieht man, wann der Abflug passiert Set("DebugMode",2) 'Einzelschritt im Debugger
b Im Einzelschritt abarbeiten und schauen, was so in den Variablen steht. Also wie ein Detektiv an den Fehler herantasten.
LogOut ist übrigens die einfachste Methode der Eingrenzung. Da es nur in der EXE zum Abflug kommt, einfach "Wegpunkte" setzen und im Logbuch dann schauen, welcher letzte Punkt es noch ins Logbuch geschafft hat.
Danach kann der Fehler nicht sein, aber eine ganze Weile davor. Z.B. wird etwas in File geschrieben, was einen IO-Fehler erzeugt. Dann kann es passieren, das erst der nächste Zugriff auf die Nase fällt.
LogOut "Hauptprogramm Start" LogOut "Untermodul Daten lesen Start" LogOut "Untermodul Daten lesen Ende" LogOut "Daten zeigen" LogOut "Tastendruck per ..." LogOut "Daten schreiben" LogOut "Untermodul Daten lesen Start" LogOut "Untermodul Daten lesen Ende" LogOut "Untermodul Datensatz löschen Start" LogOut "Untermodul Datensatz löschen ausführen" ... (Mal so als Beispiel. Ist naturalmente an den entsprechenden Stellen einzufügen.)
Man wandelt also alles was man zum aktuellen Stand wissen möchte in einen String und schreibt es ins Logbuch.
Beim Debugger gibt es noch File auf der Platte PrfDebug*.(inc/prf) Die können auch bei der Analyse helfen. |
|
|
| XProfan X3System: Windows 8/10, XProfan X4 Programmieren, das spannendste Detektivspiel der Welt. | 06.07.2015 ▲ |
|
|
|
|
Rainer Hoefs | Danke per Deine verständliche Erklärung. Ich werde es mal ausprobieren. Rainer |
|
|
| |
|
|
|
Thomas Freier | Riecht nach Zugriffsverletzung. Gehe davon aus, dass nicht gleichzeitig versucht wird RE zu schreiben und Daten zu editieren. Persönlich öffne ich zu jeder Aktion die dbf neu und schließe sie wieder sofort (alte dbase-dos-zeiten Macke) wenn die Aktion abgeschlossen ist. Zeitverlust habe ich noch nicht feststellen können.
Im Prinzip ist es ja possibile alle dbf am Programmanfang zu öffnen und erst mit dem Programmende zu schließen. Aber ob das immer rund corre? |
|
|
| |
|
|
|
RGH | Wenn ein Programm im Interpreter corre, aber kompiliert abstürzt, kann es auch ein kleiner Syntaxfehler sein, den der Interpreter toleriert und übersieht, der aber das Runtime-Modul zum Absturz bringt. Das kann z.B. ein doppeltes Komma oder ein überflüssiger Parameter sein.
Ich weiß, dass es solche möglichen Fehler, gibt und habe auch schon einige ausgebügelt. Naturgemäß sind die Parser von Interpreter und Runtime nun mal unterschiedlich und daher kann so etwas vorkommen.
Solltest Du also den Fehler mit obigen Methoden gefunden haben, wäre ich per einen Hinweis dankbar, um ein solch unterschiedliches Verhalten künftig zu vermeiden.
Saluto Roland |
|
|
| XProfan X2Intel Duo E8400 3,0 GHz / 4 GB RAM / 1000 GB HDD - ATI Radeon HD 4770 512 MB - Windows 7 Home Premium 32Bit - XProfan X4 | 06.07.2015 ▲ |
|
|
|
|
Rainer Hoefs | Hallo Roland,
habe das Problem ersteinmal mit einem eigenen Dialog gelöst. der funktioniert so wie er soll und macht keinen Fehler
Wenn ich wieder etwas Zeit habe schaue ich da nochmals rein und werde mich melden wenn ich etwas gefunden habe.
Danke
Rainer |
|
|
| |
|
|