Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi Variablen eine Procedure benutzen (https://www.delphipraxis.net/57570-variablen-eine-procedure-benutzen.html)

kingflo 23. Nov 2005 13:16


Variablen eine Procedure benutzen
 
Hallo alle zusammen...
Ich habe ein kleines Problem.

ich möchte eine Variable einer Procedure einer Komponente benutzen, ohne mich in der Procedure zu befinden bzw ohne, das ich die Procedure überhaupt benutze?

Lasst mich raten Ihr versteht nicht was ich meine und warum ich es so haben möchte richtig? (kein wunder würd ich das lesen würde ich es auch net raffen)

Also die Hauptanwendung besitzt eine Komponente die folgende Prozedur hat

Delphi-Quellcode:
procedure TForm1.IceLicenseFull(ExpiresInfo: Integer;
  ExtraLicenseInfo: String);
begin
zusätzlich benutzt die Hauptanwendung in den Uses eine Unit names license.pas (daran arbeite ich gerade)

und in diese license.pas möchte ich gerne die Variable "ExtraLicenseInfo" aus der Procedure OnLicenseFull (des Hauptformulares) benutzen.

Ich habe in der License.pas auch eine Komponente names "IceLicense1" erstellt, die = der Komponente ICE vom Hauptformular ist.

Jetzt muss ich also die Variable "ExtraLicenseInfo" aus der Procedure "OnLicenseFull" der erstellten komponente IceLicense1 bekommen.

Aber leider weiß ich net wie ich das am bessten machen kann...

Khabarakh 23. Nov 2005 13:20

Re: Variablen eine Procedure benutzen
 
Kannst du denn nicht einfach den String als Parameter der Funktion in der license.pas übergeben? Oder anders gefragt: Wann rufst du die Funktionen der license-Unit auf?

leddl 23. Nov 2005 13:22

Re: Variablen eine Procedure benutzen
 
??? Wie meinst du denn das jetzt? ExtraLicenseInfo ist ja nur ein Parameter der Prozedur. Was willst du daran denn benutzen? :gruebel:
//Edit:
btw: Sicher, daß es sich um eine Prozedur einer Komponente des Hauptformulars handelt? So wie dein Code aussieht, gehört dei Prozedur direkt zum Hauptformular:
Code:
TForm1....

Thanatos81 23. Nov 2005 13:23

Re: Variablen eine Procedure benutzen
 
Zitat:

Zitat von kingflo
Hallo alle zusammen...
Ich habe ein kleines Problem.

ich möchte eine Variable einer Procedure einer Komponente benutzen, ohne mich in der Procedure zu befinden bzw ohne, das ich die Procedure überhaupt benutze?

[...]

Aber leider weiß ich net wie ich das am bessten machen kann...

Gar nicht, da die Variable die du meinst keine echte Variable sondern ein Übergabewert ist. Und solange die Prozedur nicht aufgerufen wird enthält die allenfalls Müll, da sie noch keinen Wert zugewiesen bekommen hat.

Abgesehen davon gibt es imho auch keine Möglichkeit den Parameter von außerhalb der Prozedur zu referenzieren. Ist nun mal eine Prozedur und kein Objekt.

//Edit kein roter Kasten

kingflo 23. Nov 2005 13:29

Re: Variablen eine Procedure benutzen
 
Zitat:

Zitat von Thanatos81

Abgesehen davon gibt es imho auch keine Möglichkeit den Parameter von außerhalb der Prozedur zu referenzieren. Ist nun mal eine Prozedur und kein Objekt.

//Edit kein roter Kasten

Danke...
Aber ich könnte in der License.pas eine procedure erstellen, und diese Procedure der OnLicenseFull procedure zuweisen.

Denn ziel ist es, das die License.pas auf alle anderen Anwendungen leicht anwendbar ist, und alles in der License.pas passieren soll.

Wie kann ich denn am bessten eine Procedure einer zur laufzeit erstellten komponente zugreifen?

Der_Unwissende 23. Nov 2005 14:01

Re: Variablen eine Procedure benutzen
 
Zitat:

Zitat von kingflo
Aber ich könnte in der License.pas eine procedure erstellen, und diese Procedure der OnLicenseFull procedure zuweisen.

Denn ziel ist es, das die License.pas auf alle anderen Anwendungen leicht anwendbar ist, und alles in der License.pas passieren soll.

Wie kann ich denn am bessten eine Procedure einer zur laufzeit erstellten komponente zugreifen?


Hi,
am Einfachsten bzw. wie ich finde am Saubersten geht dass, indem du ein Interface oder eine Abstrakte Klasse verwendest. Diese hat dann die Methode LicenceFull(...);
Nun leitest du in deinen Versionen einfach von der Klasse ab bzw. implementierst entsprechend das Interface.
Wird nun eine Instanz von dieser Klasse erstellt, dann wird dir auch zur Laufzeit zugesichert, dass die Methode LicenceFull vorhanden ist.

Hoffe ich hab dich richtig verstanden

Gruß Der Unwissende


Alle Zeitangaben in WEZ +1. Es ist jetzt 07:23 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