ArrayInsert
Chèn số lượng phần tử được chỉ định từ mảng nguồn vào mảng đích bắt đầu từ chỉ số được chỉ định.
bool ArrayInsert(
void& dst_array[], // mảng đích
const void& src_array[], // mảng nguồn
uint dst_start, // chỉ số mảng đích để chèn
uint src_start=0, // chỉ số mảng nguồn để sao chép
uint count=WHOLE_ARRAY // số lượng phần tử để chèn
);
2
3
4
5
6
7
Tham số
dst_array[]
[in][out] Mảng đích mà các phần tử sẽ được thêm vào.
src_array[]
[in] Mảng nguồn mà các phần tử được lấy từ đó.
dst_start
[in] Chỉ số trong mảng đích để chèn các phần tử từ mảng nguồn.
src_start=0
[in] Chỉ số trong mảng nguồn, bắt đầu từ đó các phần tử của mảng nguồn được lấy để chèn.
count
[in] Số lượng phần tử được thêm từ mảng nguồn. WHOLE_ARRAY
có nghĩa là tất cả các phần tử từ chỉ số được chỉ định đến cuối mảng.
Giá trị trả về
Trả về true nếu thành công, nếu không trả về false. Để biết thông tin về lỗi, gọi hàm GetLastError(). Các lỗi có thể xảy ra:
- 5052 – ERR_SMALL_ARRAY (các tham số
start
và/hoặccount
được đặt không chính xác hoặc mảng nguồnsrc_array[]
rỗng), - 5056 – ERR_SERIES_ARRAY (mảng không thể thay đổi, bộ đệm chỉ báo),
- 4006 – ERR_INVALID_ARRAY (không được phép sao chép vào chính nó, hoặc các mảng có kiểu khác nhau, hoặc có mảng kích thước cố định chứa các đối tượng lớp hoặc cấu trúc có hàm hủy),
- 4005 - ERR_STRUCT_WITHOBJECTS_ORCLASS (mảng không chứa cấu trúc POD nghĩa là không thể sao chép đơn giản),
- Các lỗi xảy ra khi thay đổi kích thước mảng đích
dst_array[]
được cung cấp trong mô tả hàm ArrayRemove().
Ghi chú
Nếu hàm được sử dụng cho mảng kích thước cố định, kích thước của mảng đích dst_array[]
không thay đổi. Bắt đầu từ vị trí dst_start
, các phần tử của mảng đích được dịch sang phải (các phần tử cuối cùng counts
bị "rơi ra"), trong khi các phần tử được sao chép từ mảng nguồn chiếm chỗ của chúng.
Không thể chèn các phần tử vào mảng động được chỉ định làm bộ đệm chỉ báo bởi hàm SetIndexBuffer(). Đối với bộ đệm chỉ báo, tất cả các thao tác thay đổi kích thước được thực hiện bởi hệ thống con thực thi của terminal.
Trong mảng nguồn, các phần tử được sao chép bắt đầu từ chỉ số src_start
. Kích thước mảng nguồn không thay đổi. Các phần tử được thêm vào mảng đích không phải là liên kết đến các phần tử của mảng nguồn. Điều này có nghĩa là các thay đổi tiếp theo của các phần tử trong bất kỳ mảng nào không ảnh hưởng đến mảng còn lại.
Ví dụ:
//+------------------------------------------------------------------+
//| Script program start function |
//+------------------------------------------------------------------+
void OnStart()
{
//--- khai báo mảng kích thước cố định và điền giá trị
int array_dest[10];
for(int i=0;i<10;i++)
{
array_dest[i]=i;
}
//--- mảng nguồn
int array_source[10];
for(int i=0;i<10;i++)
{
array_source[i]=10+i;
}
//--- hiển thị mảng trước khi chèn các phần tử
Print("Before calling ArrayInsert()");
ArrayPrint(array_dest);
ArrayPrint(array_source);
//--- chèn 3 phần tử từ mảng nguồn và hiển thị tập hợp mới của mảng đích
ArrayInsert(array_dest,array_source,4,0,3);
Print("After calling ArrayInsert()");
ArrayPrint(array_dest);
/*
Kết quả thực thi
Before calling ArrayInsert()
0 1 2 3 4 5 6 7 8 9
After calling ArrayInsert()
0 1 2 3 10 11 12 7 8 9
*/
}
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33