Was ist ein handle in der Software
-
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.
-
Die Zahl die man rausgibt wäre immer noch ein Handle, klar. Die Daten in dem Array, wie auch immer die aussehen, sind dann das, wo man den "Griff" drauf haben möchte.
-
Dann sind wir uns hier ja auch einig.
Und was hindert mich jetzt daran, als Library, einfach die Startadresse eines Structs der die 4 bytes umfasst als "Handle" zurückzugeben?
-
junix schrieb:
Dann sind wir uns hier ja auch einig.
Und was hindert mich jetzt daran, als Library, einfach die Startadresse eines Structs der die 4 bytes umfasst als "Handle" zurückzugeben?
Hindern tut dich daran nix. Wenn du es so machst: dann ja, ok, dann wäre das Handle was man rausgibt gleichzeitig ein Zeiger.
Nur umgeht man damit das, wofür Handles doch eigentlich da sind: direkten Zugriff unterbinden. So gesehen ist das Handle-Konzept, zumindest was ich darunter verstehe, unterwandert(natürlich nur, wenn man auch weis, dass es in der Library ein Zeiger ist^^):xmas1: :xmas2:
not_another_kenner schrieb:
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.
Ich verharre nicht auf Unverständnis, sonder auf meiner Meinung. Die wird einem wohl noch erlaubt sein.
not_another_kenner schrieb:
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.
Geh woanders trollen.
Auf welche Post das bezogen war, dürfte jedem normaldenkenden klar sein. Ich denke nicht, dass junix meint, ich habe mich auf ihn bezogen. Extra für dich: ich meinte auch nicht junix, sondern Trollmopsnot_another_kenner schrieb:
Der Begriff Handle ist nirgends stardardisiert.
Hab weiter oben geschrieben, dass es zum Begriff u.U. verschiedene Auffassungen gibt.
not_another_kenner schrieb:
Und hierauf hast du auch verzichtet eine Aussage zu machen:
typedef struct _TREEITEM *HTREEITEM;
Hab weiter oben sinngenäß geschrieben, dass ein typdef, wo Handle im Namen vorkommt, noch lange kein Handle drauß macht.
not_another_kenner schrieb:
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.
Hab ich gelesen. Da gibts kein Kapitel zu Handles.
Dagegen ist z.B. in "Gems I" eins über dieses Thema, dass solltest du vielleicht mal lesen.
-
Pellaeon schrieb:
junix schrieb:
Dann sind wir uns hier ja auch einig.
Und was hindert mich jetzt daran, als Library, einfach die Startadresse eines Structs der die 4 bytes umfasst als "Handle" zurückzugeben?Hindern tut dich daran nix. Wenn du es so machst: dann ja, ok, dann wäre das Handle was man rausgibt gleichzeitig ein Zeiger.
Nur umgeht man damit das, wofür Handles doch eigentlich da sind: direkten Zugriff unterbinden. So gesehen ist das Handle-Konzept, zumindest was ich darunter verstehe, unterwandert(natürlich nur, wenn man auch weis, dass es in der Library ein Zeiger ist^^):xmas1: :xmas2:
Wieso? Ich muss es ja nicht nach aussen bekannt machen, was da alles steht... Insofern ist Information-Hiding nach wie vor gewährleistet.
Ich wollte aber eigentlich auf was anderes raus:
Wenn ich jetzt nämlch das Array "RAM" nenne, die Bibliothek "Speicherverwaltung des Betriebssystems" und das Handle "Zeiger", hätte ich exakt die oben erwähnte Situation, wo ein Zeiger auch nichts weiter als ein Handle, bzw. die Adresse nichts weiter als der Primärschlüssel ist.
-
Pellaeon schrieb:
Geh woanders trollen.
Auf welche Post das bezogen war, dürfte jedem normaldenkenden klar sein. Ich denke nicht, dass junix meint, ich habe mich auf ihn bezogen. Extra für dich: ich meinte auch nicht junix, sondern TrollmopsMir egal auf wen du dich beziehst. Deine Posts haben für mich auch etwas Spinnerhaftes, deshalb meine Aussage.
Pellaeon schrieb:
Hab weiter oben geschrieben, dass es zum Begriff u.U. verschiedene Auffassungen gibt.
Eben. Liegt vielleicht daran, dass es ein abstrakter Begriff ist. Du weisst was abstrakt bedeutet?
Pellaeon schrieb:
Hab weiter oben sinngenäß geschrieben, dass ein typdef, wo Handle im Namen vorkommt, noch lange kein Handle drauß macht.
Bestimmst du das? Welche Gültigkeit hat deine Aussage für einen abstrakten Begriff? Vielleicht solltest du auf Wikipedia doch mal das Wort abstrakt nachschlagen. Aber vielleicht findest du, dass der Artikel nicht gut ist, wie der Artikel zum Thema Handle und stellst deine eigene Definition des Wortes abstrakt auf.
Vielleicht liest du dir nochmal auf Seite 2 dieses Threads das Posting von "yet_another_kenner" durch.
Pellaeon schrieb:
Hab ich gelesen. Da gibts kein Kapitel zu Handles.
Ja gelesen, aber wahrscheinlich nur die Hälfte:
Scott Meyers schrieb:
Kapitel 5.3: Tipp 28 Geben Sie keine "Handles" für interne Daten eines Objektes zurück
Oder schau einfach mal in das Inhaltsverzeichnis