Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Lazarus (IDE) (https://www.delphipraxis.net/81-lazarus-ide/)
-   -   Kann nur in "Mode $M+' kompilieren? (https://www.delphipraxis.net/174120-kann-nur-mode-%24m-kompilieren.html)

philharmony 5. Apr 2013 10:38

Kann nur in "Mode $M+' kompilieren?
 
Was ist denn das nu schon wieder?

Main:
Delphi-Quellcode:
unit Main;

{$mode objfpc}{$H+}

interface

uses
  Classes, SysUtils, db, dbf, FileUtil, Forms, Controls, Graphics, Dialogs,
  DBGrids, DbCtrls, StdCtrls, analysis;

type

  { TFormMain }

  TFormMain = class(TForm)
    Button1: TButton;
    Button2: TButton;
    Datasource1: TDatasource;
    Dbf1: TDbf;
    DBGrid1: TDBGrid;
    DBNavigator1: TDBNavigator;
    Memo1: TMemo;
    Analyzer : TAnalyzer;
    procedure Button1Click(Sender: TObject);
    procedure Button2Click(Sender: TObject);
    procedure FormCreate(Sender: TObject);
  private
    { private declarations }
  public
    { public declarations }
  end;  
...
Analysis:
Delphi-Quellcode:
unit analysis;

{$mode objfpc}{$H+}

interface

uses
  Classes, SysUtils;

type
  TAnalyzer = Class
//Hier testweise mal alles leer gelassen, gleicher Fehler
//Fehler kommt aber auch mit deklarationen wie FExist : Boolean, egal ob unter Private, Public oder direkt nach Class
  end;

implementation
Fehlermeldung
"main.pas(24,5) Error: Only classes which are compiled in $M+ mode can be published"

sx2008 5. Apr 2013 10:54

AW: Kann nur in "Mode $M+' kompilieren?
 
Dein Objekt der Klasse TAnalyser ist published:
Delphi-Quellcode:
TFormMain = class(TForm)
    Button1: TButton;
    ...
    Analyzer : TAnalyzer; // imlizit published; ist hier am falschen Platz
Um das Problem zu beheben müsstest du das Objekt "Analyser" als private, protected oder public deklarieren:
Delphi-Quellcode:
TFormMain = class(TForm)
    Button1: TButton;
    ...
private
    FAnalyzer : TAnalyzer; //

philharmony 5. Apr 2013 15:15

AW: Kann nur in "Mode $M+' kompilieren?
 
Ach mist, da hatte ich das Problem gar nicht gesucht. Jetzt ises klar, Danke!


Alle Zeitangaben in WEZ +1. Es ist jetzt 09:12 Uhr.

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz