Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi Procedure nicht sichtbar... (https://www.delphipraxis.net/63926-procedure-nicht-sichtbar.html)

bluescreen25 24. Feb 2006 17:17


Procedure nicht sichtbar...
 
Hallo, ich habe das Problem, das die proceduren der eingebundene Unit in meinen anderen Units nicht sichtbar sind. Wahrscheinlich ein Anfängerproblem. Wer kann helfen ?
PS: in den anderen Units ist diese in Uses eingebunden.

Delphi-Quellcode:
unit ShutDown;

interface

uses
  Windows, Messages, SysUtils, Classes;

type
  TShutDown = class(TObject)
  public
   procedure Shutdown(PowerOff,Force :boolean);
   procedure Ruhezustand(Force :boolean);
   procedure Standby(Force :boolean);
   procedure Logoff(Force : boolean);
   procedure Restart(Force :boolean);
   procedure GetPrivileges;
end;

implementation

procedure TShutDown.GetPrivileges; //Rechte um runterzufahren holen.
...
...
...

Dust Signs 24. Feb 2006 17:21

Re: Procedure nicht sichtbar...
 
In deinem Fall sind die Prozeduren Methoden deiner Form. Du kannst Sie daher nur über
Delphi-Quellcode:
NameDerInstanzDeinerForm.Funktionsname();
aufrufen - oder du machst es schön und gibst die Methoden aus der Form raus - in eine extra Unit ;)

Dust Signs

jfheins 24. Feb 2006 17:27

Re: Procedure nicht sichtbar...
 
Warum hast du dir deinen Avatar ausgesucht? Der würde fast passen :mrgreen:

Zitat:

In deinem Fall sind die Prozeduren Methoden deiner Form.
Welcher Form ?

Um diese Methoden zu verwenden muss man mit Objekten (und Klassen) arbeiten, man kann die Prozeduren nicht einfach aufrufen ;)

Beispiel:
Delphi-Quellcode:
var
ShutdownObj: TShutdown;
begin
  ShutdownObj := TShutdown.Create; // Das zuerst
  try
    ShutdownObj.GetPrivileges; // Das geht jetzt ...
  finally
    FreeAndNil (ShutdownObj); // Und wieder freigeben ...
  end;
end;

Dust Signs 24. Feb 2006 17:28

Re: Procedure nicht sichtbar...
 
Ups :oops: Hab den Code wohl zu schnell angeschaut; eine Instanz braucht er trotzdem...

Dust Signs

bluescreen25 24. Feb 2006 17:29

Re: Procedure nicht sichtbar...
 
Öhm, diese unit hat keine Form und soll eigendlich auch nicht. Deshalb kann ich die instanz auch nicht aufrufen, bzw nur TShutDown.create, aber nicht die Proceduren. :oops:

Luckie 24. Feb 2006 17:37

Re: Procedure nicht sichtbar...
 
Tutorial: http://www.michael-puff.de/dirindex....phi/Tutorials/

bluescreen25 24. Feb 2006 17:45

Re: Procedure nicht sichtbar...
 
Zitat:

Zitat von Luckie

Danke, das gibt mal Einblicke in die Struktur...

bluescreen25 24. Feb 2006 18:21

Re: Procedure nicht sichtbar...
 
Ist das eine geeignete Art und Weise ? Funktioniert aber ist es üblich ?

Delphi-Quellcode:
unit ShutDown;

interface

uses
  Windows, Messages, SysUtils, Classes;

type
  TShutDown = class(TObject)
  private
    constructor create;
    destructor destroy;
  public
    procedure Shutdown(PowerOff,Force :boolean);
    procedure Ruhezustand(Force :boolean);
    procedure Standby(Force :boolean);
    procedure Logoff(Force : boolean);
    procedure Restart(Force :boolean);
    procedure GetPrivileges;
end;

var ShutDownObj : TShutDown;
    PowerOff: boolean;

implementation

constructor TShutDown.create;
 begin
   ShutdownObj := TShutdown.Create;
 end;

destructor TShutDown.destroy;
 begin
  ShutDownObj.Free;
  inherited Destroy;
 end;

procedure TShutDown.GetPrivileges; //Rechte um runterzufahren holen.
...
...
...
Hier ein Beispielaufruf aus einer anderen Unit/Form:

Delphi-Quellcode:
procedure Tmediaplayer_frm.Image14Click(Sender: TObject);
begin
  case config_frm.ShutdownSelect.ItemIndex of
   0: begin
        Main_frm.Close;
      end;
   1: begin
        Main_frm.Close;
        ShutDownObj.Shutdown(PowerOff,config_frm.ShutDown_force_select.Checked);
      end;
  end;
end;

Luckie 24. Feb 2006 18:25

Re: Procedure nicht sichtbar...
 
Warum instanzierst du im Konstruktor die eigene Klasse? Du brauchst eigentlich auch keinen eigenen Konstruktor:

Delphi-Quellcode:
unit ShutDown;

interface

uses
  Windows, Messages;

type
  TShutDown = class(TObject)
  private
    procedure GetPrivileges;
  public
    procedure Shutdown(PowerOff,Force :boolean);
    procedure Ruhezustand(Force :boolean);
    procedure Standby(Force :boolean);
    procedure Logoff(Force : boolean);
    procedure Restart(Force :boolean);    
end;

var
  PowerOff: boolean;

implementation


procedure TShutDown.GetPrivileges; //Rechte um runterzufahren holen.
//...
Und wozu die globale Variable PowerOff?

bluescreen25 24. Feb 2006 18:33

Re: Procedure nicht sichtbar...
 
Zitat:

Zitat von Luckie
Warum instanzierst du im Konstruktor die eigene Klasse? Du brauchst eigentlich auch keinen eigenen Konstruktor:

Delphi-Quellcode:
unit ShutDown;

interface

uses
  Windows, Messages;

type
  TShutDown = class(TObject)
  private
    procedure GetPrivileges;
  public
    procedure Shutdown(PowerOff,Force :boolean);
    procedure Ruhezustand(Force :boolean);
    procedure Standby(Force :boolean);
    procedure Logoff(Force : boolean);
    procedure Restart(Force :boolean);    
end;

var
  PowerOff: boolean;

implementation


procedure TShutDown.GetPrivileges; //Rechte um runterzufahren holen.
//...
Und wozu die globale Variable PowerOff?

Genau das war eingangs mein Problem. Wie ich sonst die proceduren hier aus einer anderen Form erreichen kann. Obwohl die public sind gehts nicht....


Alle Zeitangaben in WEZ +1. Es ist jetzt 17:21 Uhr.
Seite 1 von 2  1 2      

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