- 1
- 2
- 3
- 4
- 5
- 6
- 7
page_t* make_page()
{
page_t* p = new page_t;
// заполнение
return p;
delete(p);
}
Нашли или выдавили из себя код, который нельзя назвать нормальным, на который без улыбки не взглянешь? Не торопитесь его удалять или рефакторить, — запостите его на говнокод.ру, посмеёмся вместе!
+929.1
page_t* make_page()
{
page_t* p = new page_t;
// заполнение
return p;
delete(p);
}
я в шоке... не знаю что хотел сказать аффтар (недоступен)... не могу даже прокомментировать ЭТО %)
+53.4
void __fastcall TUsers::DBG2DrawColumnCell(TObject *Sender,
const TRect &Rect, int DataCol, TColumn *Column,
TGridDrawState State)
{
const int iIsChecked[2] = {DFCS_BUTTONCHECK | DFCS_FLAT, DFCS_BUTTONCHECK | DFCS_CHECKED | DFCS_FLAT};
int DrawState;
TRect DrawRect;
if (State.Contains(gdFocused) == true)
{
if (Column->Field->FieldName == dbchkApplyDoc2->DataField)
{
ShowMessage("Зацикливает :( ");
ShowMessage("Эта надпись будет повторяться бесконечно - почему ???");
}
}
else
{
if (Column->Field->FieldName == dbchkApplyDoc2->DataField)
{
DrawRect = Rect;
InflateRect(&DrawRect, -2, -2); // Matters ?
DrawState = iIsChecked[Column->Field->AsBoolean];
DBG2->Canvas->FillRect(Rect);
DrawFrameControl(DBG2->Canvas->Handle, &DrawRect, DFC_BUTTON, DrawState);
}
}
}
Почему
+68.6
// I'VE SO FUCKED CONVERTING THOSE FUCKING TYPES OF STUPID DATA
// TAKE IT, FUCKING STRAUSTRUP AND K&R!!!!!!!!!!!
if (text[i]=='1') (intarray[i]=1);
if (text[i]=='2') (intarray[i]=2);
if (text[i]=='3') (intarray[i]=3);
if (text[i]=='4') (intarray[i]=4);
if (text[i]=='5') (intarray[i]=5);
if (text[i]=='6') (intarray[i]=6);
if (text[i]=='7') (intarray[i]=7);
if (text[i]=='8') (intarray[i]=8);
if (text[i]=='9') (intarray[i]=9);
if (text[i]=='0') (intarray[i]=0);
+53.4
#include <iostream>
using namespace std;
struct CandyBar
{
char name[20];
float weight;
int energy;
};
int main()
{
CandyBar * snack = new CandyBar;
*snack =
{
"Moncha Munch",
2.3,
350
};
cout << "Имя = " << *snack->name;
cout << "\nМасса = " << (*snack).weight;
cout << "\nЭнергетическая ценность = " << snack->energy << "\n";
return 0;
}
+61.9
//Обьявление класса в хедере с последующей реализацией:
template<class TConstructStrategy>
class TClass
{
public:
TConstructStrategy __ctor;
//...Прочие методы...
};
//...Реализация прочих методов класса...
//================================================================
//Конструктор с переменным числом параметров, типа функтор:
//Тоесть обьявлено где-то в коде проекта и передаётся, как параметр при конструировании.
typedef void TConstract(int a);
template<>
TClass<TConstract>::TClass(int a)
{
//doing...
};
int main(int argc, char* argv[])
{
//...
TClass<TConstract> A(5);
//...
}
Это говнокод, но не результат работы над проектом, а результат насмешек над компилятором MSVC 6.0.
Основано на обявлении типа-функции:
typedef void TConstract(int a);, но тк конструктор не функция - используется внутренее имя конструктора MSVC6.0:
void __ctor(void);, согласно которому он всё-таки функция.
__dtor - "внутренее" имя деструктора, кстати.
Спалить "секретное" имя обычно можно в сообщениях об ошибках c участием этих имён. При входе в конструктор/деструктор через отладчик под дизасемблером(наверное). В стеке вызовов отладчика(наверное). Наверное ещё как-нибудь, например проходом HEX редактора по экзешнику компилятора и прилижащим dll...
Итак для обсуждения (хотя и не собираюсь это использовать):
1)Как ещё, кроме странных пергрузок, представленного выше метода конструктора-функтора, и вызовов типа A.__ctor(); / A.__dtor() это можно использовать?
2)Какие "скрытые" имена конструкторов/деструкторов у других компиляторов? Я пробовал в MSVC6.0. В MSVS 2008 при первом расмотрении "внутреннее" имя другое и сходу не палится.
Для примера приведу метод с "обычным" функтором (на самом деле он не самый обычный):
//Обьявление класса в хедере с последующей реализацией:
template<class TStrategy>
class TClass
{
public:
TStrategy func;
//...Прочие методы...
};
//...Реализация прочих методов класса...
//================================================================
//Функтор:
//Тоесть обьявлено где-то в коде проекта и передаётся, как параметр при конструировании.
typedef void TFunc(void);
template<>
void TClass<TFunc>::func(void)
{
//doing...
};
int main(int argc, char* argv[])
{
//...
TClass<TFunc> A;
A.func();
//...
};
+56.5
void ff(const TCHAR *curDir)
{
WIN32_FIND_DATA FindFileData;
HANDLE hFind;
TCHAR cd[MAX_PATH], res[MAX_PATH], dirname[MAX_PATH], filename[MAX_PATH];
strcpy_s(cd, MAX_PATH, curDir);
strcat_s(cd, MAX_PATH, "\\*.*");
hFind = FindFirstFile(cd, &FindFileData);
BOOL r = hFind != INVALID_HANDLE_VALUE;
while (r)
{
r=FindNextFile(hFind, &FindFileData);
if (FindFileData.cFileName[0] != '.') try
{
strcpy_s(cd, MAX_PATH, curDir);
strcat_s(cd, MAX_PATH, "\\");
strcat_s(cd, MAX_PATH, FindFileData.cFileName);
if (!r) // если ссылка последняя смысле handle то записываем имя файла
strcpy_s(filename, MAX_PATH, FindFileData.cFileName);
if (FindFileData.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY)
ff(cd);
else
{
char* k=NULL;
if (!r)
k=strstr(filename,FindFileData.cFileName); // проверяем если является имя каталога подстрокой в имени файла хреначим на вывод(при том что ссылка была последней)
// смысле на вывод хреначим вот здесь
if (k!=NULL)
{
CharToOem(cd, res);
cout<<res<<endl;
}
}
}
catch(...)
{
cout<<"Can not display file name"<<endl;
}
}
}
+48.3
#define begin {
#define end }
//....
#define repeat do{
#define until(a) }while(!(a))
// и т.д.
Боян, конечно, просто вспомнил, глядя на предыдущий говнокод с макросами. Это в институте препод на одной из лекций всерьёз писал на доске.
Видимо, паскальщик еще советской закалки :)
+144.7
#include <iostream>
#define lulz int
#define lulZ main()
#define luLz {
#define luLZ }
#define lUlz cout
#define lULz cin
#define lUlZ ;
#define LuLZ <<
#define LuLz >>
#define LULz =
#define LULZ +
#define lolz endl
lulz lulZ
luLz
lulz Lulz lUlZ
lUlz LuLZ" Смешная сумма " LuLZ lolz lUlZ
lULz LuLz Lulz lUlZ
lUlz LuLZ Lulz lUlZ
lUlz LuLZ" + " lUlZ
lulz lULZ lUlZ
lUlz LuLZ "LULZ?" LuLZ lolz lUlZ
lULz LuLz lULZ lUlZ
lUlz LuLZ Lulz LuLZ " + " LuLZ lULZ LuLZ " = " LuLZ Lulz + lULZ lUlZ
luLZ
"Смешная сумма" (c) автор
+63.8
const size_t& len() const {return _c_str?_len:*(size_t*)0;} //нах это нужно??
P.S. А Я САМ НЕ ЗНАЮ ГДЕ ЗДЕСЬ СИ-КРЕСТ-КРЕСТ!!!!1
+55.5
//------------------------------- COMPARE -------------------------------------
// Function to compare two strings on a mask, using a question mark and
// asterisk.Question mark matches any single character. The asterisk matches
// any signs of a minimum length of zero. maximum length is not limited. Only
// the next character in the mask has a value when there is a coincidence.
int compare(const char pat[],const char text[],int rec_ex)
{
bool flag = false; // flag show if working on "star"
int pat_len ,txt_len, // lehtghs of pattern and text
flagc, // counter and position i check
shift=0; // shift position
pat_len = (int)strlen(pat); // get lehtgh of pattern
txt_len = (int)strlen(text); // get lehtgh of text
if(rec_ex == 1 || (!pat_len && !txt_len)) // check if have to check some
return(1); // if yes return 1 or if have exit
else if(rec_ex == pat_len) // else return 0 becose not check that
return (0); // return 0
for(flagc=0;flagc < pat_len;flagc++)
if(pat[flagc] == '*' && flagc + 1 == pat_len)
return(compare(pat,text,1));// end of check return 1
else if(pat[flagc] == '*')
flag = true; // start * compare set flag true
else if(pat[flagc] != '?')
{
if(toupper(pat[flagc]) != toupper(text[flagc+shift]) && !flag)
return(compare(pat,text,pat_len)); // bad char and no star
else if(toupper(pat[flagc]) == toupper(text[flagc+shift]) && flag)
flag = false; // set flag false position
else if(toupper(pat[flagc]) != toupper(text[flagc+shift]) && flag)
shift++;
}
else if(pat[flagc] == '?')
{ // check if have ? in star operation
if(toupper(pat[flagc]) == toupper(text[flagc+shift]) && flag)
flag = false; // set flag false position
else if(toupper(pat[flagc]) != toupper(text[flagc+shift]) && flag)
shift++; // add one more into shift
}
if((flagc+shift < txt_len && !flag) // text have nore chars and
|| (flagc+shift == txt_len +1 && pat[pat_len+1] != '*'))
return(compare(pat,text,pat_len)); // and next char in pattern no star
else
return(compare(pat,text,1)); // end of pattern and text
}
Вот на после завтра нужно по программированию функцию написать- рекурсивную для сравнения строк по маске.
Написал :-) якобы рекурсивную функцию :-)