Объясните пожалуйста, в чем проблема, я не способен своими силами понять это. Всю голову сломал, пока рандомными мучениями не исправил.
iArraySize = 0;
config.Rewind();
if(config.JumpToKey("reward_items") && config.GotoFirstSubKey())
{
do
{
if(config.GetSectionName(sBuffer, sizeof(sBuffer)))
{
iArraySize ++;
//PrintToServer("iArraySize REWARD = %i", iArraySize);
}
}
while(config.GotoNextKey());
}
if(iArraySize < 1) iArraySize = 1;
g_hReward = new ArrayList(iArraySize, ByteCountToCells(64));
char sRew[64];
config.Rewind();
if(config.JumpToKey("reward_items") && config.GotoFirstSubKey())
{
int i = 0;
do
{
if(config.GetSectionName(sBuffer, sizeof(sBuffer)))
{
//PrintToServer("sBuffer = %s", sBuffer);
g_hReward.SetString(i, sBuffer);
g_hReward.GetString(i, sRew, sizeof(sRew));
PrintToServer("Set Reward Array [%i] >> %s", g_hReward.FindString(sBuffer), sRew);
i++;
}
}
while(config.GotoNextKey());
}
Set Reward Array [-1] >> rank_re
Set Reward Array [-1] >> time_re
iArraySize = 1;
config.Rewind();
if(config.JumpToKey("reward_items") && config.GotoFirstSubKey())
{
do
{
if(config.GetSectionName(sBuffer, sizeof(sBuffer)))
{
iArraySize ++;
//PrintToServer("iArraySize REWARD = %i", iArraySize);
}
}
while(config.GotoNextKey());
}
//if(iArraySize < 1) iArraySize = 1;
g_hReward = new ArrayList(iArraySize, ByteCountToCells(64));
char sRew[64];
config.Rewind();
if(config.JumpToKey("reward_items") && config.GotoFirstSubKey())
{
int i = 1;
do
{
if(config.GetSectionName(sBuffer, sizeof(sBuffer)))
{
//PrintToServer("sBuffer = %s", sBuffer);
g_hReward.SetString(i, sBuffer);
g_hReward.GetString(i, sRew, sizeof(sRew));
PrintToServer("Set Reward Array [%i] >> %s", g_hReward.FindString(sBuffer), sRew);
i++;
}
}
while(config.GotoNextKey());
}
Set Reward Array [1] >> rank_reward
Set Reward Array [2] >> time_reward
При этом строка sBuffer[128] ну никак не меняется, однако при
iArraySize = 0 в нее не влезают названия секций (какого бы размера не была строка)
Да, проблему решил чисто рандомно, но ее наличие не дает мне покоя.