Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi Benutzerdefinierte PROCEDUR (https://www.delphipraxis.net/59173-benutzerdefinierte-procedur.html)

Foxgrove 18. Dez 2005 18:42


Benutzerdefinierte PROCEDUR
 
Hallo,

man kann Wurzel ziehen auf verschiedene Arten machen. SQRT . exp(1/2)*ln(Basis) oder auch ganz normal
im Programm.
Man kann dieses kleine Programmteil auch 'in einer Function' packen und diese aufrufen. Tut auch...

aber---
nun versuche ich, dieses in eine 'Procedur' zu schreiben und diese dann aufzurufen:

Bisher:
Delphi-Quellcode:
procedure RAPUNZEL(var mW:Integer;mRauf:Real);      //   1 Aufgaben-Wert runter, 1 Ergebnis-Wert rauf ...
   var mX, mY : Real;
       mRaus  : Byte;
   begin
     mX := (1 + mW)/2;
     mRaus:= 0;                         //  dieses Programmteil funktioniert
     Repeat                             //  als Hauptprogramm schon
       Begin                            //  also mathematisch in Ordnung
         mY:=(mX+mW/mX)/2;
         if mY = mX then mRaus:=1;
         mX:=mY;
       end;
     Until mRaus = 1;
     mRauf:= mY;
   end;
.................................................. ......

Aufruf der Procedur RAPUNZEL im Hauptprogramm:

Hier scheitert es immer:
Delphi-Quellcode:
mErg5 := rapunzel(mWas,mRauf);
Erg5Edit.Text:=FormatFloat('######.############',mErg5);
.................................................. ........

Fehlermeldung: Inkompatible Typen: 'Real' und 'procedure' untyped pointer or untyped parameter

Ganz im Vertrauen, in VBASIC funktioniert es...

MfG Foxgrove

leddl 18. Dez 2005 18:51

Re: Benutzerdefinierte PROCEDUR
 
Ganz im Vertrauen, das funktioniert auch in VB nicht. Kann ich mir zumindest nicht vorstellen. Du hast eine Prozedur, also eine Methode, die höchstens über ihre Parameter Werte zurückliefert.
Und diese Prozedur willst du jetzt einer Variablen vom Typ Real (mERG5 wird doch wohl als Real deklariert sein, oder?)
Wie soll denn das gehen?

Nikolas 18. Dez 2005 18:54

Re: Benutzerdefinierte PROCEDUR
 
Eine Procedure gibt keinen Wert zurück. In deiner Funktion werden nur interne Variablen geändert. Du musst daraus eine Funktion machen oder einen Ergebniss-Parameter mit Var übergeben, der dann geändert wird:
Delphi-Quellcode:
Procedure Rapunzel(var erg: real; const a,bv,s: real);
begin
erg:= 78-a;
end;

//Aufruf:

Rapunzel(erg, 1,2,3);

Showmessage(floattostr(erg)); //Sollte jetzt 77 sein.


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