Registriert seit: 28. Okt 2007
5 Beiträge
|
Re: Programm stürzt auf anderen PCs ab
11. Nov 2009, 16:26
Hallo!
Echt ein tolles Forum hier. So schnell so viele Antworten.
Entschuldigung, dass ich den Code per PasteBin geschickt habe, ich wusste nicht, ob das hier gern gesehen ist, wenn man das Forenlayout mit ellenlangen Codes sprengt. Hab's nochmal als Attachment hochgeladen.
Also, ich bin noch ein Anfänger, deswegen sind eure Tipps sehr nützlich. Werd sie nach und nach durchgehen ...
@himitsu
"Direkt nach dem Start" heißt, dass sofort das Fenster von Windows kommt "xy.exe hat ein Problem festgestellt ..." ohne dass man von dem Programm überhaupt etwas zu sehen bekommt.
Normal startet das Programm ja und minimiert sich direkt im Tray und man sieht dort das Symbol. Das ist jedoch auf den 3 Testrechnern nicht der Fall, es stürzt eben sofort ab.
Ob der EXE-Loader nicht geht oder irgendwas im Programm spinnt, kann ich nicht sagen (weiß nicht einmal wirklich, was so ein EXE-Loader ist).
TDirMonitor ist eine zusätzliche Komponente für Delphi, die ich installiert habe, um das Verzeichnis zu überwachen.
Bei Änderungen im Verzeichnis (genauer: neue Datei) wird die Prozedur "DirMonitor1Change" ausgeführt.
Ok, ich werd die globalen Variablen unter "private" deklarieren, kann jedoch nicht erkennen, wie hier der Zusammenhang zwischen dem Absturz auf bestimmten PCs bestehen soll.
Dass ich die PDF-Dateien extra suche, sollte doch eigentlich kein Problem darstellen. Ich will nur sicher gehen, dass wirklich alle PDF in dem Verzeichnis gedruckt werden, z.B. wenn sich was ansammelt solange der Druckserver noch nicht gestartet ist.
Meint ihr ich sollte dann die ganze Prozedur mit "DirMonitor1Change" über Bord werfen und lieber eine Endlosschleife programmieren, die alle 10s oder so das Druckverzeichnis auf PDF Dateien prüft und diese dann druckt?
Wegen den Problemen mit dem Drucken während es noch andere Dateien gibt: das ist eigentlich kein Problem. Auf dem Rechner, auf dem das Programm geschrieben wurde, hat gsprint.exe anstandslos mehrere Dateien gedruckt. Für jede Datei öffnet sich ein DOS-Fenster, d.h. eine eigene Instanz von gsprint.exe
@fatalerror
Wieso soll ich die INI-Datei nicht ins Programmverzeichnis packen? Ich dachte, es ist übersichtlicher, wenn alles zusammen in einem Ordner ist und nicht getrennt auf der Festplatte herumfährt.
Wie kann ich eine Fehlerbehebung in Prozeduren umsetzen? Ich hab während der Entwicklung immer wieder "ShowMessage('Ich tu grad dies und das');" eingebaut, um zu erkennen, ob das Programm auch gerade die richtige Prozedur startet etc.
Auf dem Entwicklungsrechner läuft das Programm ja soweit auch korrekt.
@Blup
Die INI hab ich mit der Programm.exe mitkopiert. Die Pfadangaben waren zu Beginn auf "C:\", da dieser Ordner eigentlich immer vorhanden ist.
EDIT:
Ich hab jetzt mal die "DirMonitor" Prozedur über Bord geworfen und hab die Überwachung einfach mal "zu Fuß" per Timer (Test auf PDF alle 10s) realisiert.
Jetzt läuft das Programm auf dem virteuellen Windows 98 und auf dem Vista Rechner.
Den XP Professional Rechner konnte ich nicht testen, erst morgen auf der Arbeit wieder.
Was lernt man daraus: Man sollte möglichst keine fremden Komponenten verwenden ...
Eure Tipps hab ich trotzdem soweit mal umgesetzt (Variablen im Private Teil). (Neuer Code im Attachment angefügt.)
|