rodzina 4001–4018
Ogólne kody błędów wykonania
Błędy niezwiązane z rynkiem: pamięć, tablice, wskaźniki obiektów, zasoby. Pełna lista kodów z tej rodziny wraz z tym, co je wywołuje.
1 fragment kodu z tej strony przeszedł przez kompilator MetaEditor build 6090, 2026-08-05.
Te kody pojawiają się niezależnie od rynku i od brokera — dotyczą pamięci, tablic, wskaźników obiektów i zasobów wbudowanych w plik .ex5.
W praktyce spotkasz z tej rodziny trzy: 4007 przy próbie zmiany rozmiaru tablicy statycznej, 4012 przy odwołaniu do usuniętego obiektu i 4014, gdy wywołujesz funkcję, na którą terminal nie daje zgody.
Pełna lista
| Kod | Stała | Co znaczy |
|---|---|---|
| 4001 | ERR_INTERNAL_ERROR | błąd systemu operacyjnego |
| 4002 | ERR_WRONG_INTERNAL_PARAMETER | zły parametr w wewnętrznym wywołaniu terminala |
| 4003 | ERR_INVALID_PARAMETER | zły parametr przy wywołaniu funkcji systemowej |
| 4004 | ERR_NOT_ENOUGH_MEMORY | za mało pamięci na wykonanie funkcji |
| 4005 | ERR_STRUCT_WITHOBJECTS_ORCLASS | struktura zawiera łańcuchy, tablice dynamiczne albo obiekty |
| 4006 | ERR_INVALID_ARRAY | tablica złego typu, złego rozmiaru albo uszkodzona |
| 4007 | ERR_ARRAY_RESIZE_ERROR | za mało pamięci albo próba zmiany rozmiaru tablicy statycznej |
| 4008 | ERR_STRING_RESIZE_ERROR | za mało pamięci na przeniesienie łańcucha |
| 4009 | ERR_NOTINITIALIZED_STRING | niezainicjowany łańcuch |
| 4010 | ERR_INVALID_DATETIME | nieprawidłowa data lub godzina |
| 4011 | ERR_ARRAY_BAD_SIZE | żądany rozmiar tablicy przekracza 2 GB |
| 4012 | ERR_INVALID_POINTER | zły wskaźnik obiektu |
| 4013 | ERR_INVALID_POINTER_TYPE | zły typ wskaźnika |
| 4014 | ERR_FUNCTION_NOT_ALLOWED | funkcja niedozwolona do wywołania |
| 4015 | ERR_RESOURCE_NAME_DUPLICATED | nazwa zasobu dynamicznego pokrywa się ze statycznym |
| 4016 | ERR_RESOURCE_NOT_FOUND | zasobu o tej nazwie nie ma w pliku ex5 |
| 4017 | ERR_RESOURCE_UNSUPPOTED_TYPE | nieobsługiwany typ zasobu albo rozmiar ponad 16 MB |
| 4018 | ERR_RESOURCE_NAME_IS_TOO_LONG | nazwa zasobu dłuższa niż 63 znaki |
Jak czytać te kody w praktyce
Odczyt kodu błędu bez zgadywania
//--- zerujemy przed operacja, ktorej wynik chcemy sprawdzic
ResetLastError();
double bufor[];
ArraySetAsSeries(bufor, true);
if(CopyBuffer(uchwyt, 0, 0, 10, bufor) < 10)
{
int kod = GetLastError();
PrintFormat("nie udalo sie skopiowac danych, kod %d", kod);
ResetLastError();
return;
}