![]() |
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:
zahl ist, logo, eine integer
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; 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: |
Hallo Privateer3000,
Code:
Der Aufruf lautet dann:
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;
Code:
Natürlich könntest du auch einen Integer zurückgeben, der nur den Level zurückgibt.
LabelLevel.Caption := GetLevel(zahl);
|
Du könntest beispielsweise eine Funktion daraus machen, welche einen String zurückliefert:
Code:
Aufruf über:
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;
Code:
War es das?
LabelStufe.Caption:= Auswertung( Zahl );
/edit: 2 Leute - 1 Gedanke :lol: Grüße, Daniel |
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 |
Zitat:
Grüsse, Daniel :) |
Muss man :
Code:
noch wo anders hinschreiben ausser irgendwo im Text?
Function Auswertung( zahl : Integer ) : String;
In der class oder public oder privat?? |
@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:
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.
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; Grüße, Daniel |
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 13:35 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-2025 by Thomas Breitkreuz