Einzelnen Beitrag anzeigen

OptPrime

Registriert seit: 10. Mär 2021
3 Beiträge
 
#1

Zugriffsverletztung nach Methodenaufruf

  Alt 4. Feb 2022, 11:04
Delphi-Version: 10.1 Berlin
Hallo Zusammen,

ich habe ein Problem und weiß einfach nicht mehr weiter.

Ich greife von einer UNIT auf eine Methode in einer anderen UNIT über einen Pointer zu:

Code:
m_dlg.lblWerkzeug1.Caption := m_pCDeviceWerkzeugauswahl.GetWerkzeug1();
m_dlg.lblWerkzeug2.Caption := m_pCeviceWerkzeugauswahl.GetWerkzeug2();
//m_dlg.lblWerkzeug3.Caption := m_pCDeviceWerkzeugauswahl.GetWerkzeug3();
//m_dlg.lblWerkzeug4.Caption := m_pCDeviceWerkzeugauswahl.GetWerkzeug4();
Die Methoden werden zum Start aufgerufen.

Bei Methode GetWerkzeug1() und GetWerkzeug2() startet meine Anwendung ganz normal.
Jedoch sobald ich GetWerkzeug3() oder ...4() aufrufen möchte (im Code ausgekommentiert), erscheint unten stehender Fehler (siehe png im Anhang).
Ich weiß nicht was ich falsch mache.
Die Methoden sind alle in der DeviceWerkzeugauswahl vorhanden. Wird hier auf eine eine DCU im Cache zugegriffen?
Ich habe alle DCUs gelöscht und neu erzeugt.

Hier noch einmal die UNIT auf die ich zugreifen möchte:

Code:
unit UntDeviceWerkzeugauswahl;

interface
uses
  UntDevice,
  UntExtBoolean,
  UntUtilities,
  StrUtils,
  SysUtils,
  Types,
  Classes;

const
  _cl = $00663300;

  _strSectionPrefix = 'Prog_';        

  _nMinLengthFA    = 7;              
  _nLengthTLNr     = 2;              
  _nMaxDescLength  = 40;            
  _strAlowedChars  = '0123456789-';  
  _splitChar       = '#|#';          
  _splitChar2       = '#~#';          

type
  pCDeviceWerkzeugauswahl = ^CDeviceWerkzeugauswahl;
  CDeviceWerkzeugauswahl = class(CDevice)
  private
    m_strWerkzeug1     : String;
    m_strWerkzeug2         : String;
    m_strWerkzeug3       : String;
    m_strWerkzeug4          : String;
 


  public
    constructor Create(); reintroduce;
    destructor Destroy(); override;

    function GetWerkzeug1():String;
    procedure SetWerkzeug1(i_strWerkzeug1: String);

    function GetWerkzeug2():String;
    procedure SetWerkzeug2(i_strWerkzeug2: String);

    function GetWerkzeug3():String;
    procedure SetWerkzeug3(i_strWerkzeug3: String);

    function GetWerkzeug4():String;
    procedure SetWerkzeug4(i_strWerkzeug4: String);

  end;
implementation

constructor CDeviceWerkzeugauswahl.Create();
begin
  inherited Create();
  ResetData();
end;

destructor CDeviceWerkzeugauswahl.Destroy();
begin
  inherited Destroy();
end;

procedure CDeviceWerkzeugauswahl.SetWerkzeug1(i_strWerkzeug1: String);
begin
  m_strSetWerkzeug1 := i_strWerkzeug1;
end;

function CDeviceWerkzeugauswahl.GetWerkzeug1: String;
begin
  result := m_strWerkzeug1;
end;

....restlichen Methoden
GetWerkzeug1
SetWerkzeug1

GetWerkzeug2
SetWerkzeug2

GetWerkzeug3
SetWerkzeug3

end.

Den selben Fehler hatte ich auch schon einmal, als ich in der selben UNIT eine Zeile mit einer neuen Variable hinzugefügt habe. Als ich die Zeile wieder entfernt habe war der Fehler wieder weg.

Was könnte das nur sein ?
Miniaturansicht angehängter Grafiken
fehler.jpg  
  Mit Zitat antworten Zitat