| Autor |
Beitrag |
colaka
      
Beiträge: 200
Erhaltene Danke: 4
Win XP, W7
Delphi 2005 Prof.
|
Verfasst: So 18.10.09 10:36
Hallo,
ich möchte ein Feld einer Tabelle auf den Anfangsbuchstaben überprüfen und dann einen bestimmten Wert als String ausgeben. Dazu habe ich mir die folgende Funktion (aufs wesentliche reduziert) deklariert:
Delphi-Quelltext 1: 2: 3: 4:
| function HName(X:String) : String; begin if X[1] = 'A' then HName := 'Aale' else HName := 'NoName'; end; |
Es kommt zwar keine Fehlermeldung, aber funtionieren tut es auch nicht. Kann mir jemand sagen, warum?
Danke Ebi
|
|
Robert.Wachtel
      
Beiträge: 895
Erhaltene Danke: 7
Windows 7 Ultimate x64
D5 Ent, D7 Arch, RAD Studio 2010 Pro, VS 2008
|
Verfasst: So 18.10.09 10:48
colaka hat folgendes geschrieben : | | [...] funtionieren tut es auch nicht. [...] |
Und das heisst im Klartext genau was?
|
|
jackle32
      
Beiträge: 183
Erhaltene Danke: 7
Win7
Delphi XE5 Starter, RAD Studio XE7 Pro
|
Verfasst: So 18.10.09 10:56
Moin,
kann auch gar nicht funktionieren. Du musst in Funktionen bestimmen was dein Rückgabewert ist. Der Befehl dafür ist "result".
Du musst deinen Rückgabewert also nicht auf den Funktionsnamen schreiben, sondern mit result zurück geben.
Also so:
Delphi-Quelltext 1: 2: 3: 4:
| function HName(X:String) : String; begin if X[1] = 'A' then result := 'Aale' else result := 'NoName'; end; |
Gruß Jack
_________________ Es gibt keine dummen Fragen, nur dumme Antworten.
|
|
colaka 
      
Beiträge: 200
Erhaltene Danke: 4
Win XP, W7
Delphi 2005 Prof.
|
Verfasst: So 18.10.09 11:03
Ja, danke.
Mit result geht es.
|
|
Robert.Wachtel
      
Beiträge: 895
Erhaltene Danke: 7
Windows 7 Ultimate x64
D5 Ent, D7 Arch, RAD Studio 2010 Pro, VS 2008
|
Verfasst: So 18.10.09 11:32
jackle32 hat folgendes geschrieben : | | [...] kann auch gar nicht funktionieren. Du musst in Funktionen bestimmen was dein Rückgabewert ist. Der Befehl dafür ist "result". [...] |
Mööp - falsche Antwort. "Result" ist nur eine vordefinierte Variable, die den Rückgabewert repräsentiert und mit der im Gegensatz zur Verwendung des Funktionsnamens auch innerhalb der Funktion gearbeitet werden kann.
Dass der Funktionsname dem Rückgabewert entspricht ist seit ewigen Pascal-Zeiten so.
www.delphi-treff.de/...uren-und-funktionen/
en.wikibooks.org/wik...Syntax_and_functions
Und jetzt noch einmal ausprobieren und staunen:
Delphi-Quelltext 1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15:
| program MyTestProject;
{$APPTYPE CONSOLE}
uses SysUtils;
function MyTest: Integer; begin MyTest := 1234; end;
begin Writeln(MyTest()); end. |
Die Ursache des Problems des Threaderstellers liegt daher woanders. Daher auch meine Frage nach dem "funktioniert nicht".
Moderiert von Narses: Code- durch Delphi-Tags ersetzt
|
|
jackle32
      
Beiträge: 183
Erhaltene Danke: 7
Win7
Delphi XE5 Starter, RAD Studio XE7 Pro
|
Verfasst: Mi 21.10.09 15:10
Hallo nochmal,
also nachdem Robert angeregt hat diese Diskussion nochmal aufzunehmen. Hier nochmal ein paar Ideen und Fragen.
Nach der Lektüre der Links von Robert stimm ich mit ihm überein, dass die ursprüngliche Funktion okay ist.
Um daher den wirkliche Fehler zu finden wäre es gut wenn colaka noch mehr Sourcecode posten könnte.
Grüße Jack
_________________ Es gibt keine dummen Fragen, nur dumme Antworten.
|
|
Nersgatt
      
Beiträge: 1581
Erhaltene Danke: 279
Delphi 10 Seattle Prof.
|
Verfasst: Mi 21.10.09 15:21
Man sollte meiner Meinung nach aber vermeiden, den Funktionsnamen als Rückgabewert zu benutzen. Das stiftet nur Verwirrung.
Delphi-Quelltext 1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19:
| program Project1;
{$APPTYPE CONSOLE}
uses SysUtils;
function MyTest: Integer; var MyTest : Integer; begin MyTest := 1234; end;
begin Writeln(MyTest()); readln; end. |
Was wird auf der Konsole ausgegeben? Wer es errät, ohne es vorher selbst zu probieren, erlagt ewigen Ruhm.
Gruß,
Jens
_________________ Gruß, Jens
Zuerst ignorieren sie dich, dann lachen sie über dich, dann bekämpfen sie dich und dann gewinnst du. (Mahatma Gandhi)
|
|
Robert.Wachtel
      
Beiträge: 895
Erhaltene Danke: 7
Windows 7 Ultimate x64
D5 Ent, D7 Arch, RAD Studio 2010 Pro, VS 2008
|
Verfasst: Mi 21.10.09 15:33
Nersgatt hat folgendes geschrieben : | | Man sollte meiner Meinung nach aber vermeiden, den Funktionsnamen als Rückgabewert zu benutzen. Das stiftet nur Verwirrung. [...] |
Das ist aber nicht das Problem bei der oben geposteten Funktion.
Wie jackle32 schon korrekt sagte, ohne Kenntnis des restlichen Quellcodes ist alles reine Spekulation.
|
|