Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   ifthen: Was ist da falsch? (https://www.delphipraxis.net/185775-ifthen-ist-da-falsch.html)

idefix2 6. Jul 2015 08:39

Delphi-Version: 2009

ifthen: Was ist da falsch?
 
In der Zeile
Delphi-Quellcode:
result := ifthen(empty<>'',2,ord(warn<>''))
kommt die Fehlermeldung:
Zitat:

[DCC Fehler] StromMainForm.pas(1705): E2250 Es gibt keine überladene Version von 'IfThen', die man mit diesen Argumenten aufrufen kann
Empty und warn sind vom Typ String, result ist integer

baumina 6. Jul 2015 08:51

AW: ifthen: Was ist da falsch?
 
Hilfe lesen:

Delphi-Quellcode:
function IfThen(AValue: Boolean; const ATrue: string; AFalse: string = ''): string;

Dein zweiter Parameter ist z.B. eine 2, das ist ja dann wohl kein String.

EDIT: Die o.g. function ist aus StrUtils, du willst wahrscheinlich die aus der Unit MATH, ggf. musst die diese explizit angeben, wenn du beide Units in der Uses-Liste hast (math.ifthen(...)).

sh17 6. Jul 2015 08:51

AW: ifthen: Was ist da falsch?
 
Also bei mir geht es (DXE4). Wo ist denn die Funktion deklariert? Normal in Math

sh17 6. Jul 2015 08:52

AW: ifthen: Was ist da falsch?
 
Zitat:

Zitat von baumina (Beitrag 1307763)
Hilfe lesen:

Delphi-Quellcode:
function IfThen(AValue: Boolean; const ATrue: string; AFalse: string = ''): string;

Dein zweiter Parameter ist z.B. eine 2, das ist ja dann wohl kein String.

die gibt es alle:

Delphi-Quellcode:
function IfThen(AValue: Boolean; const ATrue: Integer; const AFalse: Integer): Integer;
function IfThen(AValue: Boolean; const ATrue: Int64; const AFalse: Int64): Int64;
function IfThen(AValue: Boolean; const ATrue: UInt64; const AFalse: UInt64): UInt64;
function IfThen(AValue: Boolean; const ATrue: Single; const AFalse: Single): Single;
function IfThen(AValue: Boolean; const ATrue: Double; const AFalse: Double): Double;
function IfThen(AValue: Boolean; const ATrue: Extended; const AFalse: Extended): Extended;

baumina 6. Jul 2015 08:56

AW: ifthen: Was ist da falsch?
 
Siehe Edit.

mkinzler 6. Jul 2015 08:57

AW: ifthen: Was ist da falsch?
 
Lass Dir mal das Ergebnis von ord( warn <> '') anzeigen.

idefix2 6. Jul 2015 09:08

AW: ifthen: Was ist da falsch?
 
Zitat:

Zitat von baumina (Beitrag 1307763)
EDIT: Die o.g. function ist aus StrUtils, du willst wahrscheinlich die aus der Unit MATH, ggf. musst die diese explizit angeben, wenn du beide Units in der Uses-Liste hast (math.ifthen(...)).

Danke, an dem habe ich gestern abend eine Stunde herumgesucht (war aber auch schon spät :) ).
In dieser einen Unit hatte ich vergessen, Math in die uses Klausel aufzunehmen, deshalb kannte er nur die Prozedur aus den strUtils.

Ich wollte meinen Code etwas kompakter machen, überall sonst im Programm hat es funktioniert (in den anderen Units war Math schon eingebunden, und in dieser habe ich sonst nur das ifthen aus den StrUtils gebraucht)

Sir Rufo 6. Jul 2015 09:16

AW: ifthen: Was ist da falsch?
 
In dem Fall hilft immer folgender Trick:
Delphi-Quellcode:
IfThen( {hier den Cursor hin und UMSCH-STRG-LEER drücken} True, 0, 42 );
und schon sieht man, welche Argumente und welche Varianten möglich sind.

Und wenn das was erwartet wird nicht gesehen wird, dann fehlt wolhl eine Unit ...

So ganz nebenbei sollte man UMSCH-STRG-LEER mal wesentlich häufiger und an allen möglichen Stellen im IDE-Editor benutzen und sich wundern, wo dieser Shortcut denn funktioniert und welche wundersamen Hilfen dieser bereitstellen kann.


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