Neue Klasse wird nicht gefunden

Für Fragen zur Programmiersprache auf welcher Lazarus aufbaut
Antworten
Benutzeravatar
Levario
Beiträge: 101
Registriert: Mo 1. Sep 2014, 14:32
OS, Lazarus, FPC: Windows 10 Pro Laptop (Lazarus 3.0.0 FPC 3.2.2)
CPU-Target: 64 Bit
Wohnort: Deutschland / NRW

Neue Klasse wird nicht gefunden

Beitrag von Levario »

Hallo ich versuche im Moment das Prinzip der Klassen zu versehen.

Ich habe ein Form1 und eine Unit. Das programm findet die Unit nicht

unit uversion;

{$mode objfpc}{$H+}

interface

uses
Classes, SysUtils, IBConnection, sqldb, dbconnect;

type { TUVersion1 }
TUVersion1 = class(TObject)
private
public
procedure getVersion;
end;

implementation
uses sysdokustartu1;

procedure TUVersion1.getVersion;
begin
Form1.caption := 'Hallo';
end;
end.


Unit2

unit sysdokustartu1;

{$mode objfpc}{$H+}

interface

uses
Classes, SysUtils, FileUtil, DividerBevel, ExtendedNotebook, Forms, Controls,
Graphics, Dialogs, ComCtrls, StdCtrls, Menus, Buttons, ExtCtrls, aboutusu,
IBConnection, sqldb, dbconnect, uversion;

type

{ TForm1 }

TForm1 = class(TForm)
BitBtn1: TBitBtn;
BitBtn10: TBitBtn;
DividerBevel1: TDividerBevel;
DividerBevel4: TDividerBevel;
Edit1: TEdit;
Edit2: TEdit;
IBConnection1: TIBConnection;
Label1: TLabel;
Label2: TLabel;
Label3: TLabel;
ListView1: TListView;
ListView2: TListView;
MainMenu1: TMainMenu;
MenuItem1: TMenuItem;
MenuItem10: TMenuItem;
MenuItem11: TMenuItem;
MenuItem12: TMenuItem;
MenuItem13: TMenuItem;
MenuItem14: TMenuItem;
MenuItem15: TMenuItem;
MenuItem16: TMenuItem;
MenuItem17: TMenuItem;
MenuItem2: TMenuItem;
MenuItem3: TMenuItem;
MenuItem4: TMenuItem;
MenuItem5: TMenuItem;
MenuItem6: TMenuItem;
MenuItem7: TMenuItem;
MenuItem8: TMenuItem;
MenuItem9: TMenuItem;
PageControl1: TPageControl;
PageControl2: TPageControl;
PageControl3: TPageControl;
Panel1: TPanel;
Panel2: TPanel;
SQLQuery1: TSQLQuery;
SQLTransaction1: TSQLTransaction;
TabSheet2: TTabSheet;
TabSheet3: TTabSheet;
TabSheet4: TTabSheet;
TabSheet5: TTabSheet;
TabSheet6: TTabSheet;
TabSheet7: TTabSheet;
TabSheet8: TTabSheet;
procedure FormShow(Sender: TObject);
procedure MenuItem15Click(Sender: TObject);
private

public
end;

var
Form1: TForm1;

implementation

{$R *.lfm}

{ TForm1 }

procedure TForm1.MenuItem15Click(Sender: TObject);
begin
form2.show;
end;

procedure TForm1.FormShow(Sender: TObject);
begin
UVersion1.getVersion; //Hier kommt dann der Fehler! Er findet den Verweis auf die Klasse nicht.
end;

end.


Wäre über eure Hilfe Dankbar!
Der Weg ist das Ziel... Aber bitte nicht vergessen los zu laufen :).

Benutzeravatar
Niesi
Lazarusforum e. V.
Beiträge: 331
Registriert: So 26. Jun 2016, 19:44
OS, Lazarus, FPC: Linux Mint Cinnamon (Windows wenn notwendig), Lazarus 3.0 FPC 3.3.1

Re: Neue Klasse wird nicht gefunden

Beitrag von Niesi »

Wo wird das Objekt mit z. B.

Code: Alles auswählen

 
begin
  UVersion := TUVersion1.Create;
end;
 


erstellt?

Gar nicht, nehme ich im Moment an. Liege ich da richtig?

Die Klasse ist der Bauplan für ein Objekt, Du musst das Objekt in eEinem Programm erstellen ...
Wissen ist das einzige Gut, das sich vermehrt, wenn es geteilt wird ...

charlytango
Beiträge: 843
Registriert: Sa 12. Sep 2015, 12:10
OS, Lazarus, FPC: Laz stable (2.2.6, 3.x)
CPU-Target: Win 32/64, Linux64
Wohnort: Wien

Re: Neue Klasse wird nicht gefunden

Beitrag von charlytango »

Levario hat geschrieben:procedure TForm1.FormShow(Sender: TObject);
begin
UVersion1.getVersion; //Hier kommt dann der Fehler! Er findet den Verweis auf die Klasse nicht.
end;

end.


Eine Klasse ist der Bauplan für ein Objekt das du erst zum Leben erwecken (=erzeugen =create) musst, um damit arbeiten zu können
Du greifst auf eine Methode eines zu diesem Moment nicht existierenden Objektes zu.

Unter http://michael-puff.de/Programmierung/Delphi/Tutorials/Klassen_in_Delphi.pdf im Abschnitt "Demos" Kapitel "Einfache Klasse" findest du was du brauchst.


Code: Alles auswählen

procedure TForm1.FormShow(Sender: TObject);
var
   einObjekt:TUVersion1;
begin
  einObjekt:=TUVersion1.Create;
  einObjekt.getVersion;
  einObjekt.free;
end;


einige andere Quellen zu Objekten in Pascal, die der Gockel https://www.google.com/search?q=lazarus+klassen übrigens zuhauf ausspuckt :

http://wiki.freepascal.org/Object_Oriented_Programming_with_Free_Pascal_and_Lazarus
http://www.martinjakobs.de/pages/objektorientierte-programmierung.php
https://www.youtube.com/watch?v=Lvxc37ZHB04
https://www.oszhandel.de/gymnasium/faecher/informatik/lazarus/aufgaben/bmi_person.html

Benutzeravatar
Levario
Beiträge: 101
Registriert: Mo 1. Sep 2014, 14:32
OS, Lazarus, FPC: Windows 10 Pro Laptop (Lazarus 3.0.0 FPC 3.2.2)
CPU-Target: 64 Bit
Wohnort: Deutschland / NRW

Re: Neue Klasse wird nicht gefunden

Beitrag von Levario »

Hallo und vielen dank für die Info und die gute Quelle. Ihr bdeie habt mir sehr geholfen. Problem gelöst.
Der Weg ist das Ziel... Aber bitte nicht vergessen los zu laufen :).

Benutzeravatar
Niesi
Lazarusforum e. V.
Beiträge: 331
Registriert: So 26. Jun 2016, 19:44
OS, Lazarus, FPC: Linux Mint Cinnamon (Windows wenn notwendig), Lazarus 3.0 FPC 3.3.1

Re: Neue Klasse wird nicht gefunden

Beitrag von Niesi »

charlytango hat geschrieben:
Levario hat geschrieben:procedure TForm1.FormShow(Sender: TObject);
begin
UVersion1.getVersion; //Hier kommt dann der Fehler! Er findet den Verweis auf die Klasse nicht.
end;

end.


Eine Klasse ist der Bauplan für ein Objekt das du erst zum Leben erwecken (=erzeugen =create) musst, um damit arbeiten zu können
Du greifst auf eine Methode eines zu diesem Moment nicht existierenden Objektes zu.

Unter http://michael-puff.de/Programmierung/Delphi/Tutorials/Klassen_in_Delphi.pdf im Abschnitt "Demos" Kapitel "Einfache Klasse" findest du was du brauchst.


Code: Alles auswählen

procedure TForm1.FormShow(Sender: TObject);
var
   einObjekt:TUVersion1;
begin
  einObjekt:=TUVersion1.Create;
  einObjekt.getVersion;
  einObjekt.free;
end;


einige andere Quellen zu Objekten in Pascal, die der Gockel https://www.google.com/search?q=lazarus+klassen übrigens zuhauf ausspuckt :

http://wiki.freepascal.org/Object_Oriented_Programming_with_Free_Pascal_and_Lazarus
http://www.martinjakobs.de/pages/objektorientierte-programmierung.php
https://www.youtube.com/watch?v=Lvxc37ZHB04
https://www.oszhandel.de/gymnasium/faecher/informatik/lazarus/aufgaben/bmi_person.html



Hey - gute Links!
Besonders der

http://www.martinjakobs.de/pages/objektorientierte-programmierung.php

bietet sehr interessante Beispiele - was ich jetzt so auf die Schnelle sehe ...

D A N K E !
Wissen ist das einzige Gut, das sich vermehrt, wenn es geteilt wird ...

Antworten