Entwickler-Ecke
Internet / Netzwerk - Indy TCP und ListView
DelphiNoob - Mi 12.03.03 16:09
Titel: Indy TCP und ListView
Hi,
ich bin gerade an folgendem am arbeiten:
Ich habe 2 Programme. Client und Administration.
Wenn man sich beim Client einloggt wird per Indy TCP an die Administration ein Commando gesendet, darin sind 2 sachen enthalten:
- Username
- Commando
So erhält die administration z.b. den Commando "LOGIN", und er weiß "aha, da will sich jemand anmelden". Nun wird im Listview ein Icon erstellt worunter der Username angezeigt wird (dazu die beiden sachen die gesendet werden).
Nun habe ich da also ein Icon mit Username drunter. Nun hab ich das so gemacht, das sich beim rechtsklick auf das Symbol ein Popup menü öffnet. Darin sind z.b. enthalten:
- Sperren (Benutzer wird gesperrt)
- Ausloggen
- Programm(e) freischalten
usw.
Um nun z.b. die funktion sperren benutzen zu können benötige ich ja die IP des Users XY der sich hinter dem Symbol verbiergt. Ich kenne die Variante von SwissDelphiCenter, aber die ist mir mehr oder weniger zu kompliziert.
Was ich am liebsten machen würde ist ja:
Sobald sich jemand anmeldet wird seine IP im TAG des icon gespeichert. Nachteil an der Sache:
a.) ich weiß nicht wie und
b.) soweit ich weiß hat ein Icon kein TAG :(
Daher werd ich wohl anstatt einem Tag nen ARRAY nehmen. Aber nun zur IP... wie krieg ich die raus? Ich meine bei Sockets gabs mal RemoteAddress, nur von Indy hab ich nicht so viel ahnung.
Hoffe auf schnelle Hilfe!
Mfg
Delphi Noob
matze - Mi 12.03.03 19:07
also um die ganzen andren sachen zu speichern nimm doch die subitems eines items.
die IP bekommst du doch bei der connect funkion zurück oder ??
DelphiNoob - Mi 12.03.03 19:31
Danke für den Tipp...
Also benenne ich das Subitem mit der IP.
Z.b. 192.168.0.1
Nur wie frage ich das dann ab? Die IP ist doch immer anders, somit auch der Name.
Mfg
DelphiNoob
DelphiNoob - Mi 12.03.03 19:35
Ich seh übrigens gerade nicht was du meinst mit "beim Connect kriegt man die IP" zurück.
Der Client wird ja nur TCPClient.Connect(Timeout) gemacht, da seh ich nicht genau wo ich da die IP kriege.
Und beim Server geht beim Connect ja nur mein gesendetes Packet ein?!
DelphiNoob - Do 13.03.03 15:19
huhu? hilfe! bitte!
hitstec - Do 13.03.03 15:58
Zum Verknüpfen von Daten besitzt jedes TListItem ein Eigenschaft "Data". Die kannst du so gut wie mit jedem Datentyp verknüpfen.
Wenn ich wieder zuhause bin, dnn schicke ich dir ein Beispiel.
Die IP kannst du über das Socket abfragen (AThread.Connection.Socket.Binding.PeerIP oder so ähnlich) , oder du schickst die IP einfach mit dem Usernamen mit.
hitstec - Do 13.03.03 16:05
So wirds definiert:
Quelltext
1: 2: 3: 4: 5:
| type PString = ^String;
var piData: PString; |
So wirds erstellt:
Quelltext
1: 2: 3: 4: 5:
| listItem:=Liste.Items.Add; New(piData); piData^:=IpAdresse; listItem.Data:=Pointer(piData); listItem.Caption:=Benutzername; |
So wirds abgefragt:
Quelltext
1:
| IpAdresse:=PString(Liste.Selected.Data)^; |
DelphiNoob - Do 13.03.03 16:11
Danke, werds gleich ausprobieren
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!