Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi wiederkehrende funktion (https://www.delphipraxis.net/205-wiederkehrende-funktion.html)

Privateer3000 19. Jun 2002 20:13


wiederkehrende funktion
 
Hi naochmal
muss gleich noch einen hiterherschiessen

wie kann man wie im folgendene Code diese case schleife so verpacken das sie nur einmal geschrieben werden muss und bei "Bedarf" aufgerufen werden kann??

Code:
case zahl of
      15..24: LabelStufe.Caption := 'Das bedeutet Stufe 1';
      25..32: LabelStufe.Caption := 'Das bedeutet Stufe 2';
      33..37: LabelStufe.Caption := 'Das bedeutet Stufe 3';
      38..42: LabelStufe.Caption := 'Das bedeutet Stufe 4';
      43..50: LabelStufe.Caption := 'Das bedeutet Stufe 5';
      51..60: LabelStufe.Caption := 'Das bedeutet Stufe 6';
      end;
zahl ist, logo, eine integer

nun will ich nicht 12-16 mal diese Schleife in den Quellcode schreiben...
Ich hab die OH hin und hergewälzt, blicke aber bei function einfach nicht durch..

Hoffe auf Hilfe :lol:

MrSpock 19. Jun 2002 20:19

Hallo Privateer3000,

Code:
function TForm1.GetLevel(zahl: Integer): String;
begin
  case zahl of
      15..24: Result := 'Das bedeutet Stufe 1';
      25..32: Result := 'Das bedeutet Stufe 2';
      33..37: Result := 'Das bedeutet Stufe 3';
      38..42: Result := 'Das bedeutet Stufe 4';
      43..50: Result := 'Das bedeutet Stufe 5';
      51..60: Result := 'Das bedeutet Stufe 6';
      end;
end;
Der Aufruf lautet dann:
Code:
    LabelLevel.Caption := GetLevel(zahl);
Natürlich könntest du auch einen Integer zurückgeben, der nur den Level zurückgibt.

Daniel 19. Jun 2002 20:19

Du könntest beispielsweise eine Funktion daraus machen, welche einen String zurückliefert:
Code:
Function Auswertung( zahl : Integer ) : String;
Begin
  case zahl of
      15..24: Result := 'Das bedeutet Stufe 1';
      25..32: Result := 'Das bedeutet Stufe 2';
      33..37: Result := 'Das bedeutet Stufe 3';
      38..42: Result := 'Das bedeutet Stufe 4';
      43..50: Result := 'Das bedeutet Stufe 5';
      51..60: Result := 'Das bedeutet Stufe 6';
      else
        Result:= 'unbekannte Stufe bei Wert '+IntToStr(zahl);
      end;
End;
Aufruf über:
Code:
LabelStufe.Caption:= Auswertung( Zahl );
War es das?

/edit: 2 Leute - 1 Gedanke :lol:

Grüße,
Daniel

Privateer3000 19. Jun 2002 21:11

Ihr seid einfach die grössten..genauso isses...
sollte mir vielleicht doch mal ein Buch holen...
mit der OH kommt man eben nie weit.
Oder ich muss Euch nerven :lol:

Dankeschöööööön

Daniel B 19. Jun 2002 21:13

Zitat:

Zitat von Privateer3000
Oder ich muss Euch nerven

Du nervst hier doch niemanden. Ich denke das ich für alle sprechen kann. Wenn du jemanden nerven würdest, dann wäre derjenige nicht hier. Dazu sind Foren doch da. :)

Grüsse, Daniel :)

Privateer3000 19. Jun 2002 21:16

Muss man :
Code:
Function Auswertung( zahl : Integer ) : String;
noch wo anders hinschreiben ausser irgendwo im Text?
In der class oder public oder privat??

Daniel 19. Jun 2002 21:24

@DanielB:
Das hast Du schön formuliert!


@Privateer:
Du kannst diese Funktion so im Quellcode stehen lassen; ist dann halt keine Methode - also kein Bestandteil einer Klasse. Muss sie ja auch nicht zwangsläufig sein. Du kannst diese Funktion als Teil einer Klasse deklarieren. Dann hast Du grob gesagt folgende Möglichkeiten:
Code:
  class myClass = class(TObject)
  private
    // Hier, wenn Du sie nur innerhalb dieser Klasse benutzen willst
    Function Auswertung( Zeit : Integer ) : String;
  public
    // oder hier, wenn Du sie global benutzen möchtest
    Function Auswertung( Zeit : Integer ) : String;
  end;

  // In beiden Fällen musst die Methode um den Klassennamen erweitern:
  Function myClasss.Auswertung( zeit : Integer ) : String
  Begin
    ...
  End;
Hier ist die OH von Delphi (6) wirklich nicht schlecht. Schau Dir mal die Hilfe zu den Begriffen "private", "public", "published" an. Ich denke, dass das hilft, Klarheit zu schaffen.


Grüße,
Daniel

Privateer3000 19. Jun 2002 21:30

Prima, Danke
ja da hilft die OH weiter, aber nicht bei "function" wenn man nichts damit anfangen..

@Daniel_B
Danke für das Verständiss :D

Ja klar,sind Foren dazu da.
Kennen tue ich das ja noch aus diversen PHP-Board...
da "nerven" mich heut noch manche , aber per email...weil ich kaum noch poste
Es ist natürlich kein nerven.Ich finde es auch Klasse wenn man helfen kann

in diesem Sinne


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