AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren

Function Aufruf aus andere Unit

Ein Thema von akuk · begonnen am 14. Jul 2020 · letzter Beitrag vom 14. Jul 2020
Antwort Antwort
akuk

Registriert seit: 8. Mär 2020
Ort: Wald, Zürich Oberland
51 Beiträge
 
Delphi 10.3 Rio
 
#1

Function Aufruf aus andere Unit

  Alt 14. Jul 2020, 09:02
Hallo, bitte kann mir da jemand helfen ?

In unit1 (OptiNumericComm)deklariert als public:

TOptiNumericComm = class(TObject)
private
comPort : TComPort;
susiAPI : TSusiAPI;
public
OutInt : integer;
InpType : byte;
sim_on :boolean;
constructor Create;
function initOptiNumericComm(ComNo : integer) : boolean;
function checkCommActive : boolean;
procedure receiveMessage(sim_on:boolean;var Itype: byte);
function transmitMessage(OutType : Byte; var MldgOK:boolean ) : boolean;
end;

In unit 2 aufgerufen :
if TOptiNumericComm.checkCommActive then
WriteXY(32,25,'CNC Schnittstelle inaktiv') //Fehler Balken
else WriteXY(32,25,'CNC Schnittstelle aktiv');

In unit2 (MenueRefMan) als uses ist OptiNumericCom deklariert

Fehler :
[Fehler] MenueRefMan.pas(152): Diese Form des Methodenaufrufs ist nur für Klassenmethoden erlaubt

checkCommActive ist ja klassenmethode !
Was ist da falsch ??

Danke für voraus
Anton Kurka
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.537 Beiträge
 
Delphi 11 Alexandria
 
#2

AW: Function Aufruf aus andere Unit

  Alt 14. Jul 2020, 09:04
Nein, das ist keine Klassenmethode. Klassenmethoden werden als class procedure bzw, class function deklariert und kommen ohne Instanz aus.
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
Benutzerbild von Dalai
Dalai

Registriert seit: 9. Apr 2006
1.680 Beiträge
 
Delphi 5 Professional
 
#3

AW: Function Aufruf aus andere Unit

  Alt 14. Jul 2020, 09:07
Wenn du keine Klassenmethode haben willst, musst du (ganz klassisch) eine Variable vom Typ TOptiNumericComm deklarieren und benutzen, und mit deren Instanz dann die Methode checkCommActive rufen.

Grüße
Dalai
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.537 Beiträge
 
Delphi 11 Alexandria
 
#4

AW: Function Aufruf aus andere Unit

  Alt 14. Jul 2020, 09:19
Zur Veranschaulichung:
Delphi-Quellcode:
type
  TDingens = class
  public
    // Methode
    procedure TuWas;
    // Klassenmethode
    class procedure TuwasAnderes;
  end;

...

procedure TDingens.TuWas;
begin
  ShowMessage('Ich bin die Methode einer Instanz von TDingens');
end;

class procedure TDingens.TuwasAnderes;
begin
  ShowMessage('Ich bin eine Klassenmethode und brauche keine Instanz');
end;
Aufrufe:
Delphi-Quellcode:
procedure TSomeForm.Tuwas;
var
  Dingens: TDingens;
begin
  // Instanz erzeugen, benutzen und freigeben
  Dingens := TDingens.Create;
  try
    Dingens.TuWas;
  finally
    Dingens.Free;
  end;
end;

procedure TSomeForm.TuwasAnderes;
begin
  // Geht auch ohne Instanz
  TDingens.TuwasAnderes;
end;
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
akuk

Registriert seit: 8. Mär 2020
Ort: Wald, Zürich Oberland
51 Beiträge
 
Delphi 10.3 Rio
 
#5

AW: Function Aufruf aus andere Unit

  Alt 14. Jul 2020, 09:30
Habe ich etwas nicht verstanden:
function checkCommActive gehört doch zu Klasse TOptiNumericComm ? oder etwa nicht ?
Anton Kurka
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.537 Beiträge
 
Delphi 11 Alexandria
 
#6

AW: Function Aufruf aus andere Unit

  Alt 14. Jul 2020, 10:01
Jede Instanz, die Du von dieser Klasse erzeugst, verfügt über diese Methode. Aber Du musst so eine Instanz auch erst einmal erzeugen. War mein Beispiel so unverständlich?
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
hoika

Registriert seit: 5. Jul 2006
Ort: Magdeburg
8.270 Beiträge
 
Delphi 10.4 Sydney
 
#7

AW: Function Aufruf aus andere Unit

  Alt 14. Jul 2020, 10:10
Hallo,
Zitat:
gehört doch zu Klasse
schau dir das Bsp von DeddyH genau an.

Objekt erzeugen (Dingens:= TDingens.Create)
Dingens.TuWas;

Klasse muss nicht erzeugt werden
TDingens.TuwasAnderes;

Eine class-Methode wird ohne Objekt benutzt.

class-Methode <> Methode einer Klasse
Heiko
  Mit Zitat antworten Zitat
akuk

Registriert seit: 8. Mär 2020
Ort: Wald, Zürich Oberland
51 Beiträge
 
Delphi 10.3 Rio
 
#8

AW: Function Aufruf aus andere Unit

  Alt 14. Jul 2020, 10:26
Hallo DeddyH
Zuerst danke,so weit habe ich Dein Beispiel verstanden, ich meinte habe es genau so gemacht, also die methode in unit1 als nicht klassenMethode, dafür mit Instanziern im unit2.
Aber es ist nach wie vor der gleiche fehler.

//in der unit2
procedure Man;

Var i :integer;
OptiNumericComm :TOptiNumericComm;

begin
OptiNumericComm := TOptiNumericComm.Create;
Init_IstWerte(IstWerte_Alt);
//usw ....
//der Aufruf
if TOptiNumericComm.checkCommActive then
WriteXY(32,25,'CNC Schnittstelle aktiv') //Fehler Balken
else WriteXY(32,25,'CNC Schnittstelle inaktiv');
//.....
[Fehler] MenueRefMan.pas(152): Diese Form des Methodenaufrufs ist nur für Klassenmethoden erlaubt
Anton Kurka
  Mit Zitat antworten Zitat
akuk

Registriert seit: 8. Mär 2020
Ort: Wald, Zürich Oberland
51 Beiträge
 
Delphi 10.3 Rio
 
#9

AW: Function Aufruf aus andere Unit

  Alt 14. Jul 2020, 10:47
jetzt ist es gegangen, der Aufruf musste sein :

if OptiNumericComm.checkCommActive then

Vielen Dank Euch allen
Anton Kurka
  Mit Zitat antworten Zitat
Hobbycoder

Registriert seit: 22. Feb 2017
930 Beiträge
 
#10

AW: Function Aufruf aus andere Unit

  Alt 14. Jul 2020, 18:20
Falls du es noch nicht weißt, es gibt die Möglichkeit beim Verfassen eines Posts, den Delphi-Quelltext zu formatieren, so wie es die antwortenden User auch machen.
Der Vorteil ist, dass es einfach besser und schneller lesbar ist (keine Proportionalschrift und führende Leerzeichen werden angezeigt).

Das ist das Symbol mit dem gelben Helm.
Gruß Hobbycoder
Alle sagten: "Das geht nicht.". Dann kam einer, der wusste das nicht, und hat's einfach gemacht.
  Mit Zitat antworten Zitat
Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 22:06 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz