Zugriffsverletzung wpTools 8.11

  • Hi!

    Ich habe bei einem Kunden das Phänomen, dass es in der Serienbriefvorschau zu einer Zugriffsverletzung kommt. Allerdings ist das Problem nicht genau nachzustellen. Mal funktioniert der selbe Serienbrief zig mal problemlos und dann tritt beim selben Serienbrief mit den selben Daten plötzlich die Zugriffsverletzung auf. Ich finde keinen Weg, das Problem zuverlässig nachzustellen.

    Rausgefunden habe ich mittlerweile, dass es immer an der Stelle TWPRTFDataCollectionBase.BroadcastToEngines klemmt.

    Ich weiß, diese Fehlerbeschreibung ist sehr vage, ich bin damit auch nicht zufrieden. Gibt es trotzdem Hinweise, wie ich das vielleicht lösen kann?

    Vielen Dank!


    Ich verwende WPTools 8.11 mit Delphi 10.1 Update 2.

    Hier die genau Fehlermeldung und der CallStack aus MadExcept

    compiled with : Delphi 10.1 Berlin
    madExcept version : 5.1.5
    callstack crc : $efbf9879, $86d7d06b, $f692856c
    exception number : 1
    exception class : EAccessViolation
    exception message : Zugriffsverletzung bei Adresse 01E77207 in Modul 'MeinProgramm.exe'. Lesen von Adresse 00000109.

    main thread ($9e24):
    01e77207 +01b wiOffice.exe WPRTEDefs 30185 +2 TWPRTFDataCollectionBase.BroadcastToEngines
    01e9ca08 +02c wiOffice.exe WPRTEDefs 50359 +3 TWPRTFProps.BroadcastToEngines
    01e98cef +0bb wiOffice.exe WPRTEDefs 48445 +22 TWPRTFStyleCollection.Add
    01f14579 +1ed wiOffice.exe WPIOReadRTF 8584 +67 TWPRTFReadStyleSheet.Get
    01f03343 +27b wiOffice.exe WPIOReadRTF 1302 +64 TWPRTFReader.PopStack
    01f09131 +c7d wiOffice.exe WPIOReadRTF 3640 +347 TWPRTFReader.Parse
    01e7f04f +09b wiOffice.exe WPRTEDefs 33680 +17 TWPRTFDataCollectionBase.LoadFromStreamWithReader
    01e7b1c8 +790 wiOffice.exe WPRTEDefs 31884 +167 TWPRTFDataCollectionBase.LoadFromStream
    01ead34d +209 wiOffice.exe WPRTEDefs 59140 +45 TWPRTFEngineBasis.LoadFromStream
    01fb6d25 +0fd wiOffice.exe WPCTRMemo 26010 +9 TWPCustomRtfEdit.LoadFromStream
    0226c1f2 +07e wiOffice.exe UfrmMmPreview 295 +8 TfrmMmPreview.Create
    0237b903 +0df wiOffice.exe DataModules.PersonenPrint 680 +18 TdmPersonenPrint.PrintSerienbrief
    0237df30 +0a4 wiOffice.exe Forms.PersonenPrint 226 +11 TfrmPersonenPrint.PrintSerienbrief
    0237db63 +013 wiOffice.exe Forms.PersonenPrint 135 +2 TfrmPersonenPrint.Print
    0237da3e +002 wiOffice.exe Forms.PersonenPrint 87 +0 TfrmPersonenPrint.btnPreviewClick
    0065299f +073 wiOffice.exe Vcl.Controls TControl.Click
    00676dbe +01e wiOffice.exe Vcl.StdCtrls TCustomButton.Click
    00c4417b +087 wiOffice.exe cxButtons 1454 +8 TcxCustomButton.Click
    006778cc +010 wiOffice.exe Vcl.StdCtrls TCustomButton.CNCommand
    00c44895 +02d wiOffice.exe cxButtons 1752 +2 TcxCustomButton.CNCommand
    00652432 +2be wiOffice.exe Vcl.Controls TControl.WndProc
    00656f7d +5e9 wiOffice.exe Vcl.Controls TWinControl.WndProc
    00676a68 +06c wiOffice.exe Vcl.StdCtrls TButtonControl.WndProc
    00c4480c +078 wiOffice.exe cxButtons 1733 +11 TcxCustomButton.WndProc
    0065206c +024 wiOffice.exe Vcl.Controls TControl.Perform
    006570e3 +023 wiOffice.exe Vcl.Controls DoControlMsg
    00657b6f +00b wiOffice.exe Vcl.Controls TWinControl.WMCommand
    0076c571 +045 wiOffice.exe Vcl.Forms TCustomForm.WMCommand
    00652432 +2be wiOffice.exe Vcl.Controls TControl.WndProc
    7776b544 +034 ntdll.dll KiUserCallbackDispatcher
    00652432 +2be wiOffice.exe Vcl.Controls TControl.WndProc
    00656f7d +5e9 wiOffice.exe Vcl.Controls TWinControl.WndProc
    00769331 +64d wiOffice.exe Vcl.Forms TCustomForm.WndProc
    0065659c +02c wiOffice.exe Vcl.Controls TWinControl.MainWndProc
    005440f4 +014 wiOffice.exe System.Classes StdWndProc
    7776b544 +034 ntdll.dll KiUserCallbackDispatcher
    76f872b1 +041 user32.dll SendMessageW
    76f87255 +105 user32.dll CallWindowProcW
    0065708e +0e6 wiOffice.exe Vcl.Controls TWinControl.DefaultHandler
    00c4421a +01a wiOffice.exe cxButtons 1471 +2 TcxCustomButton.DefaultHandler
    00652df4 +010 wiOffice.exe Vcl.Controls TControl.WMLButtonUp
    00652432 +2be wiOffice.exe Vcl.Controls TControl.WndProc
    00656f7d +5e9 wiOffice.exe Vcl.Controls TWinControl.WndProc
    00676a68 +06c wiOffice.exe Vcl.StdCtrls TButtonControl.WndProc
    00c4480c +078 wiOffice.exe cxButtons 1733 +11 TcxCustomButton.WndProc
    0065659c +02c wiOffice.exe Vcl.Controls TWinControl.MainWndProc
    005440f4 +014 wiOffice.exe System.Classes StdWndProc
    76f86adb +00b user32.dll DispatchMessageW
    00772a5b +0f3 wiOffice.exe Vcl.Forms TApplication.ProcessMessage
    00772a9e +00a wiOffice.exe Vcl.Forms TApplication.HandleMessage
    0076dfce +1aa wiOffice.exe Vcl.Forms TCustomForm.ShowModal
    02391ecd +081 wiOffice.exe Forms.Personen 1580 +12 TfrmPersonen.PrintFormulare
    0238e964 +000 wiOffice.exe Forms.Personen 331 +0 TfrmPersonen.btnFormulareClick
    0065299f +073 wiOffice.exe Vcl.Controls TControl.Click
    00a5cf95 +025 wiOffice.exe AdvToolBar 28656 +10 TAdvCustomToolBarButton.Click
    00a5d74b +183 wiOffice.exe AdvToolBar 29018 +63 TAdvCustomToolBarButton.MouseUp
    00652dd8 +038 wiOffice.exe Vcl.Controls TControl.DoMouseUp
    00652e58 +074 wiOffice.exe Vcl.Controls TControl.WMLButtonUp
    00652432 +2be wiOffice.exe Vcl.Controls TControl.WndProc
    00a5d7e8 +000 wiOffice.exe AdvToolBar 29063 +0 TAdvCustomToolBarButton.WndProc
    0065206c +024 wiOffice.exe Vcl.Controls TControl.Perform
    00656828 +0b0 wiOffice.exe Vcl.Controls TWinControl.IsControlMouseMsg
    00656dde +44a wiOffice.exe Vcl.Controls TWinControl.WndProc
    00a51e5c +070 wiOffice.exe AdvToolBar 21988 +20 TAdvCustomToolBar.WndProc
    0065659c +02c wiOffice.exe Vcl.Controls TWinControl.MainWndProc
    005440f4 +014 wiOffice.exe System.Classes StdWndProc
    76f86adb +00b user32.dll DispatchMessageW
    00772a5b +0f3 wiOffice.exe Vcl.Forms TApplication.ProcessMessage
    00772a9e +00a wiOffice.exe Vcl.Forms TApplication.HandleMessage
    00772dd1 +0c9 wiOffice.exe Vcl.Forms TApplication.Run
    027381fc +068 wiOffice.exe wiOffice 653 +7 initialization
    765a5d47 +017 KERNEL32.DLL BaseThreadInitThunk

  • Es gibt unzählige Möglichkeiten wie WPTools eingesetzt werden kann, wie das control erzeugt wird und evtl. auch wieder freigegeben. Die Art der Anwendung hat natürlich einen Einfluss auf solche Probleme.

    Ich würde aber einen derartigen Prozess nicht im Create (TfrmMmPreview.Create) aufrufen sondern immer erst wenn das Fenster mit dem Handle bereits existiert. Das wäre im OnShow.