Autor Beitrag
Baumunk
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 50

WinXP
Delphi 2005
BeitragVerfasst: Fr 24.11.06 09:35 
Hallo,

Wie soll es möglich sein in der Funktion noch eine oder mehrere Interne Funktionen deklarieren?

Da ist beispiel aus Delphi:

ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
Function GetInteger (Value : String) : Integer;

  Function UnterFunktion (Var Value : String) : Boolend;
  Begin
    ....
  End;

Begin
  ....
  If UnterFunktion (Value) Then
  ...
End;


Voraus danke.
MagicAndre1981
Ehemaliges Mitglied
Erhaltene Danke: 1



BeitragVerfasst: Fr 24.11.06 10:17 
das geht nicht und macht auch wenig Sinn.
JüTho
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 2021
Erhaltene Danke: 6

Win XP Prof
C# 2.0 (#D für NET 2.0, dazu Firebird); früher Delphi 5 und Delphi 2005 Pro
BeitragVerfasst: Fr 24.11.06 12:32 
user profile iconMagicAndre1981 hat folgendes geschrieben:
das geht nicht und macht auch wenig Sinn.

Teil 1 dieser Antwort bestätige ich. Es geht nicht anders, als innerhalb derselben Klasse weitere Methoden zu nutzen. Durch #region/endregion kann man das trotzdem übersichtlich unterbringen.

Zum zweiten Teil habe ich eine ausführliche Diskussion über Vor- und Nachteile z.B. über
Verschachtelte Function gelesen. Auch dazu bin ich der Meinung: nicht ideologisch, sondern pragmatisch handeln. Jürgen
Robert_G
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 416


Delphi32 (D2005 PE); Chrome/C# (VS2003 E/A, VS2005)
BeitragVerfasst: Mo 27.11.06 22:28 
user profile iconMagicAndre1981 hat folgendes geschrieben:
das geht nicht und macht auch wenig Sinn.
Nicht immer gleich "iss nich" schreien. ;)

Mein ganz besonderer Liebling, Delegates und speziell: Anonyme Methoden wären eine Möglichkeit:
ausblenden C#-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
class Program
{
  static int HasNestedFunction(int input)
  {
    Action<int> addToInput = delegate(int value)
    {
      input += value;
    };

    addToInput(1);
    addToInput(2);

    return input;
  }

  static void Main(string[] args)
  {
    Console.WriteLine(HasNestedFunction(1));
  }
}
MagicAndre1981
Ehemaliges Mitglied
Erhaltene Danke: 1



BeitragVerfasst: Mo 27.11.06 23:08 
ich weiß, dass es über Delegates irgendwie geht, aber so richtig rund ist das nicht :?
Robert_G
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 416


Delphi32 (D2005 PE); Chrome/C# (VS2003 E/A, VS2005)
BeitragVerfasst: Mo 27.11.06 23:17 
user profile iconMagicAndre1981 hat folgendes geschrieben:
ich weiß, dass es über Delegates irgendwie geht, aber so richtig rund ist das nicht :?
Ist sogar viel schnieker als es nested methods in Delphi waren.
Nested Methods ließen sich nur indirekt dafür missbrauchen um bei einem callback mit fester Signatur Zugriff auf lokale Variablen zu haben.
Bei .Net Delegates ist das problemlos möglich, anonyme Methoden sind sogar genau dafür da. :)