Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi {$X-} Result abfragen (https://www.delphipraxis.net/159463-%7B%24x-%7D-result-abfragen.html)

mleyen 29. Mär 2011 12:53


{$X-} Result abfragen
 
Hi,

wenn
Delphi-Quellcode:
{$EXTENDEDSYNTAX OFF}
geschaltet ist, muss man den Result immer mit dem Funktionsnamen setzen.
Aber wie fragt man den dann eigentlich ab?

Beispiel:
Delphi-Quellcode:
{$X-}
type
  TShortChar = array[Low(Byte)..High(Byte)] of Char;

function Pos(const Sign: Char; const AStr: TShortChar): Integer;
begin
  Pos := 0;
  while (AStr[Pos] <> #0) and (Pos < High(TShortChar)) do
    if AStr[Pos] = Sign then
      Exit
    else
      inc(Pos);
  Pos := -1;
end;
Der Compiler interpretiert das als wenn ich die Funktion nochmal aufrufen möchte und sagt das Parameter fehlen.
Irgendwie muss man doch da dran kommen, ohne wieder
Delphi-Quellcode:
{$X+}
zu schalten :|

jfheins 29. Mär 2011 13:07

AW: {$X-} Result abfragen
 
Ich zitiere mal die Doku:
Zitat:

But Result is not completely interchangeable with the function name. When the function name appears on the left side of an assignment statement, the compiler assumes that it is being used (like Result) to track the return value; when the function name appears anywhere else in the statement block, the compiler interprets it as a recursive call to the function itself. Result, on the other hand, can be used as a variable in operations, typecasts, set constructors, indexes, and calls to other routines.

If the function exits without assigning a value to Result or the function name, then the function's return value is undefined.
Zitat:

Irgendwie muss man doch da dran kommen, ohne wieder {$X+} zu schalten
Nein, geht nicht. Schreibe den Code um, der es ausgeschaltet hat :mrgreen:

shmia 29. Mär 2011 13:11

AW: {$X-} Result abfragen
 
Zitat:

Zitat von Online Hilfe
Hinweis: Die Direktive $X dient der Abwärtskompatibilität zu älteren Versionen von Borland Pascal.
In neuen Delphi-Anwendungen sollten Sie den Modus {$X-} nicht verwenden.

Es ist also keine gute Idee $X zu benützen oder überhaupt darüber nachzudenken.

mleyen 29. Mär 2011 13:12

AW: {$X-} Result abfragen
 
Mist, da hab ich gar nicht nach gesucht... :duck:

Kann es sein, dass es mit irgendeinem Compiler mal ging? TP?

shmia 29. Mär 2011 13:14

AW: {$X-} Result abfragen
 
Zitat:

Zitat von mleyen (Beitrag 1091730)
...dass es mit irgendeinem Compiler ging? May TP?

Ja, es kann eigentlich nur die Idee dahinter sein, alten Sourcecode aus Turbo-Pascal-Zeiten zu kompilieren.

DeddyH 29. Mär 2011 14:08

AW: {$X-} Result abfragen
 
Der müsste aber doch trotzdem kompilieren, da IIRC ja per Default beide Möglichkeiten der Funktionsrückgabe akzeptiert werden.

mleyen 29. Mär 2011 14:21

AW: {$X-} Result abfragen
 
Ne, der Funktionsname ist sozusagen eine Write-Only Property. :lol:

DeddyH 29. Mär 2011 14:25

AW: {$X-} Result abfragen
 
In der allergrößten Not nimmt man halt eine lokale Variable zum Rechnen/Vergleichen und weist diese am Schluss der Rückgabe zu. Unter TP (lang lang ist' s her) habe ich das IIRC auch so gemacht.


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