Direktes Ansprechen von Elementen in Types

Übersicht BlitzBasic Allgemein

Neue Antwort erstellen

preachie

Betreff: Direktes Ansprechen von Elementen in Types

BeitragDo, Jan 12, 2006 0:56
Antworten mit Zitat
Benutzer-Profile anzeigen
Hallo zusammen.

ich habe mal eine Frage bezüglich des direkten Ansprechens eines Array-Elements.

Gibt es eine Möglichkeit, ein bestimmtes Element aus einer Type-Liste anzuwählen, oder muss ich immer die gesamte Liste mit For ... Each ... Next durchgehen und den richtigen Eintrag raussuchen?

Kleines Beispiel:

Sagen wir mal, ich habe ein Type für ein Server/Client Chat-System:

Code: [AUSKLAPPEN]
Type chatter
   Field ID
   Field name$
   Field IP
End Type


Wenn sich nun ein Chatter am Server anmeldet, wird auf dem Server ein neuer chatter 'instanziert'

Code: [AUSKLAPPEN]
activechatter.chatter = New chatter
activechatter\ID = [generierte ID]
activechatter\name$ = [übertragene Username]
activechatter\IP = [ermittelte IP-Adresse]


Die ID wird dem neuen Chatter zurück übermittelt und in Zukunft wird er bei allen Nachrichten, diese ID mitgeben (ist im Grunde genommen überflüssig, man könnte genausogut den Namen oder die IP verwenden).

Wenn sich dieser Chatter nun abmeldet, soll natürlich auf dem Server auch der Eintrag aus der activechatter Liste entfernt werden. Derzeit erledige ich das in etwa so:

Code: [AUSKLAPPEN]
For activechatter.chatter = Each chatter
   If activechatter\ID = [gesuchte ID Then]
      Delete activechatter.chatter
   End If
Next


Das funktioniert soweit auch alles ohne Probleme, doch frage ich mich, ob es wirklich sein muss, dass ich jedes Mal die gesamte Liste durchlaufen muss, um den gewünschten Eintrag zu finden.

Ich habe schon dran gedacht evtl. mit Dim zu arbeiten (sowas wie activechatter(ID).chatter), doch das Problem das ich dabei sehe ist, dass die Größe vom Dim nicht dynamisch geändert werden kann. Also müsste ich im Vorfeld ein überdurchschnittlich großes Dim Feld anlegen, bei dem ich in den meisten Fällen vermutlich Speicher unnötig verbraten würde und im dümmsten Fall mir ne Memory Access Violation einhandeln, wenn es doch mal einer mehr werden sollte. Oder gibt es da doch noch einen Trick, wie man Dim Felder auch zur Laufzeit vergrößern/verkleinern kann?

Hat irgendwer einen Tipp für mich, wie man diese Anforderung am elegantesten lösen kann? Schonmal vielen Dank im voraus und ich hoffe, dass ich mich verständlich ausdrücken konnte Wink Wenn nicht, fragt einfach nach, dann werde ich versuchen, das Problem noch genauer zu beschreiben.

Vielen Dank und schönen Gruß
Preachie
 

lettorTrepuS

BeitragDo, Jan 12, 2006 1:16
Antworten mit Zitat
Benutzer-Profile anzeigen
-aus Sicherheitsgründen gelöscht- Diese Information ist mit Ihrer Sicherheitsfreigabe leider nicht erhältlich, Bürger.

Klip

BeitragDo, Jan 12, 2006 1:25
Antworten mit Zitat
Benutzer-Profile anzeigen
Ich suche auch schon länger nach einer Möglichkeit, so etwas zu tun.

ST, ich nehme an, du meinst zum Beispiel eine solche Stelle aus den Codes?

Code: [AUSKLAPPEN]
Function xmlNodeLevel(Node)
   this.xmlNode = Object.xmlNode(Node)
   Return this\Level
End Function


Sieht verständlich aus. An dieser Stelle ein Dankeschön, bin bisher auch jedes Mal alle Listen durchgegangen.
 

lettorTrepuS

BeitragDo, Jan 12, 2006 3:32
Antworten mit Zitat
Benutzer-Profile anzeigen
-aus Sicherheitsgründen gelöscht- Diese Information ist mit Ihrer Sicherheitsfreigabe leider nicht erhältlich, Bürger.

preachie

BeitragDo, Jan 12, 2006 17:47
Antworten mit Zitat
Benutzer-Profile anzeigen
Hallo,

vielen Dank ShadowTurtle für Deine Antwort. Ich muss zugeben, dass ich mich mit verketteten Listen noch nicht so vertraut gemacht habe (waren mir bei C schon immer ein Graus Wink)

In der Zwischenzeit habe ich noch eine andere Möglichkeit gefunden, wie ich mein 'Problem' anders lösen kann.

Ich sende jedem neuen Chatter das Handle vom Chatter Type zu, welches dieser dann in Zukunft bei allen Sends mitschickt. Wenn er sich nun abmeldet kann ich ihn mit

Code: [AUSKLAPPEN]
Delete Object.chatter([Handle])


herauslöschen.

Trotzdem vielen Dank, dass Du mir aufgezeigt hast, welche Möglichkeiten mit verketteten Listen besteht. Dies zeigt mir, dass ich mich wohl oder übel, damit auch mal tiefer auseinander setzen muss Wink

Gruß
Preachie

Klip

BeitragDo, Jan 12, 2006 18:00
Antworten mit Zitat
Benutzer-Profile anzeigen
ShadowTurtle hat Folgendes geschrieben:
Wenn du dir das gegebene Material nicht zu genügend anschaust, dann ist es wohl kaum mein Problem.


Richtig, darum danke ich umso mehr für Hilfe.

Dachte, ich hatte die Stelle gefunden, sah logisch aus. Nun ja, dann werde ich mir die Codes noch einmal ansehen.

Neue Antwort erstellen


Übersicht BlitzBasic Allgemein

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group