Entwickler-Ecke
Delphi Language (Object-Pascal) / CLX - Eigenen Typ definieren ?
mambo - Do 18.03.04 10:05
Titel: Eigenen Typ definieren ?
Hallo !
Ich bin dabei, ein kleines Chat-Programm zu schreiben und da möchte ich zur Anzeige der eingeloggten User folgenden Typ definieren
TUsers[Index]
mit den Eigenschaften
Nickname: String;
und
RemoteAddress: String;
Aber wie ist die Syntax dazu ?
Ich möchte im Programm dann wie folgt vorgehen:
im öffentlichen Deklarationsbereich
OnFormCreate:
Delphi-Quelltext
1:
| Users := TUsers.Create; |
Wenn sich ein Benutzer anmeldet:
Delphi-Quelltext
1: 2: 3: 4: 5:
| With Users.Add do begin Nickname := xyz; RemoteAddress := xyz; end; |
und dann im Quelltext auf den jeweiligen User zugreifen mit z.B.:
Delphi-Quelltext
1:
| Edit1.Text := Users[10].Nickname; |
Oder hat jemand dafür eine bessere Idee ?
Danke für Eure Hilfe !
Heinz
Moderiert von
Motzi: Code- durch Delphi-Tags ersetzt.
maximus - Do 18.03.04 11:12
Hi.
Ich würde dir eine Collection empfehlen:
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9:
| type TUser = class(TCollectionItem) ... published property Nickname: String; property RemoteAddress: String; end;
TUsers = class(TCollection); |
Du müsstest dann allerdings ein bisschen casten :wink: ...aber das ist normal!
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9:
| Users := TUsers.Create(TUser); ... With TUser(Users.Add) do begin Nickname := xyz; RemoteAddress := xyz; end; ... Edit1.Text := TUser(Users[10]).Nickname; |
so in etwa würde es gehen. Wenn du den spass auch noch auf platte speichern willst, dann könntest du meine erweiterte collection-klasse verwenden:
http://www.delphi-forum.de/viewtopic.php?t=18605
mfg.
mambo - Do 18.03.04 12:04
Das funktioniert bei mir nicht !!!! Fehlermeldung: Anweisung INDEX, READ oder WRITE erwartet !
Delphi-Quelltext
1: 2: 3: 4: 5:
| type TUser = class(TCollectionItem) published property Nickname: String; end; |
Was mache ich falsch ? muß man da nicht so eine Art "read" und "write" Prozedur für Properties schreiben und Private-Variablen (z.B. fNickname) des Typs deklarieren ?
Tut mir leid, habe mit eigenen Typen noch nie gearbeitet.
Kann mir das jemand mal für "Dummies" erklären ?
Danke
Heinz
Moderiert von
Motzi: Code- durch Delphi-Tags ersetzt.
maximus - Do 18.03.04 22:43
| mambo hat folgendes geschrieben: |
Kann mir das jemand mal für "Dummies" erklären ?
|
Äh ja! Kann ich :wink:
Du hast recht bei den properties fehlen die getter und setter dinger. Musst du halt einfach hinschreiben, so wie man das macht beim programmieren *g* ...oder aber für leute mit professional versionen: Zur besagten deklaration gehen und
ctrl+shift+c drücken! Die fehlenden elemente der klasse sollten dann automatisch erstellt werden.
mfg.
mambo - Fr 19.03.04 09:02
...ok, war auch ne blöde Frage... mit etwas probieren hab ich's jetzt hingekriegt...
...ohne Deine Hilfe hätt ich's aber glaub ich nicht geschafft... man brauch halt manchmal einen kleinen Denkanstoß...
Also mein nun FUNKTIONIERENDER Code:
Deklaration
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10:
| TUsers = class(TCollection); TUser = class(TCollectionItem) private FNickname: String; FRemoteAddress: String; published property Nickname: String read FNickname write FNickname; property RemoteAddress: String read FRemoteAddress write FRemoteAddress; end; |
Typ erstellen:
Delphi-Quelltext
1:
| Users := TUsers.Create(TUser); |
User zur Liste hinzufügen:
Delphi-Quelltext
1: 2: 3: 4: 5:
| With TUser(Users.Add) do begin Nickname := strNickname; RemoteAddress := strRemoteAddress; end; |
maximus - Fr 19.03.04 11:26
Genau...probieren geht über studieren 8)
Könntest auch Set-methoden verwenden, zB. für die IP, dann kannst du noch prüfen ob sie korrekt eingegeben wurde etc.
mfg.
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2026 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!