Autor Beitrag
DelphiNoob
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 152

Win 2003 Server
D7 Ent
BeitragVerfasst: Mi 12.03.03 16:09 
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
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 4613
Erhaltene Danke: 24

XP home, prof
Delphi 2009 Prof,
BeitragVerfasst: 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 ??

_________________
In the beginning was the word.
And the word was content-type: text/plain.
DelphiNoob Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 152

Win 2003 Server
D7 Ent
BeitragVerfasst: 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 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 152

Win 2003 Server
D7 Ent
BeitragVerfasst: 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 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 152

Win 2003 Server
D7 Ent
BeitragVerfasst: Do 13.03.03 15:19 
huhu? hilfe! bitte!
hitstec
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 295



BeitragVerfasst: 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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 295



BeitragVerfasst: Do 13.03.03 16:05 
So wirds definiert:
ausblenden Quelltext
1:
2:
3:
4:
5:
type
  PString = ^String;

var
  piData: PString;


So wirds erstellt:
ausblenden Quelltext
1:
2:
3:
4:
5:
listItem:=Liste.Items.Add;
New(piData);
piData^:=IpAdresse;
listItem.Data:=Pointer(piData);
listItem.Caption:=Benutzername;


So wirds abgefragt:
ausblenden Quelltext
1:
IpAdresse:=PString(Liste.Selected.Data)^;					
DelphiNoob Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 152

Win 2003 Server
D7 Ent
BeitragVerfasst: Do 13.03.03 16:11 
Danke, werds gleich ausprobieren