Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Win32/Win64 API (native code) (https://www.delphipraxis.net/17-win32-win64-api-native-code/)
-   -   Das Ex in der Funktion? (https://www.delphipraxis.net/178319-das-ex-der-funktion.html)

Popov 1. Jan 2014 17:13

Das Ex in der Funktion?
 
Nur mal so eine Frage die mir schon länger Zeit auf der Zunge liegt: was sagt das Ex hinter einer Funktion aus? Zum Beispiel:
Zitat:

ShellExecuteEx
SetWindowsHookEx
SleepEx
ReadFileEx
Da die Ex Funktionen meistens jünger sind als die ohne Ex, also später dazu kamen, könnte man meinen, dass es sich dabei um die Second Edition der Funktion handelt, also um eine Erweiterte Funktion. Nur auf was bezieht sich die Erweiterung?

Was sagt also die Ex genau aus? Nur jünger oder noch ein Parameter mehr ist wohl zu wenig, oder? Ist das irgendwo definiert?

Uwe Raabe 1. Jan 2014 17:26

AW: Das Ex in der Funktion?
 
Ich denke, das Ex steht für Extended. Was sich dann jeweils genau dahinter verbirgt, ist wohl bei jeder Funktion anders.

Bernhard Geyer 1. Jan 2014 18:01

AW: Das Ex in der Funktion?
 
Wie wäre es wenn die die Beschreibung der Funktion in der MSDN durchliest:
ShellExecuteEx zu ShellExecute

Popov 1. Jan 2014 18:32

AW: Das Ex in der Funktion?
 
He he, hat letztens auch mein Anwalt geantwortet, als ich ihn fragte ob ich nun Probleme kriege? Er sagte: lesen sie sich mal das StGB durch!

Der schöne Günther 1. Jan 2014 20:04

AW: Das Ex in der Funktion?
 
Zitat:

Zitat von Bernhard Geyer (Beitrag 1241648)
Wie wäre es wenn die die Beschreibung der Funktion in der MSDN durchliest:
ShellExecuteEx zu ShellExecute

Inwiefern soll das eine Antwort auf die Frage sein?

EWeiss 1. Jan 2014 20:26

AW: Das Ex in der Funktion?
 
Neues Jahr neues Glück.. na warte wenn Daniel das liest ;)
Scheint so ein Spezial Thread/Post zu sein :)

gruss

mkinzler 1. Jan 2014 20:27

AW: Das Ex in der Funktion?
 
Zitat:

Zitat von Der schöne Günther (Beitrag 1241663)
Zitat:

Zitat von Bernhard Geyer (Beitrag 1241648)
Wie wäre es wenn die die Beschreibung der Funktion in der MSDN durchliest:
ShellExecuteEx zu ShellExecute

Inwiefern soll das eine Antwort auf die Frage sein?

Dort sieht man die Erweiterung der ..Ex Funktion zu der Grundfunktion.

Sir Rufo 1. Jan 2014 22:16

AW: Das Ex in der Funktion?
 
Zitat:

Zitat von Der schöne Günther (Beitrag 1241663)
Zitat:

Zitat von Bernhard Geyer (Beitrag 1241648)
Wie wäre es wenn die die Beschreibung der Funktion in der MSDN durchliest:
ShellExecuteEx zu ShellExecute

Inwiefern soll das eine Antwort auf die Frage sein?

Wenn man beide Funktionen vergleicht, dann kommt man evtl. auch auf die gesuchte Bedeutung von Ex ;)

sx2008 1. Jan 2014 22:41

AW: Das Ex in der Funktion?
 
Also gut in Wirklichkeit lief es doch so:
[contains secrect recordings from microsoft]

Ein API-Designer hat irgendwann mal eine ganze Reihe von Funktionen kreiert die dann in DLLs gegossen wurden.
Er ist mächtig stolz drauf und denkt es wäre für die Ewigkeit.
In Wirklichkeit war er auch kein API-Designer sondern ein ganz normaler Programmierer bei MS.
Eineinhalb Jahre später wird dann festgestellt:
Zitat:

Kacke, die Funktion hat zu wenig Parameter!
Welcher Idiot hat sich das ausgedacht?
Ein altgedienter Entwickler kommt hinzu und meint:
Zitat:

Hey Jungs bleibt mal cool. Wir machen das wie wir es immer gemacht haben.
Wir erfinden einfach eine neue Funktion mit mehr Parametern.
Und die alte Funktion ruft dann hintenrum die neue Funktion auf.
Ein anderer Entwickler wirft ein:
Zitat:

Aber wie soll denn die neue Funktion heisen
wenn die alte Funktion schon den perfekten Namen hat wird doch keiner die neue finden?
Großes Geschrei - "einfach ne 2 hinten dran hängen" -
"nein, ein ganz neuer Funktionsname muß her" -
"die alte Funktion üngültig erklären und die neue kriegt dann ihren Namen"

Der Entwickler-Opa steht auf und meint:
Zitat:

Wir hängen einfach ein Ex für Extended hintendran.
Das hört sich professionell an, dann merkt keiner dass
wir einen Fehler gemacht haben

PS: ein gutes Neues

Bernhard Geyer 1. Jan 2014 23:39

AW: Das Ex in der Funktion?
 
Zitat:

Zitat von mkinzler (Beitrag 1241667)
Zitat:

Zitat von Der schöne Günther (Beitrag 1241663)
Zitat:

Zitat von Bernhard Geyer (Beitrag 1241648)
Wie wäre es wenn die die Beschreibung der Funktion in der MSDN durchliest:
ShellExecuteEx zu ShellExecute

Inwiefern soll das eine Antwort auf die Frage sein?

Dort sieht man die Erweiterung der ..Ex Funktion zu der Grundfunktion.

:thumb:

Zitat:

Zitat von Sir Rufo (Beitrag 1241680)
Zitat:

Zitat von Der schöne Günther (Beitrag 1241663)
Zitat:

Zitat von Bernhard Geyer (Beitrag 1241648)
Wie wäre es wenn die die Beschreibung der Funktion in der MSDN durchliest:
ShellExecuteEx zu ShellExecute

Inwiefern soll das eine Antwort auf die Frage sein?

Wenn man beide Funktionen vergleicht, dann kommt man evtl. auch auf die gesuchte Bedeutung von Ex ;)

:thumb:

Popov 1. Jan 2014 23:49

AW: Das Ex in der Funktion?
 
Zitat:

Zitat von Sir Rufo (Beitrag 1241680)
Wenn man beide Funktionen vergleicht, dann kommt man evtl. auch auf die gesuchte Bedeutung von Ex ;)

Mein alter Lehrer fragte mich mal: Wissen Sie was der Unterschied zwischen einem Arzt und einem Anwalt ist? Der Arzt - sage er - muss alles wissen, der Anwalt muss wissen wo er es nachlesen kann.

Dass Ex Extended bedeutet, war mir schon irgendwie klar. Das habe ich auch in dem Halbsatz im ersten Beitrag angedeutet: "also um eine Erweiterte Funktion". Auf der anderen Seite man kann immer eine Funktion erweitern und noch mal erweitern und nochmal. Nur eine ShellExecuteExExEx gibt es wohl nicht. Bedeutet das, dass es Schluss mit dem Erweitern ist? Ein mal Schrott basteln und ein mal verbessern? Also die logischste Antwort kam bisher von sx2008.

Wie gesagt, es ist keine wichtige Frage, es ging nur darum nach welchen Kriterien Ex vergeben wird. Einfach nur so.

Also den Text von ShellExecute habe ich mehr oder weniger schon früher gelesen.

himitsu 1. Jan 2014 23:56

AW: Das Ex in der Funktion?
 
Nicht zu vergessen das A und W in der Funktion.

Sir Rufo 2. Jan 2014 00:02

AW: Das Ex in der Funktion?
 
Ich weiß jetzt nicht warum MSDN-Library durchsuchenShellExecute Schrott sein soll und MSDN-Library durchsuchenShellExecuteEx die richtige Version (oder auch umgekehrt).

Beide habe ihre Daseinsberechtigung, denn ich sehe sehr oft die Verwendung von MSDN-Library durchsuchenShellExecute (einfacher Aufruf) und seltener MSDN-Library durchsuchenShellExecuteEx.

IdR ist eine Funktion ohne Ex eine Vereinfachung für den schnellen Aufruf ohne großen Schnickschnack und die Funktion mit Ex mit allem Schniddeldibupp aber auch zumeist "umständlicherem" Aufruf (bei MSDN-Library durchsuchenShellExecuteEx muss ein Record gefüllt werden, der als Parameter übergeben wird).

Zudem gibt es bei den API keine Möglichkeit der Überladung (
Delphi-Quellcode:
overload
), somit muss halt ein anderer Name her.

Furtbichler 2. Jan 2014 08:38

AW: Das Ex in der Funktion?
 
Zitat:

Zitat von Sir Rufo (Beitrag 1241696)
Ich weiß jetzt nicht warum MSDN-Library durchsuchenShellExecute Schrott sein soll und MSDN-Library durchsuchenShellExecuteEx die richtige Version (oder auch umgekehrt).

Ich weiß jetzt auch nicht, wer das behauptet. Allerdings ist es aus softwaretechnischer Sicht Quatsch, wenn eine API mehrere quasi overloaded Versionen ein und derselben Funktion bereithält. Die Bequemlichkeit kann sich der Programmierer dann selbst basteln.

Microsoft hat hier entweder nachträglich die -Ex Versionen hinzugefügt oder vorausschauend etwas convinience bereitgestellt (ich glaube, die Story von sx2008 entspricht der Wahrheit). Die -Ex Versionen machen aus deshalb Sinn, weil hier die Funktionalität nachträglich erweitert werden kann, ohne die Signatur zu ändern=> Programme bleiben weiterhin kompilierbar.

Insofern ist -nachträglich betrachtet- nur 'ShellExecute' Quatsch bzw. überflüssig.

Uwe Raabe 2. Jan 2014 09:11

AW: Das Ex in der Funktion?
 
Zitat:

Zitat von Furtbichler (Beitrag 1241708)
Programme bleiben weiterhin kompilierbar.

Insofern ist -nachträglich betrachtet- nur 'ShellExecute' Quatsch bzw. überflüssig.

Wenn man denn bei einem Wechsel der Windows(-API)-Version immer alle Programme auf die neue API kompilieren möchte bzw. kann.

Der Vorteil der Beibehaltung des alten Namens mit seiner Signatur bedeutet ja auch, daß bereits kompilierte Programme weiterhin mit der neuen API laufen. Andernfalls hätten wohl einige unserer Mitglieder hier schon seit geraumer Zeit heftige Probleme ihr Delphi 5 noch unter einem halbwegs aktuellen Windows laufen zu lassen.

Umgekehrt erhöht die Verwendung der alten Funktion die Wahrscheinlichkeit, daß die Anwendung auch noch auf einem älteren Windows läuft.

Popov 2. Jan 2014 18:38

AW: Das Ex in der Funktion?
 
Man kann also abschließend sagen, dass es nichts spezielles bedeutet, wie z. B. bei A und W, sondern, dass es eine andere Version einer Funktion ist, ob man später entdeckt hat, dass da etwas fehlt, oder schon von Anfang an eine einfache und eine komplexere Funktion anbieten wollte.

Das wollte ich nur wissen :)

Furtbichler 2. Jan 2014 19:41

AW: Das Ex in der Funktion?
 
@Uwe Raabe:
Du hast -vermutlich unwissentlich- zwei konträre Aussagen irrtümlich und falsch zusammenhängend zitiert.
1. Die Beibehaltung der Original-Signatur gewährleistet die Abwärtskompatibilität.
2. Aus Sicht eines API-Architekten ist Originalsignatur Quark, weil Redundanz in einer API nichts zu suchen hat.

Uwe Raabe 2. Jan 2014 22:33

AW: Das Ex in der Funktion?
 
Zitat:

Zitat von Furtbichler (Beitrag 1241841)
@Uwe Raabe:
Du hast -vermutlich unwissentlich- zwei konträre Aussagen irrtümlich und falsch zusammenhängend zitiert.

Wenn ich deinen Post jetzt unter Berücksichtigung deines Kommentars nochmal lese, kann man das tatsächlich anders interpretieren. Das ist halt das Problem bei natürlicher Sprache - sie ist nicht kontextfrei und oft mehrdeutig. :wink:


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