Toni wrote:
>> Ist die Reihenfolge im Array wichtig?
>
> Ja, die sollte schon so ein wie die Daten auch reingekommen sind.
Dann wirst du nicht umhin kommen, im Array die 'Löcher' zu stopfen
wenn eine neue ID dazukommt. Also alle dahinterliegenden Ids
nach vorne zu verschieben.
>
> Nun sollen sich mehrere Geräte beim ersten mal mit der Standard_ID
> angemeldet werden, und später über ihre bestimmte ID, welche vom
> Steuerpult im Array gespeichert wird, erreichbar sein. Mit dem
> Steuerpult kann ich dann durch die verschiedenen "bekannten" ID's
> wechseln, oder über die Standard_IP weitere Geräte hinzufügen. Eine
> gewisse Reihefolge sollte dabei schon gegeben sein.
Dazu brauchst du aber keine bestimmte Reihenfolge im Array.
Du musst nur dafür sorgen, dass dieselbe Id nicht ein 2-tes
mal vergeben wird. In welcher Reihenfolge diese Id im Array
stehen ist doch Jacke wie Hose.
> So, dass ist es was ich vorhabe. Wollte mal hören ob ich mit dem Ansatz
> dass hinbekommen könnte, oder ob einer ne bessere Idee hat.
Wenn du nicht auf eine dynamische Datenstruktur (Liste)
ausweichen willst, ist das so ok. Das heist die Frage lautet
eigentlich: Kannst du damit leben, dass eine gewisse maximale
Anzahl an Geräten möglich ist, die fix vorgegeben ist, oder
möchtest du das vermeiden.
Im ersten Fall ist ein Array mit einer 'Array-Index nicht vergeben'
Kennung keine schlechte wahl. Im zweiten Fall müsste man auf
etwas dynamisches (dynamisch allokiertes Array, Liste, ...)
ausweichen.
Ob die Reihenfolge im Array wirklich die Reihenfolge der Anmeldung
wiederspiegeln soll, würde ich mir noch gut überlegen. Wenn
es keinen triftigen Grund dafür gibt, lass diese Anforderung
fallen (OK. Bei 20 Einträgen spielt ein bischen Array Umsortieren
noch keine grosse Rolle).
Bsp. Es haben sich 7 Stationen angemeldet
und zwar in der Reihenfolge: 5, 8, 2, 1, 10, 12, 3
Dein Array sieht dann so aus
+---+---+---+---+---+---+---+---+---+
| 5 | 8 | 2 | 1 | 10| 12| 3 | | |
+---+---+---+---+---+---+---+---+---+
meldet sich nun Station 2 ab, dann muss das Array nach
der Abmeldung so aussehen:
+---+---+---+---+---+---+---+---+---+
| 5 | 8 | 1 | 10| 12| 3 | | | |
+---+---+---+---+---+---+---+---+---+
* Es sind nur noch 6 angemeldete Stationen
* Die Stationen 1, 10, 12, 3 wurden im Array um jeweils
eine Stelle nach vorne kopiert, damit die Lücke, die durch
den Ausfall von 2 entstanden ist, geschlossen wird.
Dafür hast du aber den Vorteil, dass du bei einer Neuanmeldung
nicht lange suchen brauchst. Du weist (in einer extra Variablen),
dass 6 Stationen im Array sind, ergo muss eine Neuanmeldung
an Arrayposition 6 kommen:
4 meldet sich an
+---+---+---+---+---+---+---+---+---+
| 5 | 8 | 1 | 10| 12| 3 | 4 | | |
+---+---+---+---+---+---+---+---+---+