![]() |
prozedurvariable
Hallo, kann mir mal jemand erklären, was eine Prozedurvariable ist und wozu ich sie verwende?? Danke
|
Also Prozedurvariable ist nicht gerade ein Fachausdruck, von daher kann ich nur mutmaßen, was gemeint ist. Ich denke mal, dass eine lokale Variabel, deren Scope nur innerhal einer Prozedur gültig ist. Diese Variablen werden ganz normal zur Berechnung von Daten herangezogen.
Delphi-Quellcode:
...:cat:...
var
GlobaleVariabel: Integer; .... procedure TueWas; var ProzedurVariabel: Integer; // (*) Wahrscheinlich ist die gemeint. begin .... ProzedurVariabel := WeissIchWas * 3005 div GlobaleVariabel; .... end; |
also die Definition lautet wie folgt:
Delphi-Quellcode:
nur was kann ich dann damit anfangen??
var
status: procedure(Status: Integer; Text: PChar); [Edit=Sakura]Delphi-TAGs gesetzt[/Edit] |
Du meinst wahrscheinlich "prozedurale Parameter". Die habe ich allerdings noch nie gebraucht. Ich schreibe das aber jetzt eigentlich deshalb, weil Du die Prozedur status nennst und dann noch einen Parameter namens Status hast. Meckert Delphi da nicht ?
|
soryy, tipfehler, es muss heißen:
Delphi-Quellcode:
[Edit=Sakura]BITTE selbst die Delphi-TAGs setzen! MfG[/edit]
var
status: procedure(Status_wert: Integer; Text: PChar); |
Ah ja ;-) So nennen wir die heute :lol:
Also es geht um Prozedurale Typen; hier mal ein Auszug aus dem Delphi Language Guide Zitat:
|
soweit habe ich das Beispiel verstanden, aber:
f ist also ein eigener Typ, der eine Funktion übernehmen darf! das hat bei mir dann in delphi auch funktioniert, bis auf die zuweisung:
Delphi-Quellcode:
Fehler: Inkompatible Typen Prozedure und Methodenzeiger!
procedure TForm1.Button1Click(Sender: TObject);
var f: function(a,b:integer): integer; begin f:= plus; end; davon mal abgesehen, was bringt mir das in der Praxis, wenn ich einer Variablen eine Prozedure zuweisen kann?? Gibt es dafür nicht mal ein Codebeispiel um das zu veranschaulichen?? Danke [Edit=Sakura]:warn: Das waren jetzt das dritte Mal, daß ich Deine Delphi-TAGS setzten musste. :twisted:[/Edit] |
Wie ist die Funktion Plus definiert?
...:cat:... :warn: NUTZE DIE DELPHI TAGS!!! |
Die Prozedure plus ist definiert:
Delphi-Quellcode:
Procedure plus(x,c: integer): integer;
begin result:=x+c; end; |
Na dann ändere mal. Eine Prozedure kann keinen Rückgabewert haben.
Code:
...:cat:...
[color=#ff0000]function[/color] plus(x,c: integer): integer;
begin result:=x+c; end; P.S. Danke für die Nutzung der DELPHI-Tags. :spin: |
sorry, das war ein Tipfehler, ich hab das schon so! Aber der Fehler ist immer noch
|
Also folgender Code wird bei mir problemlos kompiliert und ausgeführt.
Delphi-Quellcode:
...:cat:...
function Plus(X, C: Integer): Integer;
begin Result := X + C; end; procedure TForm1.Button1Click(Sender: TObject); var F: function(A, B: Integer): Integer; begin F := Plus; ShowMessage(IntToStr(F(1, 2))); end; |
Bei clownx hat die Funktion Plus keine Parameter erhalten
Delphi-Quellcode:
Plus erwartet aber 2 integervariablen
procedure TForm1.Button1Click(Sender: TObject);
var f: function(a,b:integer): integer; begin f:= plus; end; mfg Daniel |
@Sanchez0815: Du sprichst die Zuweisung der Variablen an, da werden keine Parameter angegeben. Siehe auch mal in meinem Code nach ;-)
...:cat:... |
Sorry, hab nur flüchtig gelesen :oops:
mfg Daniel |
Die Diskussion zum Unterschied zwischen Prozeduren und Funktionen kann hier forgesetzt werden:
In diesem Thread bitte nur zu "Prozedurvariablen" posten. Danke SAKURA ...:cat:... |
hi,
bin gerade dabei mit prozeduralen Typen zu "spielen" in deinem Beispiel ist aber die "plus"-function ist alleinstehen, gehört zu keiner klasse. Zitat:
Delphi-Quellcode:
TForm2 = class(TForm)
Button1: TButton; private { Private-Deklarationen } public { Public-Deklarationen } function somefunc : Integer;
Delphi-Quellcode:
..also meiner prozedurale Variable eine Funktion zuweisen die in einem anderen Formular / Klasse defineirt ist....und da meckert delphi immer noch...TForm1 = class(TForm) Edit1: TEdit; Button1: TButton; private { Private-Deklarationen } var F, G: function: Integer; I: Integer; .... f := tform2.somefunc; i := f; in der Delphi Hilfe scheinen alle zusammen zu gehören:
Delphi-Quellcode:
...irgendwelche Tipps wie ich das lösen kann ???
var
F, G: function: Integer; I: Integer; function SomeFunction: Integer; ... F := SomeFunction; // Zuweisung von SomeFunction an F G := F; // Kopieren von F zu G I := G; // Funktionsaufruf; Zuweisung des Ergebnisses an I gruss daniel |
Re: prozedurvariable
Syntax für Methoden:
Delphi-Quellcode:
var f: function(a,b:integer):integer of object;
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 11:27 Uhr. |
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 by Thomas Breitkreuz