- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
for i:=1 to 100 do
begin
for j:=1 to f do
begin
...
end;
f:=f+1000;
end;
Нашли или выдавили из себя код, который нельзя назвать нормальным, на который без улыбки не взглянешь? Не торопитесь его удалять или рефакторить, — запостите его на говнокод.ру, посмеёмся вместе!
+93
for i:=1 to 100 do
begin
for j:=1 to f do
begin
...
end;
f:=f+1000;
end;
Бедные дельфины, им не повезло с циклами.
+110
procedure TMainForm.ApplicationEventsShortCut(var Msg: TWMKey;
var Handled: Boolean);
begin
if msg.CharCode <> vk_F11 then
exit;
raise Exception.Create('Вы хотите выйти из программы?');
end;
procedure TMainForm.ApplicationEventsException(Sender: TObject;
E: Exception);
begin
if Application.MessageBox(pchar('Произошла ошибка:'#13#10 + e.Message
+
#13#10'Нажмите Retry продолжить работу c программой.'#13#10'Нажмите Сancel чтобы завершить работу программы.'),
'Ошибка', MB_RETRYCANCEL or MB_ICONINFORMATION or MB_SYSTEMMODAL) =
ID_CANCEL then try
MainData.MainDataBaseBeforeDisconnect(nil);
Close;
finally
Application.Terminate;
end;
if not CaptureError(E) then
Close;
end;
предыдущий автор одного проекта таким вот нетривиальным образом сделал подтверждение выхода из программы. так понравилось, что не стал убивать, просто закомментарил. сейчас весть этот код заменен одной строчкой в OnCloseQuery.
поясню, на всякий случай. по нажатию F11 поднимается эспепшен "Вы хотите выйти из программы?", этот экспепшен перехватывается на уровне TApplication, выводится сообщение "Произошла ошибка: "Вы хотите выйти из программы?"" с педалями "Retry" и "Cancel", и при нажатии на отмену прога тупо рубиться по Application.Terminate.
непростое детство было у песателя, по ходу.
+96
procedure tnew.execute;
var
cod:utf8string;
id:byte;
captcha,sim,idc:string;
ss:TStringStream;
s1,s2,s3,s4,s5,s6,s7,s8,s9,s10,
s11,s12,s13,s14,s15,s16,s17,s18,
s19,s20,s21,s22,s23,s24,s25,s26,
s27,s28,s29,s30,s31,s32,s33:utf8string;
FS:TFileStream;
Antigate: TAntigate;
begin
form3.IdHTTP1.Request.Referer :='http://www.aboutlive.ru/phpBB2/profile.php?mode=register';
cod:=form3.IdHTTP1.get('http://www.aboutlive.ru/phpBB2/profile.php?mode=register&agreed=true');
function Pars (T_, ForS, _T: string): string;
var
a, b: integer;
begin
Result := '';
if (T_ = '') or (ForS = '') or (_T = '') then
Exit;
a := Pos (T_, ForS);
if a = 0 then
Exit
else
a := a + Length (T_);
ForS := Copy (ForS, a, Length (ForS) - a + 1);
b := Pos (_T, ForS);
if b > 0 then
Result := Copy (ForS, 1, b - 1);
end;
idc:= pars('confirm_id" value="',cod,'" />');
sim:= pars('sid" value="',cod,'" />');
FS:=TFileStream.Create('captcha.png',FMCreate);
form3.IdHTTP1.Get('http://www.aboutlive.ru/phpBB2/profile.php?mode=confirm&id='+idc, FS);
FS.free;
form3.Image1.Picture.LoadFromFile('captcha.png');
Antigate := TAntigate.Create; // это разгадка капчи
antigate.Calc:=1;
antigate.MaxRetry:=3;
Antigate.Key := '';
Antigate.ImageFile := 'captcha.png';
captcha:=Antigate.Recognize;
Antigate.free;
form3.RichEdit1.Lines.Add('Капча: '+AnsiUpperCase(captcha));
form3.IdHTTP1.Request.Referer :='http://www.aboutlive.ru/phpBB2/profile.php?mode=register&agreed=true';
ss := TStringStream.Create;
s1:='username=sadsaddfsa12342';
s2:='[email protected]';
s3:='new_pasword=1234567';
s4:='pasword_confirm=1234567';
s5:='confirm_code='+captcha;
s6:='icq=';
s7:='aim=';
s8:='msn=';
s9:='yim=';
s10:='website=';
s11:='location=';
s12:='occupation=';
s13:='interests=';
s14:='signature=';
s15:='viewemail=0';
s16:='hideonline=0';
s17:='notifyreply=0';
s18:='notifypm=1';
s19:='popup_pm=1';
s20:='attachsig=1';
s21:='allowbbcode=1';
s22:='allowhtml=1';
s23:='allowsmilies=1';
s24:='language=russian';
s25:='style=1';
s26:='timezone=4';
s27:='dateformat=D M d, Y g:i a';
s28:='mode=register';
s29:='agreed=true';
s30:='coppa=0';
s31:='sid='+sim;
s32:='confirm_id='+idc;
s33:='submit=Отправить';
ss.WriteString (s1+'&'+s2+'&'+s3+'&'+s4+'&'+s5+'&'+s6+'&'+s7+'&'+s8+'&'+s9+'&'+s10+'&'+s11+'&'+s12+'&'+s13+'&'+s14+'&'+s15+'&'+s16+'&'+s17+'&'+s18+'&'+s19+'&'+s20+'&'+s21+'&'+s22+'&'+s23+'&'+s24+'&'+s25+'&'+s26+'&'+s27+'&'+s28+'&'+s29+'&'+s30+'&'+s31+'&'+s32+'&'+s33);
Что уж тут напишешь....
+102
while dlg_SmplSpk.ShowModal = mrOk do ;
Узрел такое! Срочно к себе в рецепты прогрессивного программирования!
Сделано это для того, чтобы окно не закрывалось при подтверждении всех сделанных действий.
Закрываться должно только при нажатии кнопочки "Закрыть".
Отсюда непонятен ход мыслей автора сия творения.
+92
I:=1;
while I<=High(Sockets) do
begin
if FD_IsSet(Sockets[I],FDSet) then
if Recv(Sockets[I],…)<=0 then
begin
// Связь разорвана, надо закрыть сокет
// и удалить его из массива
CloseSocket(Sockets[I]);
for J:=I to High(Sockets)-1 do
Sockets[J]:=Sockets[J+1];
Dec(I);
SetLength(Sockets,Length(Sockets)-1)
end
else
begin
// Получены данные от клиента, надо ответить
Send(Sockets[I],…)
end;
Inc(I)
end;
На первый взгляд может показаться странным, почему для перебора элементов массива используется цикл while, а не for. Но в дальнейшем мы увидим, что размер массива во время выполнения цикла может изменяться. Особенность же цикла for заключается в том, что его границы вычисляются один раз и запоминаются в отдельных ячейках памяти, и дальнейшее изменение значений выражений, задающих эти границы, не изменяет эти границы. В нашем примере это приведёт к тому, что в случае уменьшения массива цикл for не остановится на реальной уменьшившейся длине, а продолжит цикл по уже не существующим элементам, что приведёт к трудно предсказуемым последствиям. Поэтому в данном случае лучше использовать цикл while, в котором условие продолжения цикла полностью вычисляется при каждой его итерации.
+101
....
for i:=1 to 4 do for j:=1 to 4 do begin a[i,j]:=b; b:=b-1; end;
for i:=1 to 4 do for j:=1 to 4 do if a[i,j]=16 then begin k:=i;l:=j; end;
for i:=1 to 4 do
for j:=1 to 4 do
begin
gotoxy(5+3*i,5+2*j);
write(a[i,j]);
end;
....
http://otvet.mail.ru/question/52501602/
+99
procedure TForm1.Timer1Timer(Sender: TObject);
var Ras, MinRas, MinC, Comp: Integer;
begin
Ras:=0;
MinC:=0;
MinRas:=0; // всё по нулям
for Comp:=0 to ComponentCount-1 do // цикл по всем компонентам
begin
IF (Components[Comp] is TPanel) and (Components[Comp] <> Panel1) and (Panel1.Left>TPanel(Components[Comp]).Left) then
Ras:=Panel1.Left-TPanel(Components[Comp]).Left
else
IF (Components[Comp] is TPanel) and (Components[Comp] <> Panel1) and (Panel1.Left<TPanel(Components[Comp]).Left) then
Ras:=TPanel(Components[Comp]).Left-Panel1.Left;
If Ras < MinRas
then begin
MinRas:= Ras; //устанавливаем переменные этой панельки за основные
MinC:= Comp;
end;
end;
if Panel1.top<(TPanel(Components[MinC]).Top-TPanel(Components[MinC]).Height) then
Panel1.Top:=Panel1.Top+3; //если панель ниже то допрыгиваем
PROBEL:=Panel1.Top=TPanel(Components[MinC]).Top-TPanel(Components[MinC]).Height
end;
какое-то панельное безумие
+103
Const MAX32 : DWord = $FFFFFFFF;
Var
State : Array[0..15] of DWord;
Count : Array[0..1] of DWord;
Len : Byte;
Buffer : Array[0..31] of Byte;
Procedure SHIFT12(var U : Array of DWord; var M : Array of DWord; var S : Array of DWord);
Begin
U[0] := M[0] xor S[6];
U[1] := M[1] xor S[7];
U[2] := M[2] xor (S[0] shl 16) xor (S[0] shr 16) xor (S[0] and $FFFF) xor
(S[1] and $FFFF) xor (S[1] shr 16) xor (S[2] shl 16) xor S[6] xor (S[6] shl 16) xor
(S[7] and $FFFF0000) xor (S[7] shr 16);
U[3] := M[3] xor (S[0] and $FFFF) xor (S[0] shl 16) xor (S[1] and $FFFF) xor
(S[1] shl 16) xor (S[1] shr 16) xor (S[2] shl 16) xor (S[2] shr 16) xor
(S[3] shl 16) xor S[6] xor (S[6] shl 16) xor (S[6] shr 16) xor (S[7] and $FFFF) xor
(S[7] shl 16) xor (S[7] shr 16);
U[4] := M[4] xor
(S[0] and $FFFF0000) xor (S[0] shl 16) xor (S[0] shr 16) xor
(S[1] and $FFFF0000) xor (S[1] shr 16) xor (S[2] shl 16) xor (S[2] shr 16) xor
(S[3] shl 16) xor (S[3] shr 16) xor (S[4] shl 16) xor (S[6] shl 16) xor
(S[6] shr 16) xor(S[7] and $FFFF) xor (S[7] shl 16) xor (S[7] shr 16);
U[5] := M[5] xor (S[0] shl 16) xor (S[0] shr 16) xor (S[0] and $FFFF0000) xor
(S[1] and $FFFF) xor S[2] xor (S[2] shr 16) xor (S[3] shl 16) xor (S[3] shr 16) xor
(S[4] shl 16) xor (S[4] shr 16) xor (S[5] shl 16) xor (S[6] shl 16) xor
(S[6] shr 16) xor (S[7] and $FFFF0000) xor (S[7] shl 16) xor (S[7] shr 16);
U[6] := M[6] xor S[0] xor (S[1] shr 16) xor (S[2] shl 16) xor S[3] xor (S[3] shr 16) xor
(S[4] shl 16) xor (S[4] shr 16) xor (S[5] shl 16) xor (S[5] shr 16) xor S[6] xor
(S[6] shl 16) xor (S[6] shr 16) xor (S[7] shl 16);
U[7] := M[7] xor (S[0] and $FFFF0000) xor (S[0] shl 16) xor (S[1] and $FFFF) xor
(S[1] shl 16) xor (S[2] shr 16) xor (S[3] shl 16) xor S[4] xor (S[4] shr 16) xor
(S[5] shl 16) xor (S[5] shr 16) xor (S[6] shr 16) xor (S[7] and $FFFF) xor
(S[7] shl 16) xor (S[7] shr 16);
End;
Procedure SHIFT16(var H : Array of DWord; var V : Array of DWord; var U : Array of DWord);
Begin
V[0] := H[0] xor (U[1] shl 16) xor (U[0] shr 16);
V[1] := H[1] xor (U[2] shl 16) xor (U[1] shr 16);
V[2] := H[2] xor (U[3] shl 16) xor (U[2] shr 16);
V[3] := H[3] xor (U[4] shl 16) xor (U[3] shr 16);
V[4] := H[4] xor (U[5] shl 16) xor (U[4] shr 16);
V[5] := H[5] xor (U[6] shl 16) xor (U[5] shr 16);
V[6] := H[6] xor (U[7] shl 16) xor (U[6] shr 16);
V[7] := H[7] xor (U[0] and $FFFF0000) xor (U[0] shl 16) xor (U[7] shr 16) xor
(U[1] and $FFFF0000) xor (U[1] shl 16) xor (U[6] shl 16) xor (U[7] and $FFFF0000);
End;
+94
For i := 0 to 7 do
Begin
If ((iMass[i])[1] = dClick.xAlf) and (StrToInt((iMass[i])[2]) = dClick.yFlt) then
BegiN
cObject.Caption := '';
If (i = 1) or (i = 2) then
Begin
(Sender as TSpeedButton).Glyph.LoadFromFile('images/Grenadier1.bmp');
Break;
End;
If i = 4 then
Begin
(Sender as TSpeedButton).Glyph.LoadFromFile('images/Grenadier3.bmp');
Break;
End;
If i >= 5 then
Begin
(Sender as TSpeedButton).Glyph.LoadFromFile('images/Grenadier2.bmp');
Break;
End;
(Sender as TSpeedButton).Glyph.LoadFromFile('images/Grenadier'+IntToStr(i + 1)+'.bmp');
Break;
EnD;
End;
Мой высер. За неимением идей, больше ничего придумать не смог.
+114
TMapObj = record
Size: integer;
Selected, Valid: boolean;
case Kind: TKind of
// дохрена пропущено
koTxr: (
TxrFileName: string [31];
tLast: integer;
TxrCorrect: boolean;
LODS: array [0 .. 3] of TBitmap;
Pixel: TBitmap;
);
koItem: (
Location: TLocation;
ItemEndSel: boolean; // выделена ли для перетаскивания
TimeBeforeReborn: integer; // времени до восстановления
DescrIndex: integer; // индекс описателя
Rotation: integer;
TeamColor, EnemyColor: integer;
iLast: integer;
CannotGet: boolean;
case TKindItem of
kiWeapon: (
iwpFallen: boolean;
iwpBulletsLeft: integer;
iwpState: TWeaponState;
);
kiHuman: (
ihState: integer;
);
kiFlag: (
ifState: TFlagState;
ifHome: integer;
);
kiScepter: (
isState: TScepterState;
);
);
koItemDescr: (
ItemFileName: string [31]; // файл с описанием предмета
idLast: integer;
ItemCorrect: boolean;
ItemName: string [31]; // название предмета
SpriteIndName: string [31];
SpriteInd: integer; // картинка
RebornTime: integer; // время перерождения
case KindItem: TKindItem of
kiHealth: (
hlCount: integer;
);
kiShield: (
shCount: integer;
);
kiFlag: (
flTeam: integer;
);
kiSL: (
slTeam: integer;
);
kiAmmo: (
amCount: integer;
amIndex: integer; // тип патрона
);
kiWeapon: ( // всё про пушку
wpAmmoIndex: integer; // тип патронов
wpKeyNumber: integer; // кнопка на клавиатуре
wpBulletsInCharge: integer; // патронов в обойме
wpInitBullets: integer; // изначальное число патронов
wpMaxBullets: integer; // максимальное число патронов
wpShotBullets: integer; // патронов за раз
wpReloadTime, wpShotTime: integer; // время перезарядки, скорострельность (скорострельность в миллисекундах)
wpDispersion, wpKickBack: integer; // разброс самого оружия и отдача
wpBasic: integer; // базовое ли
wpDamage: integer; // урон
wpDistance, wpBulletSpeed: integer; // предельная дальность выстрела, скорость пуль
wpSound: integer; // номер ноты
wpColor: TColor; // цвет
);
);
koBullet: (
bLast: integer;
BLocP: array [0 .. 1] of TPoint;
BLocRoom: integer;
BVector: TPoint; // нормализованный вектор направления
BDamage: integer; // параметры, которые надо передавать в процедуру создания пули
BSpeed: integer;
BLengthLeft: integer;
BOwner: integer;
Bn, Bm: TDistFunc;
BColor: TColor;
);
end;
Меня попросили показать, до чего может довести структурное программирование при отрицании ООП. Разветвлённая структура с кучей ветвей.
Для лучшего эффекта обмазываться вместе с http://govnokod.ru/4249