(...,ImageID...)

Anfängerfragen zum Programmieren mit PureBasic.
Kaeru Gaman
Beiträge: 17389
Registriert: 10.11.2004 03:22

Beitrag von Kaeru Gaman »

Kernproblem ist, dass der Begriff ID nicht eineindeutig verwendet wird in der Help.
dazu kommt, dass es noch eine dritte Klasse von IDs gibt, die PB-internen Handles.

der Befehl heißt ImageID(), liefert also eine ID zurück, somit kann das Argument keine ID sein. punkt.

also müsste die Nummer auch überall als Nummer bezeichnet werden.

eindeutig wäre, wenn das Handle auch immer als Handle bezeichnet wird.
das ist ja aber als Rückgabe von BlablaID eben nicht der Fall.

... was der Sinn des ganzen ist, erschließt sich nicht, ich vermute mal,
dass die Formulierung einfach eine alte überkommene ist und insofern
die Verwirrung historisch begründet.

ob es sinnvoll sein könnte, die ganzen Befehle BlablaID in BlablaHandle oder hBlabla umzubenennen, mag jeder für sich denken.
Der Narr denkt er sei ein weiser Mann.
Der Weise weiß, dass er ein Narr ist.
Benutzeravatar
PMV
Beiträge: 2765
Registriert: 29.08.2004 13:59
Wohnort: Baden-Württemberg

Beitrag von PMV »

Seit wann so engstirnig? Seit wann definiert der Prozedurname das, was
die Prozedur macht/ zurück gibt. Ich dachte immer, das kommt drauf an,
was in der Prozedur passiert.

Code: Alles auswählen

Macro MakeKaeruHappy()
  AergerKaeruBisZumMorgengrauen()
EndMacro
Na, was macht das Macro wohl? :mrgreen:
Ich würd ja sagen, dass es dich ärgert, aber da steht, es macht dich Glücklich ... *ausführ* 8)

Welch wundersame Technik, da fällt mir ein, was dir helfen könnte :lol:

Code: Alles auswählen

Macro GethWindow(PB_ID)
  WindowID(PB_ID)
EndMacro
PS:

Code: Alles auswählen

Procedure AergerKaeruBisZumMorgengrauen()
  BestellEineHuebscheFrau()
  LassHuebscheFrauRein()
  VerabschiedeDichVonKaeru()
  GeheSpazieren(EineStunde)
EndProcedure
MFG PMV
alte Projekte:
TSE, CWL, Chatsystem, GameMaker, AI-Game DLL, Fileparser, usw. -.-
Kaeru Gaman
Beiträge: 17389
Registriert: 10.11.2004 03:22

Beitrag von Kaeru Gaman »

oh ja, supi! lasst uns fortan den Funktionen Namen geben, die nichts mit ihrer Funktionalität zu tun haben. /:->

- "Ich war noch in der Stadt, was kaufen"
- "Konderbar!"
Karl Auer hat geschrieben:Tuuuuuut...!
Der Narr denkt er sei ein weiser Mann.
Der Weise weiß, dass er ein Narr ist.
Benutzeravatar
PMV
Beiträge: 2765
Registriert: 29.08.2004 13:59
Wohnort: Baden-Württemberg

Beitrag von PMV »

So ganz stimmt das eben nicht. Die von mir definierte Prozedur macht
genau das gegenteil von dem, wie sie heißt ... mit dem Macro hab ich das
behoben. Es hat also schon entfernt etwas mit dem zu tun, was sie
macht ... nur sehr sehr unglücklich gewählter Name :lol:

Die PB-Befehle geben ja eine ID zurück, die Systemweit dieses Objekt
identifiziert. Sie hat halt unter Windows einen entsprechenden Namen,
nämliche "Handle" ... PB dagegen verwendet für seine Objekt-
Nummerierung "Nummer" und "ID" ... unterscheidet in den
Befehlsreferenzen aber damit zwischen OS-ID und PB-ID, das bei den
PB-ID eben die Raute als Referenzzeichen für Nummer verwendet wird,
während bei den OS-IDs der entsprechend zu verwendende Befehlsname
niedergeschrieben ist.

MFG PMV
alte Projekte:
TSE, CWL, Chatsystem, GameMaker, AI-Game DLL, Fileparser, usw. -.-
Benutzeravatar
Thorium
Beiträge: 1722
Registriert: 12.06.2005 11:15
Wohnort: Germany
Kontaktdaten:

Beitrag von Thorium »

PMV hat geschrieben: Die PB-Befehle geben ja eine ID zurück, die Systemweit dieses Objekt
identifiziert. Sie hat halt unter Windows einen entsprechenden Namen,
nämliche "Handle" ... PB dagegen verwendet für seine Objekt-
Nummerierung "Nummer" und "ID" ... unterscheidet in den
Befehlsreferenzen aber damit zwischen OS-ID und PB-ID, das bei den
PB-ID eben die Raute als Referenzzeichen für Nummer verwendet wird,
während bei den OS-IDs der entsprechend zu verwendende Befehlsname
niedergeschrieben ist.
ID und Handle sind auch im OS nicht das gleiche. Und Handles müssen auch nicht zwangsläufig Systemweit einzigartig sein. Es gibt ettliche Handle, die nur auf den Prozess in dem sie geöffnet wurden gültig sind.

So ganz durchgeblickt hab ich da auch nie. Die Handles im OS scheinen Speicheradressen zu Objektstukturen zu sein. Wärend eine ID eher zur Identifikation dient als zum Zugriff. idProcess <> hProcess :wink:
Zu mir kommen behinderte Delphine um mit mir zu schwimmen.

Wir fordern mehr Aufmerksamkeit für umfallende Reissäcke! Bild
Benutzeravatar
PMV
Beiträge: 2765
Registriert: 29.08.2004 13:59
Wohnort: Baden-Württemberg

Beitrag von PMV »

Ja ... für mich identifiziert alles ein Objekt, mit dem man auf ein Objekt
zugreifen kann. Ob das irgend ein Index ist, eine zufällige eindeutige
Nummer, ein direkter Zeiger auf den Speicherbereich oder eine sonnstige
Referenz (Handle), mit der auf das Objekt zugegriffen werden kann ...
alles wird aus der sicht des "Nutzers" zum identifizieren verwendet
und muss lediglich einer Methode/ Prozedur übergeben werden. Wie diese
intern verwendet wird spielt somit keine rolle. Damit ist die Bezeichnung
auch letzten Endes irrelevant, Hauptsache die Hilfe ist ebenfalls eindeutig.
Das heißt es gibt dort keine verwechslung oder verschmelzung von
möglichen Bezeichnungen.

Die PB-Hilfe hat das ja wie schon gesagt mit der Raute gelöst. Und spricht
in jedem Parameter nur dann von einer "ID", wenn der entsprechende
Befehl benötigt wird, der laut Hilfe ein Handle zurück gibt. Unter jedem
dieser XxxID()-Befehle steht der selbe Hinweis samt einem direktlink zu
"Handles und Nummern". Doch dort wird plötzlich zwischen "ID" und Handle
unterschieden, was aber entgegen dem Kontext der restlichen Hilfe geht.
Es ist zwar nicht grundsätzlich Falsch, aber es führt zu verwirrung,
weshalb das Wort ID hier durch Nummer ersetzt werden sollte.

Was man als "ID" bezeichnet spielt also am Ende keine Rolle, es ist nur
wichtig, dass man bei dieser Bezeichnng bleibt, weil Falsch ist es nur wenn
man anfängt diese Bezeichnung sporadisch für alles Mögliche zu benutzen.

Um natürlich dann wiederrum auch keine verwirrung zu stifften muss sich
der "Benutzer" an die vorgegebenen Bezeichnungen halten. Das heißt PB
verwendet Nummer und die XxxID()-Befehle geben Handles zurück und
Windows verwendet Handles und IDs. :D

MFG PMV
alte Projekte:
TSE, CWL, Chatsystem, GameMaker, AI-Game DLL, Fileparser, usw. -.-
Antworten