Вопрос по formatex

Сообщения
51
Реакции
-24
Обратите внимание, если вы хотите заключить сделку с этим пользователем, он заблокирован
почему в 11 строке
formatex(buff[len], charsmax(buff) - len, "<tr><td height=15px><td></table>");
а не
len += formatex(buff[len], charsmax(buff) - len, "<tr><td height=15px><td></table>");
??
C++:
len += formatex(buff[len], charsmax(buff) - len, "<META http-equiv=Content-Type content='text/html;charset=UTF-8'><link href='%s' rel=stylesheet type=text/css>", CSS_STYLE);
len += formatex(buff[len], charsmax(buff) - len, "<p>Oбщaя cтaтистикa игpoкa</p><table cellpadding=0><tr><td valign=top width=50%%><table cellspacing=0><tr><th colspan=2> Вы нa %d-oм мecтe из %d", plRank, get_statsnum());
len += formatex(buff[len], charsmax(buff) - len, "<tr><td>Убито<td>%d (в гoлoву: %d)<tr><td>Ассистов<td>%d<tr><td>Cмepтeй<td>%d<tr><td>Пoпaдaний<td>%d<tr><td>Bыcтpeлoв<td>%d<tr><td>Уpoн<td>%d<tr><td>Toчнocть<td>%0.2f%%<tr><td>Эффeктивнocть<td>%0.2f%%<tr><td>Cкилл<td>%s</table>",
    st[FRAGS], st[HS], bh[ASSIST], st[DEATHS], st[HITS], st[SHOTS], st[DAMAGE], accuracy(st[HITS], st[SHOTS]), effec(st[FRAGS], st[DEATHS]), g_arrViewSkills[get_skill(bh[SKILL])]);          

len += formatex(buff[len], charsmax(buff) - len, "<td valign=top width=50%%><table cellspacing=0><tr><th colspan=2>Cтaтиcтикa пoпaдaний");

for(new i; i < sizeof g_arrBodyParts; ++i)
    len += formatex(buff[len], charsmax(buff) - len, "<tr><td>%s<td>%d", g_arrBodyParts[i], bh[i]);
                   
formatex(buff[len], charsmax(buff) - len, "<tr><td height=15px><td></table>");//Конец кода
 
Последнее редактирование:
Сообщения
1,293
Реакции
2,294
Помог
57 раз(а)
А что там дальше идёт, после 11-ой строки? len где-то используется после этого? Потру хрустальный шар, и предположу, что len в данном случае используется исключительно как указатель для formatex (buff[len] <- так мы показываем formatex'у, с какой позиции начинать форматирование). Как мы видим, в конце 11-ой строки присутствует коммент "// Конец кода", т.е., я полагаю, формирование на этом заканчивается. Стало быть, len нам более не нужен.
 
Сообщения
51
Реакции
-24
Обратите внимание, если вы хотите заключить сделку с этим пользователем, он заблокирован
А что там дальше идёт, после 11-ой строки? len где-то используется после этого? Потру хрустальный шар, и предположу, что len в данном случае используется исключительно как указатель для formatex (buff[len] <- так мы показываем formatex'у, с какой позиции начинать форматирование). Как мы видим, в конце 11-ой строки присутствует коммент "// Конец кода", т.е., я полагаю, формирование на этом заканчивается. Стало быть, len нам более не нужен.
т.е если это последняя строка то len += можно не писать а просто formatex();?
 
Сообщения
1,293
Реакции
2,294
Помог
57 раз(а)
Alfistik, если он далее нигде не используется в контексте одного и того же форматирования, - да, можно не писать.
 
Сообщения
2,143
Реакции
1,225
Помог
44 раз(а)
Alfistik, len += добавляет в буфер строки, а formatex - создает уже меню с собранных в буфере строк. Это, если простыми словами.
 
Сообщения
842
Реакции
519
Помог
12 раз(а)
len += formatex(buff[len], charsmax(buff) - len,


len - счетчик всех символов(занятых ячеек), записанных в массиве buff

formatex возвращает количество символов, которое оно записало в буффер

Код:
// начинает с того места, на котором была закончена прошлая запись
// буффер представляет собой массив в котором записано некоторое число, которое после кодируется
// символ, если уж реально разжевывать как это работает
formatex(buff[len], ...

// Расчитываем оставшееся свободное место в буффере. Charsmax подбирает Весь буффер - 1 - Len(размер) всех символов, которые уже записаны
... , charsmax(buff) - len,
в итоге получается, что в конце и не нужно вовсе подсчитывать len - последняя ячейка в массиве buff[N]
 
Сообщения
51
Реакции
-24
Обратите внимание, если вы хотите заключить сделку с этим пользователем, он заблокирован
len += formatex(buff[len], charsmax(buff) - len,


len - счетчик всех символов(занятых ячеек), записанных в массиве buff

formatex возвращает количество символов, которое оно записало в буффер

Код:
// начинает с того места, на котором была закончена прошлая запись
// буффер представляет собой массив в котором записано некоторое число, которое после кодируется
// символ, если уж реально разжевывать как это работает
formatex(buff[len], ...

// Расчитываем оставшееся свободное место в буффере. Charsmax подбирает Весь буффер - 1 - Len(размер) всех символов, которые уже записаны
... , charsmax(buff) - len,
в итоге получается, что в конце и не нужно вовсе подсчитывать len - последняя ячейка в массиве buff[N]
new buffer[1000], len;
// buffer[1000] размер масива максимальное количество допустимых символов
len += formatex(buff[len], charsmax(buff) - len, "<table>"); //Добавил в буфер
len += formatex(buff[len], charsmax(buff) - len, "<tr>");//Добавил в буфер
len += formatex(buff[len], charsmax(buff) - len, " <td> Поле #1 </td>");//Добавил в буфер
len += formatex(buff[len], charsmax(buff) - len, "</tr>");//Добавил в буфер

formatex(buff[len], charsmax(buff) - len, "</table>"); // И все равно не могу понять принцип работы этой строки (всегда че то туго доходит)
 
Сообщения
241
Реакции
224
Помог
2 раз(а)
Alfistik,
buff - массив
len - количество символов, занесенных в массив
buff[len], charsmax(buff) - len - конструкция, указывающая с какого элемента массива начать заносить символы в текущей строке

После строки formatex(buff[len], charsmax(buff) - len, "</table>") никакие данные в массив не заносятся, поэтому len в этом случае присваивать незачем.
 
Последнее редактирование:

Пользователи, просматривающие эту тему

Сейчас на форуме нет ни одного пользователя.
Сверху Снизу