Fehlermeldung beim Öffnen eines mit 10.3 erstellten Projekts in 10.4.2

  • Hallo,


    bereits beim Öffnen des Projekts kommt folgender Fehler:

    ---------------------------
    Fehler
    ---------------------------
    Zugriffsverletzung bei Adresse 50CD8BEC in Modul 'vcl270.bpl'. Lesen von Adresse 00000040.
    ---------------------------
    OK Details >>
    ---------------------------

    [50CD8BEC]{vcl270.bpl } Vcl.Graphics.TBitmap.FreeImage (Line 8434, "Vcl.Graphics.pas" + 1) + $0

    [5005FF9A]{rtl270.bpl } System.@IsClass (Line 18453, "System.pas" + 1) + $8

    [50CD8596]{vcl270.bpl } Vcl.Graphics.TBitmap.Changing (Line 8224, "Vcl.Graphics.pas" + 1) + $2

    [50CD8DF8]{vcl270.bpl } Vcl.Graphics.TBitmap.GetScanline (Line 8590, "Vcl.Graphics.pas" + 1) + $4

    [2BDE6ACD]{WPTools9_DX14_Pack_DS.bpl} Wputil.WPCopyRectFromPNGImage + $2BD

    [2BDE678A]{WPTools9_DX14_Pack_DS.bpl} Wputil.WPCopyRectFromImageList + $96

    [2BE31297]{WPTools9_DX14_Pack_DS.bpl} Wptbar.TWPSpeedButton.Paint + $423

    [50D01E19]{vcl270.bpl } Vcl.Controls.TGraphicControl.WMPaint (Line 14009, "Vcl.Controls.pas" + 7) + $5

    [50CF7172]{vcl270.bpl } Vcl.Controls.TControl.WndProc (Line 7480, "Vcl.Controls.pas" + 91) + $6

    [50CF6DAC]{vcl270.bpl } Vcl.Controls.TControl.Perform (Line 7258, "Vcl.Controls.pas" + 10) + $8

    [50CFC56E]{vcl270.bpl } Vcl.Controls.TWinControl.PaintControls (Line 10582, "Vcl.Controls.pas" + 27) + $D

    [50CFC36B]{vcl270.bpl } Vcl.Controls.TWinControl.PaintHandler (Line 10528, "Vcl.Controls.pas" + 24) + $8

    [500605CC]{rtl270.bpl } System.TMonitor.CheckOwningThread (Line 19506, "System.pas" + 2) + $0

    [500608F2]{rtl270.bpl } System.TMonitor.Exit (Line 19696, "System.pas" + 1) + $2

    [50D010D3]{vcl270.bpl } Vcl.Controls.TWinControl.WMPrintClient (Line 13509, "Vcl.Controls.pas" + 14) + $6

    [50CF7172]{vcl270.bpl } Vcl.Controls.TControl.WndProc (Line 7480, "Vcl.Controls.pas" + 91) + $6

    [50CFC0C7]{vcl270.bpl } Vcl.Controls.TWinControl.WndProc (Line 10424, "Vcl.Controls.pas" + 169) + $6

    [50CF6DAC]{vcl270.bpl } Vcl.Controls.TControl.Perform (Line 7258, "Vcl.Controls.pas" + 10) + $8

    [50CFCC77]{vcl270.bpl } Vcl.Controls.TWinControl.WMPaint (Line 10723, "Vcl.Controls.pas" + 18) + $D

    [5005FF9A]{rtl270.bpl } System.@IsClass (Line 18453, "System.pas" + 1) + $8

    [50D02BC1]{vcl270.bpl } Vcl.Controls.TCustomControl.WMPaint (Line 14385, "Vcl.Controls.pas" + 2) + $4

    [50CF7172]{vcl270.bpl } Vcl.Controls.TControl.WndProc (Line 7480, "Vcl.Controls.pas" + 91) + $6

    [50CFC0C7]{vcl270.bpl } Vcl.Controls.TWinControl.WndProc (Line 10424, "Vcl.Controls.pas" + 169) + $6

    [50CFB614]{vcl270.bpl } Vcl.Controls.TWinControl.MainWndProc (Line 10113, "Vcl.Controls.pas" + 3) + $6

    [501826A4]{rtl270.bpl } System.Classes.StdWndProc (Line 18175, "System.Classes.pas" + 8) + $0

    [50E5C233]{vcl270.bpl } Vcl.Forms.TApplication.ProcessMessage (Line 11028, "Vcl.Forms.pas" + 23) + $1

    [50E5C276]{vcl270.bpl } Vcl.Forms.TApplication.HandleMessage (Line 11058, "Vcl.Forms.pas" + 1) + $4

    [50E5C5AD]{vcl270.bpl } Vcl.Forms.TApplication.Run (Line 11196, "Vcl.Forms.pas" + 26) + $3

    [00524DB8]{bds.exe } bds.bds (Line 222, "" + 13) + $2


    Nach langem Rumprobieren (wie soll man das Öffnen eines Projekts debuggen?) habe ich herausgefunden, dass der Fehler nicht mehr auftritt, wenn ich WPImagelist vom Formular entferne.

    Wo könnte das Problem liegen?


    Ciao

    Stefan

  • Der Fehler hat sich eingeschlichen bei der Anbindung von ImageEn


    In der Funktion WPCopyRectFromPNGImage muss es so heissen


    if DestBitmap<>nil then

    begin

    ...

    end else

    begin

    {$IFNDEF IMAGEEN}

    bit := TBitmap.Create;

    bit.PixelFormat := pf24bit;

    bit.Width := SourceW;

    bit.Height := SourceH;

    DestBitmap := bit;

    {$ELSE} // moved 1 line up

    bit := nil;

    {$ENDIF}

    end;



    Also die $ELSE bitte eine Zeile nach oben verschieben.


    Package neu bauen. Dann sollte es wieder klappen.

  • Quote

    wie soll man das Öffnen eines Projekts debuggen?

    Eine gute Möglichkeit ist Verbindungen zwischen Komponenten zu löschen (bzw nicht herzustellen, also z.b. WPToolsBar1.WPImageList) und im Even Form.OnCreate stattdessen zur Laufzeit zuzuweisen. Damit tritt das Problem zur Laufzeit im Debugger auf.