Für Fragen zur Programmiersprache auf welcher Lazarus aufbaut
Privateer3000
Beiträge: 37 Registriert: Mo 14. Feb 2011, 14:22
Beitrag
von Privateer3000 » Di 2. Okt 2012, 09:12
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
Beitrag
von Hitman » Di 2. Okt 2012, 09:46
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
Beitrag
von carli » Di 2. Okt 2012, 10:00
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
Beitrag
von Privateer3000 » Di 2. Okt 2012, 10:46
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
Beitrag
von Hitman » Di 2. Okt 2012, 11:00
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
T IBConnection ... du willst ja auf das Objekt zugreifen und nicht auf die Klasse ... daher der Fehler.