Нашли или выдавили из себя код, который нельзя назвать нормальным,
на который без улыбки не взглянешь?
Не торопитесь его удалять или рефакторить, — запостите его на
говнокод.ру, посмеёмся вместе!
if currIndex=2 then
begin
// разкрываем выделенные узлы
TreeView_U.Items[r].Expanded:=true;
if TreeView_U.Items[r].Parent <> nil then
begin
TreeView_U.Items[r].Parent.Expanded:=true;
if TreeView_U.Items[r].Parent.Parent <> nil then
begin
TreeView_U.Items[r].Parent.Parent.Expanded:=true;
if TreeView_U.Items[r].Parent.Parent.Parent <> nil then
TreeView_U.Items[r].Parent.Parent.Parent.Expanded:=true;
end;
end;
Это попытка раскрыть полностью ветвь дерева, если в ней есть хоть один выбранный (с помеченным чекбоксом) элемент, о чём говорит currIndex=2
Вообще-то оно даже работает, ибо вложенность дерева маленькая. Но увеличиться запросто может...
procedure TForm2.s1;
var a,a1:real;
begin
a:=a+1.8;
randomize;
if p<1 then
begin
if a<1.9 then
begin
a:=999;
a1:=random(4);
if a1=2 then
begin
GroupBox5.Visible:=True;
GroupBox6.Visible:=False;
GroupBox1.Visible:=False;
end
else
if a1=3 then
begin
GroupBox5.Visible:=False;
GroupBox6.Visible:=True;
GroupBox1.Visible:=False;
end
else
begin
GroupBox5.Visible:=False;
GroupBox6.Visible:=False;
GroupBox1.Visible:=True;
end
end
end
end;
1000:
nume:=0;
for i:=1 to mmes do work^[i]{^}:=work^[i]{^}+hde;
iter:=iter+1;
for j:=1 to 2 do
begin
if j=1 then w:=work^[1]{^};
if j=2 then w:=work^[mmes]{^} ;
ab:=2*sqrt(3.*abs(1.-w));
w1:=ab;
for i:=1 to 10 do
begin
w2:=ab * sqrt(1.+w1);
if abs(w2-w1)<1.e-6 then goto 18;
w1:=w2
end;
18:
wkb:=(1.+w2)/w;
if j=1 then rpsi[1]^:=work^[2]{^}*wkb;
if j=2 then rpsi[mmes]^:=work^[m1]{^}*wkb
end;
b:=rpsi[mmes]^;
for i:=1 to m1 do
begin
npsi:=mmes-i;
a:=(12./work^[npsi]{^}-10.0)-1./b;
rpsi[npsi]^:=a;
b:=a;
if a<=1. then goto 30
end;
30:
mcross:=npsi;
rmcros:=a;
b:=rpsi[1]^;
for i:=2 to mcross do
begin
a:=(12./work^[i]{^}-10.0)-1./b;
rpsi[i]^:=a;
b:=a;
if a<0. then nume:=nume+1
end;
if (iter=1) and (nume<num) then writeln('error in initial Eh');
if nume=num then goto 50;
if (not bisec) then writeln('give left energy El');
if (succes) then goto 60;
if nume>num then eh:=enew;
if nume<num then el:=enew;
goto 80;
50:
m3:=mcross+1;
m4:=mcross-1;
a:=1.-0.5/work^[m3]{^};
a1:=a*(1./rpsi[m3]^-rpsi[mcross]^);
b:=1.-0.5/work^[m4]{^};
b1:=b*(rmcros-1./rpsi[m4]^);
de:=(a1-b1)*work^[mcross]{^};
if de>0. then eh:=enew;
if de<0. then el:=enew;
it:=it+1;
goto 70;
60:
it:=0;
70:
if it>=maxit then goto 100;
80:
eold:=enew;
delta:=(el-eh)*0.5;
enew:=eh+delta;
hde:=hsq12*(enew-eold);
succes:=false;
{writeln ('delta=',delta); }
if abs(delta)>1.e-10 then goto 1000;
{writeln('enew=',enew); }
if nume=num then goto 90;
writeln ('degeneration : num-state=nume-state ');
halt;
90:
{ lip:=true; }
100:
succes:=true;
1 из 3-х модулей, которые мне нужно оснастить ГУИ, оптимизировать и привнести абстракцию...
for i := 0 to high(vParagsChanges) do
begin
if vParNumIn < vParagsChanges[i].ParNo1 then
begin
inc(vParNumOut, vParagsChanges[i].ParNo1 - vParNumIn);
vParNumIn := vParagsChanges[i].ParNo1;
end;
if i < high(vParagsChanges) then
if (vParagsChanges[i].ParNo1+vParagsChanges[i].Range=vParagsChanges[i+1].ParNo1) and
((vParagsChanges[i].Kind=ckDelete) and (vParagsChanges[i+1].Kind=ckAdd)) then
{if vParagsChanges[i].Range = vParagsChanges[i+1].Range then}
begin
vUnitedPars := min(vParagsChanges[i].Range, vParagsChanges[i+1].Range);
if vParagsChanges[i+1].Range >= vUnitedPars then
vParagsChanges[i+1].Range := vParagsChanges[i+1].Range - vUnitedPars;
if vParagsChanges[i].Range >= vUnitedPars then
vParagsChanges[i].Range := vParagsChanges[i].Range - vUnitedPars;
for j := 0 to vUnitedPars-1 do
begin
FParsHL[vParNumIn+vInsertedCount1+j].Kind := pkReplaced;
vTagsInfoEx := GetTagsInfo(Editor1.Parag(vParNumIn+vInsertedCount1+j).Str);
FParsHL[vParNumIn+vInsertedCount1+j].ViewGroups := GetViewGroupsByChangeItems(vTagsInfoEx.TagKinds);
vTagsInfoEx := GetTagsInfo(Editor2.Parag(vParNumIn+vInsertedCount1+j).Str);
FParsHL[vParNumIn+vInsertedCount1+j].ViewGroups := FParsHL[vParNumIn+vInsertedCount1+j].ViewGroups + GetViewGroupsByChangeItems(vTagsInfoEx.TagKinds);
if vParagsChanges[i].InCard then
FParsHL[vParNumIn+vInsertedCount1+j].ViewGroups := FParsHL[vParNumIn+vInsertedCount1+j].ViewGroups + [vgCard]
else
FParsHL[vParNumIn+vInsertedCount1+j].ViewGroups := FParsHL[vParNumIn+vInsertedCount1+j].ViewGroups + [vgText];
end;
inc(vParNumIn, vUnitedPars);
inc(vParNumOut, vUnitedPars);
end;
case vParagsChanges[i].Kind of
ckAdd: begin
for j := 0 to vParagsChanges[i].Range-1 do
begin
vTmpParag := TRTFParag.Create(nil, False, False, raLeft{raRight});
FEditor1.InsPar(vParNumIn+vInsertedCount1+j, vTmpParag, false);
FParsHL[vParNumIn+vInsertedCount1+j].Kind := pkAdded;
vTagsInfoEx := GetTagsInfo(Editor2.Parag(vParNumOut+vInsertedCount2+j).Str);
if vParagsChanges[i].InCard then
FParsHL[vParNumIn+vInsertedCount1+j].ViewGroups := GetViewGroupsByChangeItems(vTagsInfoEx.TagKinds) + [vgCard]
else
FParsHL[vParNumIn+vInsertedCount1+j].ViewGroups := GetViewGroupsByChangeItems(vTagsInfoEx.TagKinds) + [vgText];
end;
inc(vInsertedCount1, vParagsChanges[i].Range);
inc(vParNumOut, vParagsChanges[i].Range);
end;
ckDelete: begin
for j := 0 to vParagsChanges[i].Range-1 do
begin
vTmpParag := TRTFParag.Create(nil, False, False, raLeft);
FEditor2.InsPar(vParNumOut+vInsertedCount2+j, vTmpParag, false);
FParsHL[vParNumOut+vInsertedCount2+j].Kind := pkDeleted;
vTagsInfoEx := GetTagsInfo(Editor1.Parag(vParNumIn+vInsertedCount1+j).Str);
if vParagsChanges[i].InCard then
FParsHL[vParNumOut+vInsertedCount2+j].ViewGroups := GetViewGroupsByChangeItems(vTagsInfoEx.TagKinds) + [vgCard]
else
FParsHL[vParNumOut+vInsertedCount2+j].ViewGroups := GetViewGroupsByChangeItems(vTagsInfoEx.TagKinds) + [vgText];
end;
inc(vInsertedCount2, vParagsChanges[i].Range);
inc(vParNumIn, vParagsChanges[i].Range);
end;
ckModify: begin
if (ciAlignment in vParagsChanges[i].ChangedItems) and (vParagsChanges[i].StrChanges = nil) then
FParsHL[vParNumIn+vInsertedCount1].Kind := pkAlignment
else
FParsHL[vParNumIn+vInsertedCount1].Kind := pkModified;
FParsHL[vParNumIn+vInsertedCount1].Changes := GetViewChanges(vParagsChanges[i].StrChanges);
FParsHL[vParNumIn+vInsertedCount1].ViewGroups := GetViewGroupsByChangeItems(vParagsChanges[i].ChangedItems);
if vParagsChanges[i].InCard then
if (ciText in vParagsChanges[i].ChangedItems) or (ciAlignment in vParagsChanges[i].ChangedItems) then
begin
FParsHL[vParNumIn+vInsertedCount1].ViewGroups := FParsHL[vParNumIn+vInsertedCount1].ViewGroups + [vgCard];
FParsHL[vParNumIn+vInsertedCount1].ViewGroups := FParsHL[vParNumIn+vInsertedCount1].ViewGroups - [vgText, vgAlignment];
for j := 0 to high(FParsHL[vParNumIn+vInsertedCount1].Changes) do
if FParsHL[vParNumIn+vInsertedCount1].Changes[j].ViewGroup = vgText then
FParsHL[vParNumIn+vInsertedCount1].Changes[j].ViewGroup := vgCard;
end;
inc(vParNumIn, 1);
inc(vParNumOut, 1);
end;
end;
end;
Такой г****код возник не за 1 день. Голову пришлось поломать основательно :))
Комментарии убраны, дабы не портить удовольствие от прочтения.
// Как Было
if even then
begin
if (GameAreaForm.Area.ColCount mod 2 = 0) then isstandart:=true
else isstandart:=false;
end
else
begin
if (GameAreaForm.Area.ColCount mod 2 = 0) then isstandart:=false
else isstandart:=true;
end;
// Как стало
if (even) then isstandart:=not(GameAreaForm.Area.ColCount mod 2 = 0);
else isstandart:=(GameAreaForm.Area.ColCount mod 2 = 0);
function find7(S:string):integer;
var
MyArray : TStringList;
n,i,sum, Resultat : integer;
MyInt : String;
begin
MyArray := TStringList.Create;
Trim(S); n:= 0;
while(Length(s)>0) do begin
Trim(S);
if(Pos(' ',S)=0) then begin
MyArray.Insert(n,Copy(S,1,Length(S)));
break;
end else begin
if(Copy(S,1,Pos(' ',S))=' ') then begin
Delete(S,1,(Pos(' ',S)));
end else begin
MyArray.Insert(n,Copy(S,1,Pos(' ',S)));
Delete(S,1,(Pos(' ',S)));
n:=n+1;
end;
end;
end;
Resultat := 0;
for i := 0 to MyArray.Count-1 do begin
MyInt := MyArray.Strings[i]; Sum := 0;
for n := 1 to Length(MyInt) do begin
if(MyInt[n]='7') then Sum := Sum + 1;
end;
if(Sum>=2) then Resultat := Resultat + 1;
end;
Result := Resultat;
end;