Tablice a'la memo.lines

0

Mam sobie taki rekordzik:

type 
  test = record
    a: string;
    b: integer;
    socket: integer;
  end;

i taka tablice:

var tablica: array of test;

no i mam sobie ServerSocket, w którym po połączeniu się mam coś takiego (w OnclientConnect)

letLength(tablica,length(tablica)+1);
tablica[length(tablica)].socket:=socket.handle;

No i może teraz ktoś z was wie jak mam usunąć dane o tym użytkowniku(po odłączeniu się) tak, żeby był taki efekt jak po usunięciu środkowej lini w memo?

0

poszukaj w tej tablicy rekordu z pasujacym socket a potem go usun i wszystkie nastepne rekordy przenies w gore

0

Ale po kij sie tak meczyc z tablica ? Wykorzystaj liste a wtedy jaj zwolnisz jakis wezel to lista dalej zachowuje spojnosc i tyle. Sproboj moze wykorzystac TList to cala mechanika dodawania i odejmowania wezlow ci odejdzie.

powodzenia [cya]

0

do n_a_v_: Ze znalezieniem nie mam problemu, ale nie wiem jak usunąć :( A jak mam dużo połączeń to długo to będzie trwało :(

Pobawie się z TList i zobacze co sie da zrobić :) Dzięki

0

Ali88: Jeśli nie chcesz robić listy, to jest jeszcze jeden sposób (b. szybki), na usunięcie elementu tablicy, pod warunkiem, że nie zależy Ci na kolejności. po prostu przypisujesz wartość ostatniego elementu, do usuwanego, i zmniejszasz długość o 1, czyli:

procedure DeleteElement(var a:array of {co chcesz :]};idx:integer);
begin
 a[idx]:=a[High(a)];
 SetLength(a,Length(a)-1);
end;

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