![]() |
AW: Procedure vs Function, Vor- und Nachteile
Zitat:
@Zacherl Was mir in der Betrachtung fehlt, ist die Schreibschutzprüfung die ja bei
Delphi-Quellcode:
irgendwo stattfinden muß.
const
Gruß K-H |
AW: Procedure vs Function, Vor- und Nachteile
Zitat:
Delphi-Quellcode:
procedure TuWas(const X: Integer);
begin // X := 987; <-- Geht nicht PInteger(@X)^ := 987; ShowMessage(IntToStr(X)); end; procedure TForm1.FormCreate(Sender: TObject); begin TuWas(123); end; |
AW: Procedure vs Function, Vor- und Nachteile
Zitat:
Zitat:
Gruß K-H |
AW: Procedure vs Function, Vor- und Nachteile
Zitat:
|
AW: Procedure vs Function, Vor- und Nachteile
Es gibt Aufrufkonventionen, da landet alles auf dem Stack und nichts in Registern (außer dem Result, der praktisch überall in EAX ist ... abgesehn davon, wo hier der Result zu einem VAR-Parameter gemacht wurde)
Praktisch landen im "Pascal" die ersten 3 Parameter in Registern (EAX, EDX und ECX, wenn möglich) und der Rest immer auf dem Stack. In Methoden gibt es einen "unsichtbaren" SELF-Parameter, der als Erstes kommt. ("procedure t.x", "class procedure t.x" aber nicht "class procedure t.x static") Dazu kommt dann noch, ob die Referenz oder der Wert dort gespeichert wird. Delphi macht bei gemanagten Typen aus aus dem Result einen VAR-Parameter und Unter 64 Bit gibt es nur noch eine Konvention mit paar mehr Registern.
Delphi-Quellcode:
Im Allgemeinen ist das Ganze aber dem Programmierer eigentlich total egal.
{ IN .. Kopie . . . . . . . } Xxx: Txxx;
{ IN .. Referenz oder nicht } const Xxx: Txxx; { IN .. Referenz . . . . . .} [ref] const Xxx: Txxx; // relativ neu { INOUT Referenz . . . . . .} var Xxx: Txxx; { OUT . Referenz . . . . . .} out Xxx: Txxx; Außer man will sowas im Assembler aufrufen und ansonsten gibt es in der neuen RTTI auch die Möglichkeit das von der RTTI via Invoke aufrufen zu lassen. ![]() ![]() ![]() ![]() |
AW: Procedure vs Function, Vor- und Nachteile
Zitat:
Wenn ich mich nicht irre müßte es "...und der Rest immer auf dem Stack" heißen !? Könnte das bitte jemand verifizieren? Gruß K-H |
AW: Procedure vs Function, Vor- und Nachteile
Zitat:
|
AW: Procedure vs Function, Vor- und Nachteile
Danke!
klar hat er sich da vertan (aber sicher war ich mir nicht!), aber wenn ein Anfänger darüber stolpert... Falschinformationen haben ein zähes Leben! Gruß K-H |
AW: Procedure vs Function, Vor- und Nachteile
Jupp, war der Stack. (hatte grade schonwieder "Jupp, waren Register" geschrieben :oops:)
Aber so steht es bestimmt schon immer da oben drin. :angle2: |
AW: Procedure vs Function, Vor- und Nachteile
Zitat:
Also grundsätzlich, und da ist es mir völlig egal welche "Authorität" in seinem "CleanCode" guide irgendwas meint schreiben zu müssen, halte ich es im Gegenteil für eine enorm schlechte Praxis, die Features, die man besitzt (zB. "const" und "out") nicht zu benutzen, wenn dies angebracht wäre. Mal ganz abgesehen davon, dass es eben zumindest im Falle von "const" die Performance deutlich beeinflussen kann. Und selbst wenn es nur 5% sind, und man gleichzeitig noch die Übersicht durch den eingeschränkten Zugriff erhöht... Im Grunde kann ich Bernau da nur zustimmen. Wollte es aber nochmal selbst mit eigenen Worten gesagt haben. Zitat:
Zitat:
![]() Zitat:
An dieser Stelle würde ich Zacherl gern noch für seinen Aufwand und die Erklärungen danken! :) |
Alle Zeitangaben in WEZ +1. Es ist jetzt 11:57 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