Entwickler-Ecke
Sonstiges (Delphi) - rückgabewert
sunday_2 - Fr 29.11.02 11:00
Titel: rückgabewert
Hi,
ich habe folgendes Prob:
in einer Funktion will ich jeder Zahl bzw. jedem Buchstaben einen Wert zuweisen.
Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25: 26: 27: 28: 29: 30: 31: 32: 33: 34: 35: 36: 37: 38: 39: 40: 41: 42: 43:
| function TSpieldefinition.buchstabe_zahl(Sender: String):integer; var buchstabe: char; zahl:integer; begin case buchstabe of '1': zahl:= 1; '2': zahl:= 2; '3': zahl:= 3; '4': zahl:= 4; '5': zahl:= 5; '6': zahl:= 6; '7': zahl:= 7; '8': zahl:= 8; '9': zahl:= 9; 'a': zahl:= 10; 'b': zahl:= 11; 'c': zahl:= 12; 'd': zahl:= 13; 'e': zahl:= 14; 'f': zahl:= 15; 'g': zahl:= 16; 'h': zahl:= 17; 'i': zahl:= 18; 'j': zahl:= 19; 'k': zahl:= 20; 'l': zahl:= 21; 'm': zahl:= 22; 'n': zahl:= 23; 'o': zahl:= 24; 'p': zahl:= 25; 'q': zahl:= 26; 'r': zahl:= 27; 's': zahl:= 28; 't': zahl:= 29; 'u': zahl:= 30; 'v': zahl:= 31; 'w': zahl:= 32; 'x': zahl:= 33; 'y': zahl:= 34; 'z': zahl:= 35; end; result:= zahl; end; |
in der Procedure rufe ich das so auf:
Quelltext
1: 2: 3: 4: 5: 6: 7: 8:
| procedure TSpieldefinition.b_zahlen_okClick(Sender: TObject); var i,j: integer; begin j:=0; j:= buchstabe_zahl(ComboBox_zahl.Text); AEvent[j].Zahl := e_zahl.Text; AEvent[j].Name := ComboBox_Zahl.Text; end; |
j sollte jetzt eigentlich den Wert von Zahl haben (also zwischen 1 und 35) bekommt aber eine 4630527.
Wer weiß wo der Fehler steckt?
Klabautermann - Fr 29.11.02 11:15
Titel: Re: rückgabewert
Hallo,
| sunday_2 hat folgendes geschrieben: |
Wer weiß wo der Fehler steckt? |
Das ist einfach, du überprüfst in deiner Case Anweisung eine Variable (Buchstabe) der du keinen Wert zugewiesen hast. Deshalb erhällst du ein Undefiniertes Ergebniss.
Gruß
Klabautermann
sunday_2 - Fr 29.11.02 11:19
Wie sag ich den der Funktion das buchstabe den wert von ComboBox_zahl.text haben soll?
Klabautermann - Fr 29.11.02 11:33
Hallo,
| sunday_2 hat folgendes geschrieben: |
| Wie sag ich den der Funktion das buchstabe den wert von ComboBox_zahl.text haben soll? |
das geht nicht. Da Buchstabe eben nur
ein Buchstabe ist und der Text in deiner Combobox ein String also
viele Buchstaben sind.
Wenn du aber z.B. willst, dass der erste Buchstabe deines Parameters sender ausgewertet wird, dann siht das so aus:
Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9:
| function TSpieldefinition.buchstabe_zahl(Sender: String):integer; var buchstabe: char; zahl:integer; begin IF (sender <> '') THEN Buchstabe := Sender[1] ELSE Buchstabe := '' [...] |
Desweiteren solltest du eine vorkehrung, für den Fall das Buchstabe einen unerwarteten Wert hat, treffen. Das machst du am besten, indem du einen ELSE Zweig in deiner CASE Abfrage einbaust:
Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9:
| [...] 'x': zahl:= 33; 'y': zahl:= 34; 'z': zahl:= 35; ELSE Zahl := 0; end; result:= zahl; end; |
In diesem Fall wird wenn ein Fehler Auftritt eine 0 zurückgegeben. Das kannst du dann wieder andersw abfragen.
Gruß
Klabautermann
sunday_2 - Fr 29.11.02 11:50
Danke :D
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2026 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!