Error bei try/except

Für Fragen zur Programmiersprache auf welcher Lazarus aufbaut
Antworten
Privateer3000
Beiträge: 37
Registriert: Mo 14. Feb 2011, 14:22

Error bei try/except

Beitrag von Privateer3000 »

Hallöchen,
nach meinem Umstieg vom TurboDelphi zu FPC
stellen sich auch gleich Fragen ein :)
Wieso bekomme ich bei einem try/except Block diese Fehlermeldung?

Code: Alles auswählen

m_data.pas(38,1) Error: Only class class methods, class properties and class variables can be accessed in class methods

Im uses Block ist aber Classes definiert.
Was stimmt da nicht?

Grüße

Hitman
Beiträge: 512
Registriert: Mo 25. Aug 2008, 18:17
OS, Lazarus, FPC: ArchLinux x86, WinVista x86-64, Lazarus 0.9.29, FPC 2.4.1
CPU-Target: x86
Wohnort: Chemnitz

Re: Error bei try/except

Beitrag von Hitman »

Privateer3000 hat geschrieben:

Code: Alles auswählen

m_data.pas(38,1) Error: Only class class methods, class properties and class variables can be accessed in class methods

Im uses Block ist aber Classes definiert.
Was stimmt da nicht?

Die Fehlermeldung sagt ja eigentlich alles ... für Details wäre ein Einblick in den Code hilfreich ;-)

carli
Beiträge: 657
Registriert: Sa 9. Jan 2010, 17:32
OS, Lazarus, FPC: Linux 2.6.x, SVN-Lazarus, FPC 2.4.0-2
CPU-Target: 64Bit

Re: Error bei try/except

Beitrag von carli »

Privateer3000 hat geschrieben:Hallöchen,
nach meinem Umstieg vom TurboDelphi zu FPC
stellen sich auch gleich Fragen ein :)
Wieso bekomme ich bei einem try/except Block diese Fehlermeldung?

Code: Alles auswählen

m_data.pas(38,1) Error: Only class class methods, class properties and class variables can be accessed in class methods

Im uses Block ist aber Classes definiert.
Was stimmt da nicht?

Grüße


Klassenmethoden, Klassenproperties und Klassenvariablen haben rein gar nichts mit der Unit Classes zu tun.

Privateer3000
Beiträge: 37
Registriert: Mo 14. Feb 2011, 14:22

Re: Error bei try/except

Beitrag von Privateer3000 »

Danke für eure Antworten.
Das steht in der pas:

Code: Alles auswählen

unit m_data;
 
{$mode objfpc}{$H+}
 
interface
 
uses
  Classes, SysUtils, IBConnection, sqldb, dbf, db, FileUtil;
 
type
 
  { TDataModule1 }
 
  TDataModule1 = class(TDataModule)
    systemsetsrc: TDatasource;
    IBConnection1: TIBConnection;
    systemset: TSQLQuery;
  private
    { private declarations }
  public
    { public declarations }
    function OpenDatabase: Boolean;
    function CloseDatabase: Boolean;
   end;
 
var
  DataModule1: TDataModule1;
 
implementation
 
{$R *.lfm}
 
function TDataModule1.OpenDatabase: Boolean;begin
OpenDatabase:=true; try TIBConnection.Open
except OpenDatabase:=false; end; end;
 
function TDataModule1.CloseDatabase: Boolean; begin
CloseDatabase:=true; try TIBConnection.Close;
except CloseDatabase:=false; end; end;
 
end.

Hitman
Beiträge: 512
Registriert: Mo 25. Aug 2008, 18:17
OS, Lazarus, FPC: ArchLinux x86, WinVista x86-64, Lazarus 0.9.29, FPC 2.4.1
CPU-Target: x86
Wohnort: Chemnitz

Re: Error bei try/except

Beitrag von Hitman »

Und so sollte es sein ...

Code: Alles auswählen

function TDataModule1.OpenDatabase: Boolean;
begin
  OpenDatabase := true;
  try
   IBConnection.Open
  except
    OpenDatabase := false;
  end;
end;
 
function TDataModule1.CloseDatabase: Boolean;
begin
  CloseDatabase := true;
  try
    IBConnection.Close;
  except
    CloseDatabase := false;
  end;
end;


Beachte IBConnection statt TIBConnection ... du willst ja auf das Objekt zugreifen und nicht auf die Klasse ... daher der Fehler.

Privateer3000
Beiträge: 37
Registriert: Mo 14. Feb 2011, 14:22

Re: Error bei try/except

Beitrag von Privateer3000 »

Danke
hab ich verstanden.

Grüße

Antworten