- 1
- 2
- 3
- 4
- 5
- 6
- 7
#include <cstdlib>
#include <ctime>
main(){
srand((unsigned)time(NULL));
int x = 1^~0-(((1+&x?2||0:(~1))-(1 & 2)*.1-(1+-1?5:3)%1)==0?10:-rand()%5+1);
return 0;
}
Нашли или выдавили из себя код, который нельзя назвать нормальным, на который без улыбки не взглянешь? Не торопитесь его удалять или рефакторить, — запостите его на говнокод.ру, посмеёмся вместе!
+88
#include <cstdlib>
#include <ctime>
main(){
srand((unsigned)time(NULL));
int x = 1^~0-(((1+&x?2||0:(~1))-(1 & 2)*.1-(1+-1?5:3)%1)==0?10:-rand()%5+1);
return 0;
}
perl'овцы развлекаются.
+88
Попытка внедрить контрол TCheckBox в заголовок 1 колонки TListView:
type
TForm1 = class(TForm)
ListView1: TListView;
procedure FormCreate(Sender: TObject);
procedure FormDestroy(Sender: TObject);
private
FListHeaderWnd: HWND;
FListHeaderChk: TCheckBox;
FSaveListHeaderWndProc, FListHeaderWndProc: Pointer;
procedure ListHeaderWndProc(var Msg: TMessage);
end;
var
Form1: TForm1;
implementation
uses
commctrl;
{$R *.dfm}
function GetCheckSize: TPoint;
begin
with TBitmap.Create do
try
Handle := LoadBitmap(0, PChar(OBM_CHECKBOXES));
Result.X := Width div 4;
Result.Y := Height div 3;
finally
Free;
end;
end;
procedure TForm1.FormCreate(Sender: TObject);
var
CheckSize: TPoint;
HeaderSize: TRect;
begin
ListView1.HandleNeeded;
FListHeaderWnd := ListView_GetHeader(ListView1.Handle);
FListHeaderChk := TCheckBox.Create(nil);
CheckSize := GetCheckSize;
FListHeaderChk.Height := CheckSize.X;
FListHeaderChk.Width := CheckSize.Y;
// the below won't show anything since the form is not visible yet
ShowWindow(ListView1.Handle, SW_SHOWNORMAL); // otherwise header is not sized
windows.GetClientRect(FListHeaderWnd, HeaderSize);
FListHeaderChk.Top := (HeaderSize.Bottom - FListHeaderChk.Height) div 2;
FListHeaderChk.Left := FListHeaderChk.Top;
FListHeaderChk.Parent := Self;
windows.SetParent(FListHeaderChk.Handle, FListHeaderWnd);
FListHeaderWndProc := classes.MakeObjectInstance(ListHeaderWndProc);
FSaveListHeaderWndProc := Pointer(GetWindowLong(FListHeaderWnd, GWL_WNDPROC));
SetWindowLong(FListHeaderWnd, GWL_WNDPROC, NativeInt(FListHeaderWndProc));
end;
procedure TForm1.FormDestroy(Sender: TObject);
begin
SetWindowLong(FListHeaderWnd, GWL_WNDPROC, NativeInt(FSaveListHeaderWndProc));
classes.FreeObjectInstance(FListHeaderWndProc);
FListHeaderChk.Free;
end;
procedure TForm1.ListHeaderWndProc(var Msg: TMessage);
begin
if (Msg.Msg = WM_COMMAND) and (HWND(Msg.LParam) = FListHeaderChk.Handle)
and (Msg.WParamHi = BN_CLICKED) then begin
FListHeaderChk.Checked := not FListHeaderChk.Checked;
// code that checks/clears all items
end;
Msg.Result := CallWindowProc(FSaveListHeaderWndProc, FListHeaderWnd,
Msg.Msg, Msg.WParam, Msg.LParam);
end;
function GetCheckSize: TPoint;
begin
with TBitmap.Create do
try
Handle := LoadBitmap(0, PChar(OBM_CHECKBOXES));
Result.X := Width div 4;
Result.Y := Height div 3;
finally
Free;
end;
end;
+88
program Project6;
{$APPTYPE CONSOLE}
uses SysUtils;
type TIntArr = array of integer;
function GetSingleArr (i: integer): TIntArr;
begin
SetLength(Result, 1);
Result[0] := i;
end;
var
W: TIntArr;
i : integer;
begin
readln(i);
if i=0 then begin
W := GetSingleArr(5);
WriteLn(W[0]);
end;
ReadLn;
end.
Delphi-7
[Warning] Project6.dpr(25): Variable 'W' might not have been initialized
Да какого хуя? Динмассив вообще по определению - чисто автоматический тип, как он может не инициализироваться?
И почему для других типов такая хрень не вылазит?
+88
//До рефакторинга
static function initConnectOnce(){
$who = get_called_class();
if(!$GLOBALS[$who][class_cllct]){
$db = new DataBase();
$GLOBALS[$who][class_cllct] = $db->selectCollection(get_called_class());
}
return $GLOBALS[$who][class_cllct];
}
//После
public static function initCollectOnce(){
$who = get_called_class();
$cllct = &self::$cacheCollect[$who];
if(!$cllct){
$db = new DataBase();
$cllct = $db->selectCollection($who);
}
return $cllct;
}
Недавно начал рефакторить свой же код. Нашел такой вот незаметный гавнокод...
Для тех кто в танке =)
1. selectCollection(get_called_class()) - зачем вызывать по второму разу, если результат уже есть в переменной $who.
2. $GLOBALS[$who][class_cllct] - немного глюкнуло наверное, когда писал... Логичнее так $GLOBALS[class_cllct][$who].
3. initConnectOnce - тут даже наверное не Connect должно быть, а Collect.
4. Вместо $GLOBALS[$who][class_cllct] лучше(имхо) заюзать статичное свойство для класса.
5. static function initConnectOnce - забыл public описать....
+88
Посоны, Я думал, что то, что вы здесь выкладываете - это выдумки и неправда.
Теперь Я работаю в команде...
+88
if( $tpl_name == '' || ! file_exists( $this->dir . DIRECTORY_SEPARATOR . $tpl_name ) ) {
return "Отсутствует файл шаблона: " . $tpl_name ;
return false;
}
dle
+88
if ( ($cache = isset($this->cache[0]) ? $this->cache[0] : null) != null ) {
$isNeedCache = $cache->isNeedCache($plug);
}
if ( !$isNeedCache || !$cache->getPlugCache($plug, $plugInfo) ) {
/** processing: running plug */
$this->dispatcher->processPlug($request, $response);
if ($isNeedCache)
$cache->setPlugCache($plug, $plugInfo);
}
+88
function gethours: integer;
var
s: string;
h: integer;
begin
s := timetostr(time);
h := strtoint(s[1] + s[2]);
Result := h;
end;
function getmins: integer;
var
s: string;
h: integer;
begin
s := timetostr(time);
h := strtoint(s[4] + s[5]);
Result := h;
end;
function getsecs: integer;
var
s: string;
h: integer;
begin
s := timetostr(time);
h := strtoint(s[7] + s[8]);
Result := h;
end;
+88
var A:array of record
Foo: integer;
end;
function NewNode: integer;
begin
SetLength(A, Length(A)+1);
Result := High(A);
// возвращаем не указатель на последний элемент,
// а номер последнего элемента, потому что массив динамический и указатели нестабильны
end;
procedure DoSmth(var i: integer);
var
n1,n2: integer;
begin
n1 := NewNode;
n2 := NewNode;
// дальше что-то проделывааем над A[n1] и A[n2]
i := A[n1].Foo + A[n2].Foo;
end;
var
NewIndex: integer;
begin
NewIndex := NewNode;
DoSmth(A[NewIndex].Foo);
end.
Угадайте, почему это не будет работать и приведёт к порче памяти.
+88
public static String objectToString( Object val ) {
if ( val == null ) {
return null;
} // if
if ( val.getClass() != String.class ){
Utils.outln( "Utils.objectToString: Illegal argument: val=" + val +
"; val.getClass()=" + val.getClass()
);
//--Чтобы было видно, где неправильно------------------------------------
try {
String str = null;
int len = str.length();
} catch ( Exception ex ) {
ex.printStackTrace();
} // try
//--Чтобы было видно, где неправильно------------------------------------
return "";
} // if
return (String)( val );
} // objectToString
Нашел в коде проекта. Много думал