Как заполнить нулями все данные определенного индекса в статическом массиве структуры данных? - PullRequest
3 голосов
/ 02 мая 2019

У меня есть структура ниже и Pointer для этой же структуры. После этого у меня есть статический массив, array[0 .. 255] of Client. Основанный на этом следующем полном коде, как я могу заполнить определенный «клиент» (элемент) нулями, когда «клиент» (элемент) «разъединяет» или «освободить пространство» новому «клиенту» (элементу), не потеряв этот фиксированный размер массива (Clients)? Посмотрите мою попытку, но я не знаю, верна ли эта идея, я верю, что нет, потому что IDE говорит, что это невозможно, назначьте массив Integer (0) на Clients.

Моя попытка была основана на этом комментарии , где вопрос связан со статическими массивами.

type
  PClient = ^Client;

  Client = record
    Connections: array [0 .. 1] of TSocket;
    uhId: DWORD;
    _hWnd: HWND;
    Pixels: PByte;
    pixelsWidth, pixelsHeight: DWORD;
    screenWidth, screenHeight: DWORD;
    hDcBmp: HDC;
    minEvent: THandle;
    fullScreen: BOOL;
    windowRect: TRect;
  end;

 var
  Clients: array [0 .. 255] of Client;

//...

function GetClient(Data: Pointer; uhId: Boolean): PClient;
var
  I: Integer;
begin
  Result := nil;
  for I := 0 to 255 do
  begin
    if uhId then
    begin
      if Clients[I].uhId = DWORD(Data) then
      begin
        Result := @Clients[I];
        Break;
      end;
    end
    else
    begin
      if Clients[I]._hWnd = HWND(Data) then
      begin
        Result := @Clients[I];
        Break;
      end;
    end;
  end;
end;

procedure removeClient;
var
  _client: PClient;
  _uhId: DWORD;
  I: Integer;
begin
  _uhId := 123456;
  _client := GetClient(Pointer(_uhId), True);

  { to add a item i do }

  for I := 0 to 255 do
  begin
    if Clients[I].uhId = 0 then
    begin
      _client := @Clients[I];
    end;
  end;

  { my attempt to fill with 0 (zero) a determinated element and yours propeties }

  for I := 0 to 255 do
  begin
    if Clients[I].uhId <> 0 then
    begin
      Clients[I] := 0; // << Error of "incompatible types"
      _client := @Clients[I];
    end;
  end;
end;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...