Was ist ein handle in der Software
-
[quote="junix"]
Pellaeon schrieb:
Es ist völlig irelevant, was hinter einem Handle Steckt. Das Handle ist einfach ne eindeutige ID, welche es ermöglicht, Funktionen mehrfach verwendbar zu machen. Nichts weiter. Wie das im Einzelnen implementiert ist, liegt in der Kompetenz der einzelnen Softwerker.
Nein, es kann mehr als ne ID sein. Bei nem aktuellen Projekt werden in C auch Handles verwendet, aber die behalten ne ID, nen Mapping in einem Speicherbereich, verschiedene Flags usw.
Ich find bisher auch den Post von yet_another_kenner am passensten das damit ein wenig versucht wird OOP zu betreiben, weils Objekte ja gerade in C nicht gibt, man aber irgendwie trotzdem sowas ähnliches brauch um immer darauf zugreifen zu können.
-
Talla schrieb:
Nein, es kann mehr als ne ID sein. Bei nem aktuellen Projekt werden in C auch Handles verwendet, aber die behalten ne ID, nen Mapping in einem Speicherbereich, verschiedene Flags usw.
Woraus resultiert, das dein "Handle" nichts weiter als ein Zeiger ist, der - wie ich weiter oben festgestellt hatte - auch nichts weiter als eine ID für ein bestimmtes Element des Arrays "Speicher" ist.
Man kann sich auch gut an der Übersetzung von "Handle" ins Deutsche orientieren: "Handle" heisst nichts anderes als "Griff" ... wo der Griff nun aber befestigt ist (ein ganzes Objekt, nur eine Struktur oder einfach nur ein einzelnes Byte) ist völlig egal. Es soll nur einfach bestimmte Daten wieder greifbar machen, wenn eine Funktion aus einer Bibliothek aufgerufen wird.
-
@junix wie definierst du Zeiger?
Ich verstehe darunter eine Variable, welche eine Adresse enthält. Eine ID ist keine Adresse für mich. Das ist eher sowas wie ein Primary Key. Ich kann jemand damit identifizieren. Darum muss ich aber noch lange nicht wissen, wo er wohnt.
Daher ist für mich ein Handle kein Zeiger. Hinter dem Handle kann ein Zeiger stecken, ja klar, oder ne Datei oder sonstwas, aber das Handle an sich ist doch kein Zeiger. Zumindest nicht im Sinne eines Zeigers in C/C++/Pascal/usw.
-
Pellaeon schrieb:
@junix wie definierst du Zeiger?
Ich mag keine Selbstzitate, aber:
junix schrieb:
Was ist denn schlussendlich ein Zeiger? Nichts weiter als der Index eines riesigen (2n, also z.B. 232 = 4294967296 Arrayplätze) Arrays.
Nenn das Array Speicher und du hast exakt die Situation... Ist lediglich eine abstraktere Sichtweise.
-
Interessante Diskussion, Leute! Weiter so...
-
junix schrieb:
Pellaeon schrieb:
@junix wie definierst du Zeiger?
Ich mag keine Selbstzitate, aber:
junix schrieb:
Was ist denn schlussendlich ein Zeiger? Nichts weiter als der Index eines riesigen (2n, also z.B. 232 = 4294967296 Arrayplätze) Arrays.
Nenn das Array Speicher und du hast exakt die Situation... Ist lediglich eine abstraktere Sichtweise.
*gg* Dann caste dein Handle mal zu nem Zeiger(oder du musst das ja nicht machen, ist ja schon ein Zeiger bei dir) und nun greif mal drauf zu. Ich schätze dann wirst ne Überraschung erleben ... . Wenns ein Zeiger ist, dürfte ja nix passieren.
-
Vielleicht könnte man sagen es gibt direkte Zeiger und indirekte Zeiger und Handles sind meistens indirekte Zeiger.
-
junix schrieb:
Ist lediglich eine abstraktere Sichtweise.
Denk darüber nach und über den Rest der hier gesagt wurde. Und tu dir selber nen Gefallen und meld dich erst wieder wenn dus auch verstanden hast.
-
Pellaeon schrieb:
*gg* Dann caste dein Handle mal zu nem Zeiger
Welchen Handle, zum Henker
? Ein Handle kann intern alles mögliche sein. Mann bist du ein sturer Begriffstutziger!! Das Wort Handle ist ein abtrakter Begriff. Es kann je nach API, Bibliothek und Kontext unterschiedlich implementiert sein.
Hier mal ein Auszug aus commctrl.h des PSDK:
typedef struct _TREEITEM *HTREEITEM;
Wenn du schon nicht begreifen willst, was dir hier alle einstimmig erklären, dann gib dich erst einmal damit zufrieden, dass du in diesem Fall einfach nur falsch liegst. Vielleicht kapierst du es irgendwann später mal, wenn du nicht-triviale Software entwickelst.
Sorry, das musste raus.
-
@junix -> in dem embedded Bereich, wo ich Software zum sehen bekam, waren Handles meistens ID's.
Es gibt sicherlich auch andere Möglichkeiten.Allgemein noch zu diesem Forum -> Foren sind nützlich und sinnvoll. Aber ich meine dass man niemals Beleidigend sein sollte. Ich ziehe es vor, sachlich und neutral zu sein. Jeder Mensch sieht die Dinge von an einem anderen Betrachtungswinkel aus.
Mir ist aufgefallen, dass es hier ganz schon deftig zugeht. Ich kenne andere Foren...
Frohes Fest und guten Rutsch an euch alle.
Krasstala
-
krasstala schrieb:
@junix -> in dem embedded Bereich, wo ich Software zum sehen bekam, waren Handles meistens ID's.
Hmmmm...
junix schrieb:
Was ist denn schlussendlich ein Zeiger? Nichts weiter als der Index eines riesigen (2n, also z.B. 232 = 4294967296 Arrayplätze) Arrays.
Von daher erschliesst sich mir der UNterschied Embedded-Software-> übrige Software noch immer nicht...
Ich dachte es sei mittlerweile klar, das ein Handle, wie es oben nochmals jemand ausdrücklich erwähnt hat, ein abstrakter "Überbegriff" ist, dessen Ausführung nicht festgelegt, und vom optimalen Lösungsweg abhängig ist?
krasstala schrieb:
Allgemein noch zu diesem Forum -> Foren sind nützlich und sinnvoll. Aber ich meine dass man niemals Beleidigend sein sollte. Ich ziehe es vor, sachlich und neutral zu sein. Jeder Mensch sieht die Dinge von an einem anderen Betrachtungswinkel aus.
Richtig. Nur ist es unnötig zu diskutieren, wenn man sich ausser Stande sieht, den Punkt des Kontrahenden nachzuvollziehen... nicht wahr? Es hilft nicht immer, wenn man das selbe Argument in anderen Worten wiederholt (o;
krasstala schrieb:
Frohes Fest und guten Rutsch an euch alle.
Danke gleichfalls :xmas1:
-
junix schrieb:
junix schrieb:
Ist lediglich eine abstraktere Sichtweise.
Denk darüber nach und über den Rest der hier gesagt wurde. Und tu dir selber nen Gefallen und meld dich erst wieder wenn dus auch verstanden hast.
Das kann ich so zurück geben. Ich vermische nicht Zeiger mit Handle. Das sind 2 vverschiedene Dinge, darüber solltest du vielleicht mal nachdenken.
Und nur weil in irgendwelchen Bibliotheken irgendwer seinen Datentyp Handle genannt hat, heißt das noch lange nicht, dass es auch eins ist.
-
Ist ne Hantel nicht so eine stange mit 2 gewichten an den enden?
-
Pellaeon: Jeder Zeiger ist ein Handle.
-
Eine Frage an dich: Wenn ich eine Arrayposition (also quasi den Primary-Key meines Arrays) als Handle bezeichnen würde. Wäre das dann in deinen Augen richtig?
-
junix schrieb:
Eine Frage an dich: Wenn ich eine Arrayposition (also quasi den Primary-Key meines Arrays) als Handle bezeichnen würde. Wäre das dann in deinen Augen richtig?
In meinen Augen nicht. Wenn ich den Key weis, kann ich zum Datenbanksystem sagen: "hey du, hol mir mal den Datensatz mit der ID ...", aber ich könnte nicht selber in der Datenbank direkt mir die Daten holen, ich brauche die Verwaltungszentrale, die das für mich erledigt.
Wenn ich den Index in einem Array habe, kann ich jedoch direkt zur Information springen.Für mich liegt halt dort die Trennlinie: Beim Zeiger habe ich direkten Zugriff. Beim Handle ist dieser verwehrt, ich brauche irgendeine Zentrale, der ich sage, was ich mit wem machen will: "hey, SQL-Server, tu mal bei der Person mit der ID 25 das Alter zu 55 ändern", ich kann aber halt nicht direkt reingehen und das selber machen.
Nuja ich glaube in den Thread hier kommen wir zu keiner 100% Übereinstimmung in unserer Meinung^^ Ist wohl wirklich auch mal wieder in Begriff, wo es verschiedene Ansichten gibt(zumindest im Detail)
kann wer die Spinnerposts löschen???
-
Pellaeon schrieb:
junix schrieb:
Eine Frage an dich: Wenn ich eine Arrayposition (also quasi den Primary-Key meines Arrays) als Handle bezeichnen würde. Wäre das dann in deinen Augen richtig?
In meinen Augen nicht. Wenn ich den Key weis, kann ich zum Datenbanksystem sagen: "hey du, hol mir mal den Datensatz mit der ID ...", aber ich könnte nicht selber in der Datenbank direkt mir die Daten holen, ich brauche die Verwaltungszentrale, die das für mich erledigt.
Wenn ich den Index in einem Array habe, kann ich jedoch direkt zur Information springen.Wieso? Ich habe ja nicht davon gesprochen, dass dir das Array zugänglich ist. Ich habe nur gesagt, ich gebe die ID.
Ich formuliere die Frage neu.
Wenn ich dir aus einer Library als Ergebnis einer Aktion einen ArrayIndex für ein Array das nur innerhalb der Library zugreifbar ist zurückgeben würde. Dann wäre das doch eigentlich auch gemäss deiner Definition ein handle oder? Schliesslich hast du dann ja keine Ahnung wo im Speicher das Array liegt; Geschweige denn was die Zahl die ich dir gebe genau bedeuten soll?
-
In diesem Fall: ja, wäre ein Handle für mich
-
Gut. Dann sind wir uns in dem Punkt ja einig.
Wenn ich jetzt von meinem Array sagen würde, ich als Library weiss, dass in den Arrayplätzen, die 1, 2 und 3 indexeinheiten höher liegen als die übergebene ID, jeweils noch zusatzinformationen zu dem Handle liegen, wäre das doch immernoch ein Handle, oder?
-
Pellaeon schrieb:
Nuja ich glaube in den Thread hier kommen wir zu keiner 100% Übereinstimmung in unserer Meinung^^ Ist wohl wirklich auch mal wieder in Begriff, wo es verschiedene Ansichten gibt(zumindest im Detail)
Wieso? Du bist der einzige der auf seine Unverständnis beharrt.
Pellaeon schrieb:
kann wer die Spinnerposts löschen???
Ja, bin ich auch dafür. Dann dürfte von deinen Falschaussagen nichts mehr übrig bleiben. Es ist sinnlos mit dir zu diskutieren. Du erinnerst mich an diesen Power-Off, mit dem Unterschied, dass dieser mehr Ahnung hat.
Der Begriff Handle ist nirgends stardardisiert.
Und hierauf hast du auch verzichtet eine Aussage zu machen:typedef struct _TREEITEM *HTREEITEM;
Und noch ein Tipp: lies mal Effektiv C++ Programmieren. Da ist in einem Kapitel ein Handle auch nichts anderes als ein Zeiger. Und wenn du meinst, dass Scott Meyer keiner Ahnung hat, disqualifizierst du dich als Diskussionspartner.