Кибор » Кибор - Интегрированная среда разработки ботов » Вопросы и решение проблем » Ошибка в коде

Страниц (1): [1]
 

1. 007wan - 20 Мая, 2019 - 07:42:14 - перейти к сообщению
CODE:
function Add_Log(string Text, int Save, int Change)
{
int Size[2];
string Save_Text = Text;
new char Location[size(Text)+1];

if (Change == 1)
{
Text = "["+format(#Time[0])+"] - "+Text;
}

strcpy(#Location[0], Text);
GetTextExtentPoint32(DC_Listbox1, address(#Location[0]), sizearray(Location), address(#Size[0]));

if (Max_length < Size[0])
{
Max_length = Size[0];
sendmessage(LB_SETHORIZONTALEXTENT, Size[0], 0, formatiw(Object_Listbox1));
}
sendmessage(LB_ADDSTRING, 0, address(#Location[0]), formatiw(Object_Listbox1));

if (Save == 1)
{
WritePrivateProfileString(date, format(#Time[0])+":"+format(Milliseconds), Save_Text, temp_fold+"K2019Bot_Log.ini");
}
delete Location;
}
Выявил причину: Длина ползунка меньше, чем сам текст "ННННННННН" . проблема где-то тут :
CODE:
sendmessage(LB_ADDSTRING, 0, address(#Location[0]), formatiw(Object_Listbox1));

(Добавление)
В файл сохраняет то, что нужно, а пишет в лог "ННННННН", но не 255 символов, а меньше
(Добавление)
Может нельзя переименовывать переменные?)
(Добавление)
А вот это работает! Чем отличается?
CODE:
function Add_Log(string s, int save, int choose)
{
getlocaltime(Year, Month, DayOfWeek, Day, Hour, Minute, Second, Milliseconds);
Strftime(address(#Time[0]), sizearray(Time), "%X", Hour, Minute, Second, Day, Month, Year);
Strftime(address(#Date[0]), sizearray(Date), "%d.%m.%Y", Hour, Minute, Second, Day, Month, Year);

string Text = s;

if (choose == 1)
{
s="["+format(#Time[0])+"] - "+s;
}

int SIZE[2];
new char c[size(s)+1];
strcpy(#c[0], s);
GetTextExtentPoint32(DC_Listbox1, address(#c[0]), sizearray(c), address(#SIZE[0]));
if(Max_length<SIZE[0])
{
Max_length=SIZE[0];
sendmessage(LB_SETHORIZONTALEXTENT, SIZE[0], 0, formatiw(Object_Listbox1));
}
sendmessage(LB_ADDSTRING, 0, address(#c[0]), formatiw(Object_Listbox1));

if (save == 1)//если нужно сохранить в файл.
{
WritePrivateProfileString (date, format(#Time[0])+":"+format(Milliseconds), Text, temp_fold+"K2019Bot_Log.ini");
}
delete c;
}

(Добавление)
Нашел проблему. Проблема в перестановке переменных и функции к ним.
CODE:
function Add_Log(string Text, int Save, int Change)
{
int Size[2];
string Save_Text = Text;

if (Change == 1)
{
Text = "["+format(#Time[0])+"] - "+Text;
}
new char Location[size(Text)+1];
strcpy(#Location[0], Text);
GetTextExtentPoint32(DC_Listbox1, address(#Location[0]), sizearray(Location), address(#Size[0]));

if (Max_length < Size[0])
{
Max_length = Size[0];
sendmessage(LB_SETHORIZONTALEXTENT, Size[0], 0, formatiw(Object_Listbox1));
}
sendmessage(LB_ADDSTRING, 0, address(#Location[0]), formatiw(Object_Listbox1));

if (Save == 1)
{
WritePrivateProfileString(date, format(#Time[0])+":"+format(Milliseconds), Save_Text, temp_fold+"K2019Bot_Log.ini");
}
delete Location;
}
2. 007wan - 21 Мая, 2019 - 06:52:54 - перейти к сообщению
Что не так? Вылетает
CODE:
GetPrivateProfileString ("Default", "Object_Combobox0", 0, Load_Combobox1, 255, PathSaveSettings);
messagebox(Load_Combobox1);
в int переменная
3. Kibor - 21 Мая, 2019 - 06:57:40 - перейти к сообщению
GetPrivateProfileString не подключена
Load_Combobox1 не объявлена
PathSaveSettings не объявлена.

именно так, а не "они там у меня где то есть"

учитесь выкладывать запускаемый код,
когда напишите его, то вполне вероятно и вопроса не будет, так как найдется причина.
4. Zireael - 21 Мая, 2019 - 06:58:57 - перейти к сообщению
 Цитата:
Что не так? Вылетает

4й параметр должен быть указатель на массив char.
5. 007wan - 21 Мая, 2019 - 07:02:59 - перейти к сообщению
Kibor , но если и так они у меня где-то есть...
Всё перепроверил.
Работает только так, но показывает многозначное число
CODE:
GetPrivateProfileString("Default", "Object_Combobox1", 0, Load_Combobox1, 255, PathSaveSettings);

(Добавление)
 Zireael пишет:
4й параметр должен быть указатель на массив char.
Не понимаю. Это же число, как и для галочек.
6. Zireael - 21 Мая, 2019 - 07:06:13 - перейти к сообщению
 Цитата:
DWORD GetPrivateProfileString(
LPCTSTR lpAppName,
LPCTSTR lpKeyName,
LPCTSTR lpDefault,
LPTSTR lpReturnedString,
DWORD nSize,
LPCTSTR lpFileName
);

 Цитата:
lpReturnedString
A pointer to the buffer that receives the retrieved string.
7. 007wan - 21 Мая, 2019 - 07:09:39 - перейти к сообщению
Zireael , ААА

Powered by ExBB FM 1.0 Final