Autor Beitrag
juppinger
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 50



BeitragVerfasst: Mi 29.10.08 17:29 
Hallo zusammen,

ich weiss langsam nicht mehr, was ich machen soll...
Ich habe eine Anwendung geschrieben, welche schon seit ca. 4 Jahren bei vielen Personen im Einsatz ist - auf unterschiedlichsten Systemen (geschrieben in Delphi 4).
Die Software wird auch ständig weiter entwickelt und aktualisiert.
In der Applikation ist es möglich verschiedene Reports zu drucken.
Seit einiger Zeit kommt bei einigen Personen bei bestimmten Druckreports (QuickReport) bevor der Report aufgeht (QuickRep1.Preview) eine Exception. Beispiel: Zugriffsverletzung bei Adresse 00000000.
Wenn ich mir das Programm komplett gepackt per E-Mail senden lassen und es auf meinem PC und allen anderen PCs, die ich finden kann, teste, funktioniert alles einwandfrei und keine Exception wird ausgelöst.

Ich weiss nicht mehr, was ich tun könnte.
>> Hat jemand einen Tipp?

Thx,
jupinger

P.S.: Kennt jemand eine Komponente für D4, welche optional aktiviert werden kann und in einer fertig compilierten EXE "mit läuft" und jegliche Aktion der Applikation debuggt und z.B. in eine TXT schreibt?
DeddyH
Ehemaliges Mitglied
Erhaltene Danke: 1



BeitragVerfasst: Mi 29.10.08 17:40 
Die Meldung "Zugriffsverletzung bei Adresse 00000000" deutet daraufhin, dass auf nicht instanziierte Objekt zugegriffen wird. Und zum Auffinden der Fehlerursache könntest Du Dir mal madExcept ansehen.
juppinger Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 50



BeitragVerfasst: Mi 29.10.08 18:12 
Was genau bedeutet das und warum ist das nur auf wenigen PCs so der Fall?
Was kann ich nun tun?
Gausi
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 8548
Erhaltene Danke: 477

Windows 7, Windows 10
D7 PE, Delphi XE3 Prof, Delphi 10.3 CE
BeitragVerfasst: Mi 29.10.08 18:14 
Sind irgendwo Threads im Einsatz?

_________________
We are, we were and will not be.
DeddyH
Ehemaliges Mitglied
Erhaltene Danke: 1



BeitragVerfasst: Mi 29.10.08 18:14 
Wie gesagt, madExcept oder etwas Ähnliches einsetzen, um die Fehlerstelle eingrenzen zu können. Die muss man sich dann halt einmal ansehen.
juppinger Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 50



BeitragVerfasst: Mi 29.10.08 18:20 
Nein - keine Threads im Einsatz.
Xentar
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 2077
Erhaltene Danke: 2

Win XP
Delphi 5 Ent., Delphi 2007 Prof
BeitragVerfasst: Mi 29.10.08 20:17 
Wenn du schon versuchst, den Fehelr bei dir nachzustellen, solltest du möglichst die gleichen Ausgangsbedingungen schaffen.
Soll heißen:
- Verwendest du in der Software irgendwelche Datenbanken, oder sonst irgendwelche Datenquellen? Wenn ja, lass dir diese auch zuschicken, damit du mit den gleichen Daten arbeitest
- Versuch es auf dem gleichen Betriebssystem

usw.

_________________
PROGRAMMER: A device for converting coffee into software.
juppinger Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 50



BeitragVerfasst: Do 30.10.08 17:11 
Hi,
genau das ist ja das interessante: Ich lasse mir das komplette Verzeichnis schicken (mit allen Datendateien usw). - Bei mir tritt der Fehler nicht auf - auch bei gleichen Betriebssystem.
hazard999
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 162

Win XP SP2
VS 2010 Ultimate, CC.Net, Unity, Pex, Moles, DevExpress eXpress App
BeitragVerfasst: Do 30.10.08 17:19 
madexcept ist die Lösung.

Damit findest den Fehler innerhalb von 10 min.

_________________
MOV EAX, Result;MOV BYTE PTR [EAX], $B9;MOV ECX, M.Data;MOV DWORD PTR [EAX+$1], ECX;MOV BYTE PTR [EAX+$5], $5A;MOV BYTE PTR [EAX+$6], $51;MOV BYTE PTR [EAX+$7], $52;MOV BYTE PTR [EAX+$8], $B9;MOV ECX, M.Code;MOV DWORD PTR [EAX+$9], ECX
juppinger Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 50



BeitragVerfasst: Do 30.10.08 18:46 
okay... *PAUSE* an dieser Stelle. Werde mal madExcepten. Ggf. müsstet Ihr mir dann nochmal bei der Auswertung behilflich sein ;)
Bis hier erst einmal 1000-Dank für den schnellen Support. Ich melde mich die nächsten Tage mit dem Ergebnis.
BenBE
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 8721
Erhaltene Danke: 191

Win95, Win98SE, Win2K, WinXP
D1S, D3S, D4S, D5E, D6E, D7E, D9PE, D10E, D12P, DXEP, L0.9\FPC2.0
BeitragVerfasst: Do 30.10.08 22:16 
Alternativ kann man auch EurekaLog oder das Omorphia Debugging Interface nutzen - letzteres bedarf aber etwas Einarbeitung, erlaubt dafür aber auch externe Auswertung von Pointern mit Hilfe von OmMAP (wenn zu der eingesetzten Programmversion ein detailliertes Mapfile verfügbar ist).

Für die Auswertung solltest Du einmal die geladenen Module (DLLs), sowie die vollständigen Stacktraces senden; solche Fehler sind nicht immer genau an derAufruf-Position). Näheres schauen wir aber, wenn Du soweit die Daten hast.

_________________
Anyone who is capable of being elected president should on no account be allowed to do the job.
Ich code EdgeMonkey - In dubio pro Setting.
juppinger Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 50



BeitragVerfasst: Di 04.11.08 00:08 
Hi zusammen. Hier mal ein Log... soweit bis die Exception Auftritt (von unten nach oben):

ausblenden volle Höhe Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:
EXCEPTION:
=================

exception class   : EAccessViolation
exception message : Zugriffsverletzung bei Adresse 00000000. Schreiben von Adresse 00000000.
=================


main thread ($83c):
???
TObject.Free
TQRPrinter.EndMetafileCanvas
TQRPrinter.EndDoc
TCustomQuickRep.CreateReport
@HandleFinally
RtlRaiseStatus
RtlUnwind
@HandleAnyException
RtlRaiseStatus
KiUserExceptionDispatcher
TStream.WriteBuffer
TMetafile.WriteEMFStream
TMetafile.SaveToStream
TQRPageList.AddPage
TQRPrinter.NewPage
TCustomQuickRep.NewPage
TCustomQuickRep.NewColumn
TQRCustomBand.Print
TCustomQuickRep.PrintBand
TQRController.PrintEmptyController
TQRController.Execute
TQuickRep.Execute
TCustomQuickRep.CreateReport
TCustomQuickRep.Preview
TForm2.BitBtn1Click


Moderiert von user profile iconGausi: Code-Tags hinzugefügt
BenBE
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 8721
Erhaltene Danke: 191

Win95, Win98SE, Win2K, WinXP
D1S, D3S, D4S, D5E, D6E, D7E, D9PE, D10E, D12P, DXEP, L0.9\FPC2.0
BeitragVerfasst: Di 04.11.08 12:34 
hmmm, dem Stacktrace zu folge schein irgendetwas mit einer Grafik, die in dem Report verwendet wird, nicht hinzuhauen. Wenn Du mit TD32-Debug-Infos compilierst und Debug-DCUs einschaltest, dann sollten da sogar Zeilennummen mit vorhanden sein.

Schau also einmal, ob die von Dir im Report verwendeten Referenzen alle OK sind und da alles stimmt.

_________________
Anyone who is capable of being elected president should on no account be allowed to do the job.
Ich code EdgeMonkey - In dubio pro Setting.
juppinger Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 50



BeitragVerfasst: Mi 05.11.08 22:44 
Was sind "TD32-Debug-Infos"?^^
sry,
jup
BenBE
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 8721
Erhaltene Danke: 191

Win95, Win98SE, Win2K, WinXP
D1S, D3S, D4S, D5E, D6E, D7E, D9PE, D10E, D12P, DXEP, L0.9\FPC2.0
BeitragVerfasst: Do 06.11.08 00:30 
TD32- ist ein Format, in dem in eine EXE die Informationen über Units, Zeilennummern, Quelldateien usw. eingebettet wird. Viele externe Debugger benötigen diese Informationen. Können in den Projekt-Optionen aktiviert werden.

_________________
Anyone who is capable of being elected president should on no account be allowed to do the job.
Ich code EdgeMonkey - In dubio pro Setting.
juppinger Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 50



BeitragVerfasst: Do 06.11.08 13:13 
Ah okay... Kannst Du mir sagen, wo genau dies Aktiviert wird?

Thx,
jup
Xentar
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 2077
Erhaltene Danke: 2

Win XP
Delphi 5 Ent., Delphi 2007 Prof
BeitragVerfasst: Do 06.11.08 13:17 
Hast du die Projektoptionen schon durchgeguckt?
Das Häckchen heißt auch noch genau so!

_________________
PROGRAMMER: A device for converting coffee into software.
juppinger Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 50



BeitragVerfasst: Do 06.11.08 15:02 
OKay. Ich werde mir die Optionen heute Abend genauer anschauen. Wird dann in madExcept mehr Infos (Zeilennr. usw)? Das Problem ist wie bereits gesagt: bei mir klappt alles einwandfrei auf versch. PCs. Bei anderen Usern (habe keine Möglichkeit die zu besuchen), klappt es eben nicht.

Hier noch ein Report-Auszug:

============================
exception class : EFCreateError
exception message : Datei ðñ kann nicht erstellt werden.
============================


main thread ($388):
0045e4ee +072 Classes TFileStream.Create
00501d5a +066 <PROGRAMMNAME>.exe QRPrntr TQRStream.Write
0045e2cf +02f <PROGRAMMNAME>.exe Classes TStream.WriteBuffer
00469c68 +058 <PROGRAMMNAME>.exe Graphics TMetafile.WriteEMFStream
004698a4 +00c <PROGRAMMNAME>.exe Graphics TMetafile.SaveToStream
00502855 +10d <PROGRAMMNAME>.exe QRPrntr TQRPageList.AddPage
0050484a +042 <PROGRAMMNAME>.exe QRPrntr TQRPrinter.EndDoc
0051b8ca +4e2 <PROGRAMMNAME>.exe QuickRpt TCustomQuickRep.CreateReport
0051bd81 +091 <PROGRAMMNAME>.exe QuickRpt TCustomQuickRep.Preview
0053a73c +378 <PROGRAMMNAME>.exe Unit20 132 +67 TForm20.ReportDruckenKonten
0053af89 +1f1 <PROGRAMMNAME>.exe Unit20 259 +48 TForm20.BitBtn1Click
0047f326 +066 <PROGRAMMNAME>.exe Controls TControl.Click
00477120 +01c <PROGRAMMNAME>.exe StdCtrls TButton.Click
004afdb5 +065 <PROGRAMMNAME>.exe Buttons TBitBtn.Click
00477214 +00c <PROGRAMMNAME>.exe StdCtrls TButton.CNCommand
0047f191 +111 <PROGRAMMNAME>.exe Controls TControl.WndProc
00481942 +1ae <PROGRAMMNAME>.exe Controls TWinControl.WndProc
00477094 +06c <PROGRAMMNAME>.exe StdCtrls TButtonControl.WndProc
0047efc0 +024 <PROGRAMMNAME>.exe Controls TControl.Perform
00481a3f +023 <PROGRAMMNAME>.exe Controls DoControlMsg
00482097 +00b <PROGRAMMNAME>.exe Controls TWinControl.WMCommand
00496664 +02c <PROGRAMMNAME>.exe Forms TCustomForm.WMCommand
0047f191 +111 <PROGRAMMNAME>.exe Controls TControl.WndProc
00481942 +1ae <PROGRAMMNAME>.exe Controls TWinControl.WndProc
00494967 +567 <PROGRAMMNAME>.exe Forms TCustomForm.WndProc
004815f8 +02c <PROGRAMMNAME>.exe Controls TWinControl.MainWndProc
00491d90 +014 <PROGRAMMNAME>.exe Forms StdWndProc
7e36c644 +016 user32.dll CallWindowProcW
5d455fdf +041 comctl32.dll DefSubclassProc
7e36b8ee +044 user32.dll SendMessageW
7e36e8e0 +016 user32.dll CallWindowProcA
004819ec +09c <PROGRAMMNAME>.exe Controls TWinControl.DefaultHandler
0047f72c +010 <PROGRAMMNAME>.exe Controls TControl.WMLButtonUp
0047f191 +111 <PROGRAMMNAME>.exe Controls TControl.WndProc
00481942 +1ae <PROGRAMMNAME>.exe Controls TWinControl.WndProc
00477094 +06c <PROGRAMMNAME>.exe StdCtrls TButtonControl.WndProc
004815f8 +02c <PROGRAMMNAME>.exe Controls TWinControl.MainWndProc
00491d90 +014 <PROGRAMMNAME>.exe Forms StdWndProc
7e3696b2 +00a user32.dll DispatchMessageA
0049a613 +083 <PROGRAMMNAME>.exe Forms TApplication.ProcessMessage
0049a64a +00a <PROGRAMMNAME>.exe Forms TApplication.HandleMessage
0049a855 +081 <PROGRAMMNAME>.exe Forms TApplication.Run
00555e36 +34e <PROGRAMMNAME>.exe Project1 100 +46 initialization
hazard999
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 162

Win XP SP2
VS 2010 Ultimate, CC.Net, Unity, Pex, Moles, DevExpress eXpress App
BeitragVerfasst: Do 06.11.08 15:26 
WTF!

Hast du dir den StackTrace überhaupt angesehen?

Das sind 2 verschiedene Probleme.

Beim letzten würd ich mal auf ein Berechtigungsproblem tippen.

_________________
MOV EAX, Result;MOV BYTE PTR [EAX], $B9;MOV ECX, M.Data;MOV DWORD PTR [EAX+$1], ECX;MOV BYTE PTR [EAX+$5], $5A;MOV BYTE PTR [EAX+$6], $51;MOV BYTE PTR [EAX+$7], $52;MOV BYTE PTR [EAX+$8], $B9;MOV ECX, M.Code;MOV DWORD PTR [EAX+$9], ECX
hazard999
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 162

Win XP SP2
VS 2010 Ultimate, CC.Net, Unity, Pex, Moles, DevExpress eXpress App
BeitragVerfasst: Do 06.11.08 15:29 
Und nichts für ungut.

Aber selbst in meinen Demos heißt keine Unit "Unit20"

nur mal so als Denkanstoss...

_________________
MOV EAX, Result;MOV BYTE PTR [EAX], $B9;MOV ECX, M.Data;MOV DWORD PTR [EAX+$1], ECX;MOV BYTE PTR [EAX+$5], $5A;MOV BYTE PTR [EAX+$6], $51;MOV BYTE PTR [EAX+$7], $52;MOV BYTE PTR [EAX+$8], $B9;MOV ECX, M.Code;MOV DWORD PTR [EAX+$9], ECX