Sử dụng chung tài nguyên của các chương trình MQL khác nhau
Tên tài nguyên là duy nhất trong toàn bộ terminal. Sau này, chúng ta sẽ tìm hiểu cách tạo tài nguyên không phải ở giai đoạn biên dịch (bằng chỉ thị #resource
) mà theo cách động, sử dụng hàm ResourceCreate
. Trong bất kỳ trường hợp nào, tài nguyên được khai báo trong bối cảnh của chương trình tạo ra nó, do đó tính duy nhất của tên đầy đủ được đảm bảo tự động bằng cách liên kết với hệ thống tệp (đường dẫn và tên của tệp cụ thể ex5
).
Ngoài việc chứa và sử dụng tài nguyên, một chương trình MQL cũng có thể truy cập tài nguyên của một chương trình đã biên dịch khác (tệp ex5). Điều này có thể thực hiện được với điều kiện chương trình sử dụng tài nguyên biết đường dẫn vị trí và tên của chương trình khác chứa tài nguyên cần thiết, cũng như tên của tài nguyên đó.
Do đó, terminal cung cấp một thuộc tính quan trọng của tài nguyên, đó là sử dụng chung: tài nguyên từ một tệp ex5 có thể được sử dụng trong nhiều chương trình khác.
Để sử dụng tài nguyên từ một tệp ex5 bên thứ ba, nó phải được chỉ định dưới dạng "path_file_name.ex5::resource_name". Ví dụ, giả sử script DrawingScript.mq5
tham chiếu đến một tài nguyên hình ảnh được chỉ định trong tệp triangle.bmp
:
<div style="text-align: left; text-indent: 0; line-height: 1.0; page-break-inside: avoid; page-break-after: avoid; border-color: #d8dfea; border-style: solid; border-width: thin; background: #fbf9f5; padding: 0 0 0 0; margin: 2px 17px 2px 17px;">
<table class="help" cellpadding="3" style="border:none; border-spacing:0;">
<tbody><tr>
<td style="vertical-align:top; padding:3px; border:none"><p class="p_CodeExample" style="page-break-inside: avoid; page-break-after: avoid;"><span class="f_CodeExample" style="color: #0000ff;">#resource</span><span class="f_CodeExample"> </span><span class="f_CodeExample" style="color: #008080;">"\\Files\\triangle.bmp"</span></p>
</td>
</tr>
</tbody></table>
</div>
2
3
4
5
6
7
8
Khi đó tên của nó để sử dụng trong script thực tế sẽ trông như "::Files\triangle.bmp".
Để sử dụng cùng tài nguyên đó từ một chương trình khác, ví dụ như một Expert Advisor, tên tài nguyên cần được đặt trước bởi đường dẫn của tệp script ex5 tương đối với thư mục MQL5 trong thư mục dữ liệu của terminal, cũng như tên của script đó (dưới dạng đã biên dịch, DrawingScript.ex5
). Giả sử script nằm trong thư mục tiêu chuẩn MQL5/Scripts/
. Trong trường hợp này, hình ảnh nên được truy cập bằng chuỗi "\Scripts\DrawingScript.ex5::Files\triangle.bmp". Phần mở rộng ".ex5" là tùy chọn.
Nếu khi truy cập tài nguyên của một tệp ex5 khác, đường dẫn đến tệp này không được chỉ định, thì tệp đó sẽ được tìm kiếm trong cùng thư mục nơi chương trình yêu cầu tài nguyên đang nằm. Ví dụ, nếu giả sử cùng một Expert Advisor nằm trong thư mục tiêu chuẩn MQL5/Experts/
và nó truy vấn một tài nguyên mà không chỉ định đường dẫn (ví dụ: "DrawingScript.ex5::Files\triangle.bmp"), thì DrawingScript.ex5
sẽ được tìm kiếm trong thư mục MQL5/Experts/
.
Nhờ vào việc sử dụng chung tài nguyên, việc tạo và cập nhật tài nguyên động có thể được sử dụng để trao đổi dữ liệu giữa các chương trình MQL. Điều này diễn ra ngay trong bộ nhớ và do đó là một lựa chọn thay thế tốt cho các tệp hoặc biến toàn cục.
Lưu ý rằng để tải một tài nguyên từ một chương trình MQL, bạn không cần phải chạy nó: để đọc tài nguyên, chỉ cần có một tệp ex5 chứa tài nguyên là đủ.
Một ngoại lệ quan trọng mà trong đó việc chia sẻ báo cáo không thể thực hiện được là khi tài nguyên được mô tả dưới dạng biến tài nguyên.