AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Procedure nicht sichtbar...

Ein Thema von bluescreen25 · begonnen am 24. Feb 2006 · letzter Beitrag vom 24. Feb 2006
Antwort Antwort
Seite 1 von 2  1 2      
bluescreen25

Registriert seit: 27. Nov 2005
Ort: Geldern
229 Beiträge
 
Delphi 7 Enterprise
 
#1

Procedure nicht sichtbar...

  Alt 24. Feb 2006, 18:17
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.
...
...
...
  Mit Zitat antworten Zitat
Dust Signs

Registriert seit: 28. Dez 2004
Ort: Salzburg
379 Beiträge
 
#2

Re: Procedure nicht sichtbar...

  Alt 24. Feb 2006, 18:21
In deinem Fall sind die Prozeduren Methoden deiner Form. Du kannst Sie daher nur über NameDerInstanzDeinerForm.Funktionsname(); aufrufen - oder du machst es schön und gibst die Methoden aus der Form raus - in eine extra Unit

Dust Signs
(aka AXMD in der EE)
Die Nummer, die Sie gewählt haben, ist imaginär. Bitte drehen Sie Ihr Telefon um 90° und versuchen Sie es erneut.
  Mit Zitat antworten Zitat
Benutzerbild von jfheins
jfheins

Registriert seit: 10. Jun 2004
Ort: Garching (TUM)
4.579 Beiträge
 
#3

Re: Procedure nicht sichtbar...

  Alt 24. Feb 2006, 18:27
Warum hast du dir deinen Avatar ausgesucht? Der würde fast passen

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;
  Mit Zitat antworten Zitat
Dust Signs

Registriert seit: 28. Dez 2004
Ort: Salzburg
379 Beiträge
 
#4

Re: Procedure nicht sichtbar...

  Alt 24. Feb 2006, 18:28
Ups Hab den Code wohl zu schnell angeschaut; eine Instanz braucht er trotzdem...

Dust Signs
(aka AXMD in der EE)
Die Nummer, die Sie gewählt haben, ist imaginär. Bitte drehen Sie Ihr Telefon um 90° und versuchen Sie es erneut.
  Mit Zitat antworten Zitat
bluescreen25

Registriert seit: 27. Nov 2005
Ort: Geldern
229 Beiträge
 
Delphi 7 Enterprise
 
#5

Re: Procedure nicht sichtbar...

  Alt 24. Feb 2006, 18:29
Ö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.
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#6

Re: Procedure nicht sichtbar...

  Alt 24. Feb 2006, 18:37
Tutorial: http://www.michael-puff.de/dirindex....phi/Tutorials/
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
bluescreen25

Registriert seit: 27. Nov 2005
Ort: Geldern
229 Beiträge
 
Delphi 7 Enterprise
 
#7

Re: Procedure nicht sichtbar...

  Alt 24. Feb 2006, 18:45
Danke, das gibt mal Einblicke in die Struktur...
  Mit Zitat antworten Zitat
bluescreen25

Registriert seit: 27. Nov 2005
Ort: Geldern
229 Beiträge
 
Delphi 7 Enterprise
 
#8

Re: Procedure nicht sichtbar...

  Alt 24. Feb 2006, 19:21
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;
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#9

Re: Procedure nicht sichtbar...

  Alt 24. Feb 2006, 19:25
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?
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
bluescreen25

Registriert seit: 27. Nov 2005
Ort: Geldern
229 Beiträge
 
Delphi 7 Enterprise
 
#10

Re: Procedure nicht sichtbar...

  Alt 24. Feb 2006, 19:33
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....
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


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 05:27 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