PDA

Просмотр полной версии : [Вопрос] strmid



BodyanZe
10.01.2018, 00:13
Не понимаю, может чего не знаю, но когда юзаю в массиве (1) енум с ещё 1 массивом (2), то используя функцию strmid не могу записать строку в массив (1).

#include <a_samp>

main() {}

enum Test_Enum
{
Test_String[24]
};

new Test_Var[Test_Enum];

public OnGameModeInit()
{
strmid(Test_Var[Test_String], "Test_Sentence", 0, strlen("Test_Sentence"));
print(Test_Var[Test_String]);
return 1;
}

Результат:

(null)

Нужно ли создавать отдельный массив без использования enum'а или же как-то можно с ним?

L0ndl3m
10.01.2018, 00:30
Давно не писал, поправьте если не прав.
Так, кстати, работает:


enum Test_Enum
{
Test_String
};

new Test_Var[Test_Enum][24];
...


- - - Добавлено - - -

Или можно создать обычный массив:


new Test_String[24];
...
strmid(Test_String, "Test_Sentence", 0, sizeof (Test_String));
print(Test_String);

BodyanZe
10.01.2018, 00:38
Да, но я привёл в пример enum с 1 переменной, но в GM там хранятся как переменные действительного типа, так и целочисельного...

----

Ну, я же и спрашивал, стоит ли создавать массив или можно обойтись без него..

Geebrox
10.01.2018, 01:47
Вы не указали maxlength (последний параметр функции strmid). sizeof не работает с двумернымы массивами. *(работает, но не в этом случае)



#include <a_samp>

main() {}

#define TEST_STRING_MAX_LENGTH 24

enum Test_Enum
{
Test_String[TEST_STRING_MAX_LENGTH]
};

new Test_Var[Test_Enum];

public OnGameModeInit()
{
strmid(Test_Var[Test_String], "Test_Sentence", 0, strlen("Test_Sentence"), TEST_STRING_MAX_LENGTH);
print(Test_Var[Test_String]);
return 1;
}

пробуйте