AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Programmieren allgemein Vergabe von ID's und deren Auswirkung
Thema durchsuchen
Ansicht
Themen-Optionen

Vergabe von ID's und deren Auswirkung

Ein Thema von EWeiss · begonnen am 20. Mai 2011 · letzter Beitrag vom 22. Mai 2011
Antwort Antwort
Seite 1 von 3  1 23      
EWeiss
(Gast)

n/a Beiträge
 
#1

Vergabe von ID's und deren Auswirkung

  Alt 20. Mai 2011, 14:51
Letztens ein seltsames Phänomen
Ich vergebe meine Id's spontan und in verbindung stehend mit der Funktion für die Sie gedacht ist.
So wie diese hier.

Delphi-Quellcode:
  ID_LABEL_INTRO = 100; // Informations Label
  ID_AEROBUTTON = 101; // Aero Button
  ID_FLIPNOTES = 102; // Noten Umdrehen
  ID_DRUM = 103; // Drum Liste
  ID_INSTRUMENT = 104; // Instrumenten Liste
  ID_VL = 105; // VL Liste
  ID_EFFECTS = 106; // Effects Liste
  ID_LABEL_GENRE = 107; // Informations Label
  ID_GLASS_OPACITY_LABEL = 108; // Informations Label
  ID_TRACK_OPACITY = 109; // Trackbar Transparent
  ID_AEROCRYSTAL = 110; // Aero Check Button
  ID_AEROBLUR = 111; // Aero Blur Button
  ID_LINEVERT = 112; // Einfache Linie
  ID_AERODISABLE = 113; // Global Aero Disable
  ID_TRACK_BLURLEVEL = 114; // Trackbar BlurLevel
  ID_VERSION = 115; // Versions Info
  ID_BTN_ABOUT = 116; // About Button
Letzten's lasse ich ein Lied laufen und muss feststellen das plötzlich einer meiner
Button anfängt zu blinken jetzt war ich sehr verwundert denn das passierte nur wenn das spezielle aufgerufen wurde.
Bekam schon wieder die Krise da ich einfach nicht lokalisieren konnte woran das liegen könnte.

Nach einiger Überlegung kam ich zu dem Schluss das es unter Umständen mit meiner vergabe der ID's zu tun haben
könnte alles durchsucht ob vielleicht doppelte Einträge vorhanden waren. Na ja nix.
Dann bin ich hingegangen und habe einfach mal alle ID's um ein 1000 faches höher gesetzt.
Und siehe da plötzlich war das problem beseitigt.
Kein Blinken mehr.

Wie laßt ihr euch leiten bei der vergabe der ID's habe immer wieder ein.. zwei kleine Probleme hier.
Noch ein Beispiel..

Erster Eintrag.
Delphi-Quellcode:
PROP_IMAGE_BACK = 1;
SkinEngine.SetImageProperty(FHPanel, PROP_IMAGE_BACK, Img);
Delphi-Quellcode:
GRID_IMAGE = 1;
SKAERO_SetImageProperty(FHGrid, GRID_IMAGE, Img);
Wohl bemerkt die zweite ist nicht global ausgelegt.
Und Funktioniert nicht.Kein Object wird gezeichnet.

Das hingegen funktioniert einwandfrei
Delphi-Quellcode:
PROP_IMAGE_BACK = 1;
GRID_IMAGE = PROP_IMAGE_BACK;
Also ehrlich das ist schon sehr konfus das ganze.
Die übergabe von ID's macht das Programm meines erachtens extrem anfällig für Fehler
vor allem dann wenn man sie wie in dem Beispiel oben nicht identifizieren kann.

Wer garantiert das nicht just in dem Moment meine Message mit denen der WindowsAPI kollidieren?

Meine Frage nochmal wie Handhabt ihr das mit der vergabe von ID's und wo steht man auf
der sicheren Seite?

gruss

Geändert von EWeiss (20. Mai 2011 um 15:07 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von jfheins
jfheins

Registriert seit: 10. Jun 2004
Ort: Garching (TUM)
4.579 Beiträge
 
#2

AW: Vergabe von ID's und deren Auswirkung

  Alt 20. Mai 2011, 15:00
Welche ID's?
Windows Message.ID's? Dann guck dir mal WM_USER an.
  Mit Zitat antworten Zitat
EWeiss
(Gast)

n/a Beiträge
 
#3

AW: Vergabe von ID's und deren Auswirkung

  Alt 20. Mai 2011, 15:02
Welche ID's?
Windows Message.ID's? Dann guck dir mal WM_USER an.
Du verstehst schon auf was ich hinaus will oder?
Besonders den Sinn hinter meiner Frage.

gruss
  Mit Zitat antworten Zitat
Benutzerbild von Phoenix
Phoenix
(Moderator)

Registriert seit: 25. Jun 2002
Ort: Hausach
7.610 Beiträge
 
#4

AW: Vergabe von ID's und deren Auswirkung

  Alt 20. Mai 2011, 15:10
Du verstehst schon die Antwort? Besonders den Sinn hinter dem Hinweis auf WM_USER?
Sebastian Gingter
Phoenix - 不死鳥, Microsoft MVP, Rettungshundeführer
Über mich: Sebastian Gingter @ Thinktecture Mein Blog: https://gingter.org
  Mit Zitat antworten Zitat
Benutzerbild von s.h.a.r.k
s.h.a.r.k

Registriert seit: 26. Mai 2004
3.159 Beiträge
 
#5

AW: Vergabe von ID's und deren Auswirkung

  Alt 20. Mai 2011, 15:12
Deine IDs definieren ja Messages oder? Wenn ja, dann sollten diese tunlichst überhalb von der Konstante WM_USER angesiedelt werden, da es eben sonst zu Kollisionen kommt. Macht das halt so:
Delphi-Quellcode:
  ID_LABEL_INTRO = WM_USER + 100; // Informations Label
  ID_AEROBUTTON = WM_USER + 101; // Aero Button
  ID_FLIPNOTES = WM_USER + 102; // Noten Umdrehen
  ID_DRUM = WM_USER + 103; // Drum Liste
Alles was kleiner als WM_USER ist, gehört einfach Windows
»Remember, the future maintainer is the person you should be writing code for, not the compiler.« (Nick Hodges)
  Mit Zitat antworten Zitat
Benutzerbild von jfheins
jfheins

Registriert seit: 10. Jun 2004
Ort: Garching (TUM)
4.579 Beiträge
 
#6

AW: Vergabe von ID's und deren Auswirkung

  Alt 20. Mai 2011, 15:18
Du verstehst schon auf was ich hinaus will oder?
Besonders den Sinn hinter meiner Frage.

gruss
Nein, ich habe keine Ahnung, welche ID's du da hast und wofür du die brauchst. Und erst recht nicht warum auf einmal irgendwelche Buttons blinken. Deshalb habe ich ja auch nachgefragt.

Aber gut, ich will natürlich gerne auf deine Frage antworten:
Zitat:
Meine Frage nochmal wie Handhabt ihr das mit der vergabe von ID's und wo steht man auf
der sicheren Seite?
Ich lasse meine ID's meistens automatisch vergeben. Dazu lege ich grundsätzlich in jeder MySQL Tabelle als erstes eine Spalte "id" mit einem Integertypen an. Diese wird dann auf auto_increment gesetzt, sodass beim Einfügen neuer Datensätze automatisch eine neue ID generiert wird.
Kollisionen hatte ich bisher keine, das mit dem incrementieren funktioniert zuverlässig.

Aus den blinkenden Buttons habe ich aber geschlossen, dass es sich um Windows Message ID's handeln könnte. Und in diesem Fall ist der Hinweis auf WM_USER ernstzunehmen
  Mit Zitat antworten Zitat
Benutzerbild von Union
Union

Registriert seit: 18. Mär 2004
Ort: Luxembourg
3.487 Beiträge
 
Delphi 7 Enterprise
 
#7

AW: Vergabe von ID's und deren Auswirkung

  Alt 20. Mai 2011, 15:25
MSDN-Library durchsuchenWM_USER

Range Meaning
0 through WM_USER–1 Messages reserved for use by the system. [/MSDN]
Ibi fas ubi proxima merces
sudo /Developer/Library/uninstall-devtools --mode=all
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#8

AW: Vergabe von ID's und deren Auswirkung

  Alt 20. Mai 2011, 15:30
Es geht hier wohl nicht um die IDs von Datensätzen, sondern von die IDs von Windowssteuerlementen. Ich denke, der Hinweis mit WM_USER dürfte hier nicht zutreffend sein, da mit den IDs Steuerelemente benannt werden und keine Nachrichten. Warum dieses Steuerelement jetzt aber "geblinkt" hat, kann ich mir aber auch nicht so recht erklären und wenn dann nur mit einer ziemlich schrägen Erklärung und so schräg kann man eigentlich gar nicht programmieren, so dass für mich diese Erklärung eigentlich ausscheidet.

Ich persönlich fange eigentlich bei hundert an zu zählen. Und wenn ich mehrere toplevel Fenster habe, dann bekommt das Hauptfenster die ID 100 und die Steuerelemente auf diesem die IDs 101 bis 199. Das zweite Fenster bekommt die ID 200 und die Steuerelemente auf diesem die IDs 201 bis 299 und so weiter.
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
Benutzerbild von Union
Union

Registriert seit: 18. Mär 2004
Ort: Luxembourg
3.487 Beiträge
 
Delphi 7 Enterprise
 
#9

AW: Vergabe von ID's und deren Auswirkung

  Alt 20. Mai 2011, 15:34
Vielleicht werden diese IDs ja auch irgendwo in seinem Eventhandler-Code abgefragt. Und dort kann dann sehr wohl was schieflaufen.
Ibi fas ubi proxima merces
sudo /Developer/Library/uninstall-devtools --mode=all
  Mit Zitat antworten Zitat
EWeiss
(Gast)

n/a Beiträge
 
#10

AW: Vergabe von ID's und deren Auswirkung

  Alt 20. Mai 2011, 15:34
MSDN-Library durchsuchenWM_USER

Range Meaning
0 through WM_USER–1 Messages reserved for use by the system. [/MSDN]
Das ist mir schon klar.
Wer garantiert dir aber das die Messagen übrigends WM_USER ist FALSCH
dann nicht doch mit anderen kollidieren.

Das ist wenn ihr es schon so genau nehmt Korrekt!
Ein vielfaches von ...
WM_USER and WM_APP

gruss
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 3  1 23      


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 17:13 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