AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Object-Pascal / Delphi-Language Merkwürdiges Verhalten bei einer Delphi-eigenen Funktion und erweiterter Syntax
Thema durchsuchen
Ansicht
Themen-Optionen

Merkwürdiges Verhalten bei einer Delphi-eigenen Funktion und erweiterter Syntax

Ein Thema von Delphi-Laie · begonnen am 29. Aug 2013 · letzter Beitrag vom 30. Aug 2013
Antwort Antwort
Delphi-Laie

Registriert seit: 25. Nov 2005
1.474 Beiträge
 
Delphi 10.1 Berlin Starter
 
#1

AW: Merkwürdiges Verhalten bei einer Delphi-eigenen Funktion und erweiterter Syntax

  Alt 29. Aug 2013, 20:06
Es könnte auch einfach an dem veralteten Delphi 5 liegen, bei dem das sqrt direkt vom Compiler aufgelöst wird. In neueren Delphi-Versionen ist das je nach Zielplattform zwar unterschiedlich, aber als echte Assembler-Funktion in System.pas implementiert und da funktioniert die erweiterte Syntax auch.
Hallo Uwe Raabe, Deine Antwort trifft es wohl am ehesten.

Delphi 7 zeigt exakt das gleiche Verhalten. Turbo-Delphi hingegen compiliert es (m.E. das einzig korrekte Verhalten unter der sog. "erweiterten Syntax"), und bei "Deklaration suchen" wird auf eine gleichnamige (Assembler-)Funktion in der Unit System verwiesen (die wird dann tatsächlich gefunden). Auch wird, wie schon gesagt, "sqrt(-1)" als alleiniger Befehl ohne jede Wertzuweisung vom Compiler widerstandslos akzeptiert (der negative Radikant ist ja offensichtlich, aber alles kann man eben nicht berücksichtigen, soll die Compilierung nicht zu langsam werden), und beim Programmablauf kommt natürlich eine Exzeption.
  Mit Zitat antworten Zitat
gammatester

Registriert seit: 6. Dez 2005
999 Beiträge
 
#2

AW: Merkwürdiges Verhalten bei einer Delphi-eigenen Funktion und erweiterter Syntax

  Alt 30. Aug 2013, 08:06
Ich stimme mit Uwe überein. Das ist übrigens nicht das einzige Mal, daß Compiler-Magic-'Funktionen' speziell behandelt werden, weil's halt keine richtigen Funktionen sind, zB wird if nil=addr(sin) then ; von D2-D7 nicht kompiliert, ab D9 schon. Das komplett analoge Konstrukt if nil=addr(sinh) then ; wird von allen übersetzt.
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 22:52 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-2025 by Thomas Breitkreuz