Sự khác biệt giữa @H và @H [0]


8

Tôi có

 var H: array of THandle;

sau đó trong một vòng lặp tôi tạo ra nhiều luồng và gán tay cầm luồng cho các phần tử của H, rồi đợi chúng. Truyền @H [0] làm tham số thứ 2 cho WFMO bên dưới hoạt động.

WaitForMultipleObjects(Length(H), @H[0], True, INFINITE) <-- Works

Nhưng vượt qua @H như bên dưới Thất bại với WAIT_FAILED. GetLastError trả về "Xử lý không hợp lệ".

WaitForMultipleObjects(Length(H), @H, True, INFINITE)  <--- Fails.

Tại sao @H khác với @H [0]?

Câu trả lời:


8
  1. Bởi vì nó là một mảng động, Hđã là một con trỏ và nó trỏ đến phần tử đầu tiên, vì vậy
  2. @H[0] giống như H - con trỏ tới phần tử đầu tiên
  3. và bây giờ @Hlà bằng @@H[0]- con trỏ đến con trỏ đến phần tử đầu tiên.

Cảm ơn bạn. Vì vậy, nếu H được khai báo là H: array[0..10] of THandle@H và @H [0] sẽ giống nhau, tôi cho rằng. Tôi có thể kiểm tra nó
Nani

@Nani Có, nếu Hlà một mảng tĩnh , hơn bạn cần lấy địa chỉ của nó thông qua @toán tử và sau đó @Hbằng @H[0].
zed

Bạn có thể sử dụng POINTER (H) để lấy một con trỏ tới phần tử đầu tiên của mảng động.
HeartWare
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.