Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi boolean function (https://www.delphipraxis.net/144838-boolean-function.html)

Wolfsherz 17. Dez 2009 23:11


boolean function
 
Hallo,


ich hätte eine Frage zu einer boolean Funktion:

Delphi-Quellcode:
function stattgefunden(spielnummer:integer):boolean;
wenn ich diese Funktion nun über

Delphi-Quellcode:
  if stattgefunden(strtoint(edit1.text))=true then
aufrufe und in edit1.text z.B. 40 eingebe (wo false rauskommen muss), dann funktioniert das auf diese Weise, also er gibt mir wie vorgesehen false aus.


Wenn ich die Funktion aber über beispielsweise:

Delphi-Quellcode:
  if stattgefunden(40)=true then
aufrufe (wo ja false rauskommen müsste), gibt er mir true aus für die selbe Funktion!?


Oder allgemeiner:

Delphi-Quellcode:
  for e:=0 to 100 do
    begin  
      if stattgefunden(e)=true then
gibt mir ebenfalls für jeden (!) Wert true raus.


Woran liegt das? Würde mich sehr über Hilfe freuen.

Vielen Dank.

himitsu 17. Dez 2009 23:16

Re: boolean function
 
erstmal prüft man nicht auf =true
(welches aber eher die entgegengesetzte Auswirkung haben kann und ein True eventuell nicht als True erkannt wird)

und dann: Wie sieht "stattgefunden" aus, bzw. was macht dieses?

mleyen 17. Dez 2009 23:17

Re: boolean function
 
In einer IF-Abfrage solltest du nie (solang nicht expliziet benötigt) auf True oder False prüfen.

Dazu kann ich dir nur dieses Minitutorial ans Herz legen.
Hier im Forum sollte aber auch einiges zu finden sein.

Wolfsherz 17. Dez 2009 23:20

Re: boolean function
 
Vielen Dank schonmal für die Antworten. Werd mir das Tutorial mal ansehen. Die Funktion sieht so aus:

Delphi-Quellcode:
function stattgefunden(spielnummer:integer):boolean;
var test1,test2:string;
begin
  spielnr;
  test1:='mA-VL Ww'+' '+(spiel);
  test2:=copy(editS,(spielpos)+5,12);
  if test2 = test1 then
    stattgefunden:=false
  else
    stattgefunden:=true;
end;

/edit: also, wenn ich bei der Abfrage "= true" weglasse, funktioniert es aber auch nicht. Oder bin ich zu doof, dass ich die Lösung in dem Minitutorial übersehe?

juergen 17. Dez 2009 23:27

Re: boolean function
 
Hallo,

anstelle "stattgefunden := ..." solltest du
Result := ...
verwenden.

Luckie 17. Dez 2009 23:29

Re: boolean function
 
Sollte aber nichts ändern. Er hat eben noch die alte Pascal Syntax verwendet.

Wolfsherz 17. Dez 2009 23:30

Re: boolean function
 
Also ich hab mal folgenden Lösungsvorschlag ausprobiert, und siehe da, er scheint zu klappen. Allerdings frag ich mich, wieso es vorher nicht geklappt hat, obwohl es doch eigentlich der selbe code nur eben auf eine Zeile verkürzt ist, wenn ich das Tutorial richtig verstehe?

Delphi-Quellcode:
function stattgefunden(spielnummer:integer):boolean;
var test1,test2:string;
begin
  spielnr;
  test1:='mA-VL Ww'+' '+(spiel);
  test2:=copy(editS,(spielpos)+5,12);
  stattgefunden:=test2=test1;
end;

/edit: Nein, das war auch nicht die Lösung :(

Das Problem scheint mir in den Parametern zu liegen, kann das sein? Weil wie gesagt, wenn ich stattgefunden(40) abfrage, also direkt von einer Zahl, dann gibt er mir immer true raus. Wenn ich stattgefunden (strtoint(edit1.text)) abfrage und dann in edit1.text "40" eingebe gibt er mir aber (so wie es sein soll) false raus ...

himitsu 17. Dez 2009 23:43

Re: boolean function
 
zuviele globale Variablen

und spielnummer wird doch garnicht verwendet?

Wolfsherz 18. Dez 2009 00:45

Re: boolean function
 
Ja, das war es, himitsu. Also lags wirklich an den Parametern.

Vielen Dank an alle! =)


Alle Zeitangaben in WEZ +1. Es ist jetzt 04:11 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 by Thomas Breitkreuz