ListView wlaściwość Data i dynamiczne tworzenie TClientSocke

0

Panie i Panowie mam problem:

Chciałbym sobie przy dodaniu nowego IP do ListView utworzyć od razu połączenie do niego typy TClientSocket. Coś na takiej zasadzie:

ListView.Items.Item[i].Data := TClientSocket.Create(Self);

Tu moje pytanie: Czy konstruktor Create zwraca wskaźnik do Obiektu TClientSocket ???
Bo wiem, że właściwość Data to Typ Pointer ale jak dodam @ przed TClientSocket, zeby uzyskać adres to wywala mi bledy przy kompilacji.

Myśle sobie ok. Pewnie Create zostawia wskaźik, wiec usuwam @ i sie kompiluje, jednak potem gdy program sie skompiluje i chce sie odwołać do obiektu Client:

TClientSocket(ListView.Items.Item[0].Data^).Active := False;

To sie wykrzacza, a jak usune czyli wyluskanie tego co sie znajduje pod adresem to do pewnego momentu dziala ? ale dlaczego przeciez Data to Pointer i musi być ???

0

a jak usune czyli wyluskanie tego co sie znajduje pod adresem to do pewnego momentu dziala ? ale dlaczego przeciez Data to Pointer i musi być ???

nie musi być. Jeśli podstawiasz referencję do obiektu to nie musisz wyłuskiwać.

A jeśli mogę coś zasugerować:

  1. Stwórz sobie dynamiczną tablicę array of TClientSocket
  2. Gdy dojdzie ci IP, utwórz TClientSocket w tablicy i dopisz mu co tam potrzebujesz (normalne odwołanie typu tablica[i].wlasciwosc := ...)
  3. Wypełniaj listView na podstawie tejże tablicy podstawiając pod właściwość data refernecję do elementu tablicy.

W kilku przypadkach mi taka konstrukcja hulała, więc i Tobie powinna.

1 użytkowników online, w tym zalogowanych: 0, gości: 1