Нашли или выдавили из себя код, который нельзя назвать нормальным,
на который без улыбки не взглянешь?
Не торопитесь его удалять или рефакторить, — запостите его на
говнокод.ру, посмеёмся вместе!
switch (*p)
{
case '0': id += 0; break;
case '1': id += 1; break;
case '2': id += 2; break;
case '3': id += 3; break;
case '4': id += 4; break;
case '5': id += 5; break;
case '6': id += 6; break;
case '7': id += 7; break;
case '8': id += 8; break;
case '9': id += 9; break;
case 'a': case 'A': id += 10; break;
case 'b': case 'B': id += 11; break;
case 'c': case 'C': id += 12; break;
case 'd': case 'D': id += 13; break;
case 'e': case 'E': id += 14; break;
case 'f': case 'F': id += 15; break;
case 'g': case 'G': id += 16; break;
case 'h': case 'H': id += 17; break;
case 'i': case 'I': id += 18; break;
case 'j': case 'J': id += 19; break;
case 'k': case 'K': id += 20; break;
case 'l': case 'L': id += 21; break;
case 'm': case 'M': id += 22; break;
case 'n': case 'N': id += 23; break;
case 'o': case 'O': id += 24; break;
case 'p': case 'P': id += 25; break;
case 'q': case 'Q': id += 26; break;
case 'r': case 'R': id += 27; break;
case 's': case 'S': id += 28; break;
case 't': case 'T': id += 29; break;
case 'u': case 'U': id += 30; break;
case 'v': case 'V': id += 31; break;
case 'w': case 'W': id += 32; break;
case 'x': case 'X': id += 33; break;
case 'y': case 'Y': id += 34; break;
case 'z': case 'Z': id += 35; break;
}
считаем нечто типа хэша. захотим изменить алгоритм, сделав вместо сложения - ксор, будем фаница реплейсом.
источник http://www.winsim.com/diskid32/diskid32.cpp
там же красивые переменные int ijk = 0;
На самом деле после GetBuffer нужен ReleaseBuffer и Preallocate резервирует место, но не устанавливает длину.
Эти ошибки приводят к тому что использование name_ в GetName не работает и name_ = temp тоже не работает.
Хитрый "индокодер" выкрутился через Format.
/* This is bad. Reaaly bad. It's a really, really bad hack. If you're an employee of
* Intertrode Communication, then I'm really, really sorry that you have to maintain
* this. I was honestly planning on removing this tomorrow, but I've been known to
* forget things like this. It happens.
*
* So here's the thing. I can't seem to figure out why the AccountId variable isn't
* set. I've looked and looked, but I gotta leave now. Anyway, I've found that I can
* just grab the AccountID from the debugging logs. I suppose that to fix it, you'd
* have to locate where it's clearing out the ID.
*
* Again, I'm sorry.
*/
if ( (AccountId == NULL) || (AccountId == "") ||
(ServerSesion["AccountId"] == NULL) || (ServerSesion["AccountId"] == "") )
{
//open session logs
FileHandle file = f_open(LOG_PATH + "\sessionlog-" + LOG_FILE_DATE + ".log", 1);
while (file != NULL)
{
TString line = f_readline(file);
//look for IP and changereg
if ( (sfind(line,REMOTE_ADDR) != -1) && (sfind(line,"changereg") != -1) )
{
//0000-00-00 00:00 /accountmaint/changereg/?AccountId=123456 255.255.255.255 ...
// *
AccountId = substr(line, 52, 6);
}
if (f_EOF(file)) { f_close(file); file = NULL; }
}
}