Delphi-PRAXiS
Seite 2 von 2     12   

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi lustiges problem mit dem compiler (?) (https://www.delphipraxis.net/135570-lustiges-problem-mit-dem-compiler.html)

sx2008 13. Jun 2009 14:25

Re: lustiges problem mit dem compiler (?)
 
Zitat:

Zitat von Apollonius
Versuch's einfach mal. Ohne static wird es nicht funktionieren.

"Static" ist aber kein Delphi Schlüsselwort.
Der Compiler kann damit nichts anfangen.

mkinzler 13. Jun 2009 14:28

Re: lustiges problem mit dem compiler (?)
 
Ist auch standard bei delphi
Zitat:

Zitat von Delphi Hilfe
Statische Methoden
Methoden sind standardmäßig statisch. Beim Aufruf bestimmt der deklarierte Typ (also der Typ zur Compilierzeit) der im Aufruf verwendeten Klassen- bzw. Objektvariablen, welche Implementierung aktiviert wird. Die Draw-Methoden im folgenden Beispiel sind statisch


Apollonius 13. Jun 2009 14:34

Re: lustiges problem mit dem compiler (?)
 
Versucht es einfach mal. Ohne die Direktive static funktioniert es einfach nicht, weil selbst bei (nicht-statischen) Klassenmethoden noch ein Self übergeben wird. Markus, dein Hilfezitat bezieht sich nicht auf Klassenmethoden.

himitsu 13. Jun 2009 14:44

Re: lustiges problem mit dem compiler (?)
 
Zitat:

Zitat von sx2008
"Static" ist aber kein Delphi Schlüsselwort.
Der Compiler kann damit nichts anfangen.

[equote="himi's himXML sagt:"]
Delphi-Quellcode:
TXMLFile = Class
  Class Function GetLibVersion: AnsiString; Static;
[/equote]
oder Hier im Forum suchenclass static
http://www.delphipraxis.net/internal...t=class+static
http://www.delphipraxis.net/internal...t=class+static

Desmulator 13. Jun 2009 16:28

Re: lustiges problem mit dem compiler (?)
 
Zitat:

Zitat von arkon
warum funktioniert "Result := Round(TChVoc(Item1).coeff - TChVoc(Item2).coeff);" aber nicht "if Round(TChVoc(Item1).coeff > TChVoc(Item2).coeff) then" !?!??!?!?

Afaik verlangt ein if-Statement immer einen Boolischen Ausdruck. Round gibt aber einen Integer zurück. In deinem zweiten Fall rundest du den Boolischen Ausdruck der duch > erzeugt wird.
Delphi-Quellcode:
Result := Round(TChVoc(Item1).coeff - TChVoc(Item2).coeff);
Result ist ein Integer. Daher möglich.
Delphi-Quellcode:
if Round( TChVoc(Item1).coeff > TChVoc(Item2).coeff ) then
Das Round klammert den Ausdruck TChVoc(Item1).coeff > TChVoc(Item2).coeff ein. Round gibt einen Integer zurück. If will aber einen boolischen haben. Irgendwie geht das nicht oder ? :wink:

Edit: Du könntest auch auf LongBool casten. 0 wär dann true, alles andere false. ( imho )


Alle Zeitangaben in WEZ +1. Es ist jetzt 22:59 Uhr.
Seite 2 von 2     12   

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