daFix писал(а):Неа, я только VB хорошо знаю, остальные поверхностно
А я то думал, что обитатели cracklab.ru знают все исходники винды наизусить.
Вобщем, если взять какой-нибудь один файл из вышеупомянутых исходников, то в отрыве от остальных файлов этот файл будет совершенно бесполезен для человека
1: внутри будут непонятные функции, определённым образом вызывающие другие непонятные функции, которые в этом файле отсутсвуют.
человека1 — незнакомого со всеми остальными файлами.И даже если дать человеку второй файл с
другими непонятными функциями, то всё равно ничего не получится — эти
другие непонятные функции будут вызывать ещё какие-то функции, которые будут в третьем модуле, который использует функции из четвёртого.
Ситуация с моими исходниками — примерно такая же. Для подтверждения слов кусочек исходников из этого же проекта:
- Код: Выделить всё
NodeNumericFPFormatCheckerSecondary = TknTransitionSetToNew(NodeNumericFPFormatCheckerPrimary, &scoPlusMinus);
NodeNumericFPFormatLooper = TknTransitionSetToNew(NodeNumericFPFormatCheckerSecondary, &scoNumbers10);
TknTransitionSetToSelf(NodeNumericFPFormatLooper, &scoNumbers10);
TknTransitionExclToToken(NodeNumericFPFormatCheckerPrimary, T_UNDEFINED, TFLAGS_UNDEFINED_ON_FP_CHECK_1);
TknTransitionExclToToken(NodeNumericFPFormatCheckerSecondary, T_UNDEFINED, TFLAGS_UNDEFINED_ON_FP_CHECK_2);
TknTransitionExclToToken(NodeNumericFPFormatLooper, T_NUMERIC, TFLAGS_NUMERIC_EXPONENTIAL |
TFLAGS_NUMERIC_BASE10);
Что тебе толку с этого кода, если ты не знаешь, что делают все эти функции, начинающиеся на
TknTransition? А что означают все эти константы? И какой толк с этого?
Ну, допустим дам я тебе исходник TknTransitionToNew, там будет вот чего:
- Код: Выделить всё
T_ROUTER_ENTRY* TknTransitionSetToNew(T_ROUTER_ENTRY* pn, PSYMBOLICCLASSOBJECT sc)
{
if(TknInitialized && (pn->Automat == Tkn))
{
T_ROUTER_ENTRY *NewRouter = NULL;
for(ULONG i = 0; i < TKN_COMMON_JAT_SIZE; i++)
{
if(GETSCOFLAG(sc, i))
{
// DfaCleanRouterJATCell(pn, i);
if(NewRouter == NULL)
{
NewRouter = (T_ROUTER_ENTRY*)DfaAddChildRouter(pn,
i,
FavTknLooper,
DFARTL_USE_FAV_CODE,
0,
TKN_COMMON_JAT_SIZE);
}
else
{
DfaBuildPathEdge(pn, NewRouter, i);
}
}
}
if(NewRouter != NULL)
{
//
// Если в ходе работы был создан новый узел, и, возможно были созданы
// дополнительные ветвки перехода к нему - возвращаем указатель
// новый узел
//
return NewRouter;
}
else
{
//
// Если новый роутер так и не был создан, значит символьный класс был
// пустым, либо символы не пересекались с диапазоном JAT
//
return (T_ROUTER_ENTRY*)STATUS_ERROR_OUT_OF_JAT_SPACE;
}
}
else
{
return (T_ROUTER_ENTRY*)STATUS_ERROR_NOT_INITIALIZED;
}
}
И снова ты наткнёшься на DfaAddChildRouter, DfaBuildPathEdge и кучу констант, которых в этом модуле нет и о которых ты ничего не знаешь. И наличие щедро раставленных комментариев тебе тоже не поможет.
Так что, на будущее: просить у меня мои исходники редко бывает полезным
.