- 1
- 2
- 3
- 4
- 5
{Pascal}
function f( a: boolean ) : boolean;
begin
if a then return := f(a) else return := false;
end;
Нашли или выдавили из себя код, который нельзя назвать нормальным, на который без улыбки не взглянешь? Не торопитесь его удалять или рефакторить, — запостите его на говнокод.ру, посмеёмся вместе!
+100
{Pascal}
function f( a: boolean ) : boolean;
begin
if a then return := f(a) else return := false;
end;
При а - истина программа вылетит с переполненным стеком.
+106
procedure FirstStep (var Text: string);
// Удаление комментариев <!--...-->, переводов строк, раскрытие тегов <br>, удаление парных пробелов:
var
P: Integer;
State: Integer;
Idx: Integer;
Cnt: Integer;
NL: Boolean;
begin
State := 0;
P := 1;
NL := True;
while P <= Length (Text) do
begin
if Text[P] in [#9,#10,#13] then Text[P] := ' ';
case State of
0: case Text[P] of
'<': State := 1;
' ': begin
Idx := P;
State := 9;
end; { }
else NL := False;
end; {case}
1: case Text[P] of
'!': State := 2;
'b': State := 7;
else
begin
Dec (P);
State := 10;
end; {else}
end; {case}
2: if Text[P] <> '-' then
begin
Dec (P);
State := 10;
end else State := 3;
3: if Text[P] = '-' then
begin
Idx := P - 3;
State := 4;
end else
begin
Dec (P);
State := 10;
end; {if}
4: if Text[P] = '-' then State := 5;
5: if Text[P] = '-' then State := 6 else State := 4;
6: if Text[P] = '>' then
begin
Delete (Text, Idx, P - Idx + 1);
P := Idx - 1;
while (P >= 1) and (Text[P] = ' ') do Dec (P);
State := 0;
end else State := 4;
7: if Text[P] = 'r' then State := 8 else State := 0;
8: begin
if Text[P] = '>' then
begin
Text[P-3] := #13;
Text[P-2] := #10;
Delete (Text, P - 1, 2);
Dec (P, 2);
NL := True;
end; {if}
State := 0;
end; {8}
9: if Text[P] <> ' ' then
begin
Cnt := P - Idx;
if NL then
begin
Delete (Text, Idx, Cnt);
Dec (Idx);
end else if Cnt > 1 then Delete (Text, Idx, Cnt - 1);
P := Idx;
State := 0;
end; {if}
10: if Text[P] = '>' then State := 0;
end; {case}
Inc (P);
end; {while}
end; {proc FirstStep}
Кусок парсера HTML.
+112
sSQLTitle := 'SELECT CASE WHEN (VTSS.WRKORDNO IS NOT NULL)'
+' THEN VTSS.WRKORDNO ELSE VTW.WRKORDNO END AS '''+RSNumDok+''','
+' CASE WHEN (VTSS.GRECNO IS NOT NULL) THEN VTSS.GRECNO ELSE VTW.GRECNO END AS '''+RSSchet+''','
+' CASE WHEN (VTSS.STYPE IS NOT NULL) THEN VTSS.STYPE ELSE VTW.STYPE END AS '''+RSDocType+''','
+' CASE WHEN (VTSS.ServD IS NOT NULL) THEN VTSS.ServD ELSE VTW.ServD END AS '''+RSOpen+''','
+' CASE WHEN (VTSS.BILLD IS NOT NULL) THEN VTSS.BILLD ELSE VTW.BILLD END AS '''+RSClose+''','
+' CASE WHEN (VTSS.FULLNAME IS NOT NULL) THEN VTSS.FULLNAME ELSE VTW.FULLNAME END AS '''+RSClient+''','
+' CASE WHEN (VTSS.PAYNAME IS NOT NULL) THEN VTSS.PAYNAME ELSE VTW.PAYNAME END AS '''+RSPlatelwik+''','
+' CASE WHEN (VTSS.VIN IS NOT NULL) THEN VTSS.VIN ELSE VTW.VIN END AS '''+RSVIN+''','
+' CASE WHEN (VTSS.GNUMER IS NOT NULL) THEN VTSS.GNUMER ELSE VTW.GNUMER END AS '''+RSGosNomer+''','
+' CASE WHEN (VTSS.HSMANID IS NOT NULL) THEN VTSS.HSMANID ELSE VTW.HSMANID END AS '''+RSOtvetstv+''','
+' CASE WHEN (VTSS.LBACK IS NOT NULL) THEN VTSS.LBACK ELSE VTW.LBACK END AS '''+RSReturn+''','
+' VTSS.FULLSUMMA AS '''+RSSumItems+''','
+' VTW.SUMMA AS '''+RSSumWork+'''';
with DataMdl.adsADODataSet do
begin
Active := false;
if rbAllDate.Checked then
{$REGION 'Поиск по всем датам'}
case rgZakazType.ItemIndex of
0: //поиск по открытым заказ-заявкам
CommandText:=sSQLTitle
+' FROM'
+' (SELECT VTS.WRKORDNO,'
(...)
+' SUM(SUMMA) AS FULLSUMMA'
+' FROM'
+' (SELECT GS.WRKORDNO,'
+' GB.GRECNO,'
+ sSQLCase
+' CONVERT(varchar(10), GS.ServD, 104) AS ServD,'
+' CONVERT(varchar(10), GB.BILLD,104) AS BILLD,'
+' CASE'
+' WHEN C.FNAME IS NULL THEN C.LNAME'
+' WHEN C.LNAME IS NULL THEN C.FNAME'
+' ELSE C.FNAME+'' ''+C.LNAME'
+' END AS FULLNAME,'
// +' C.LNAME + '' '' + C.FNAME AS FULLNAME,'
+' CS.PNAME AS PAYNAME,'
+' V.SERIALNO AS VIN,'
+' V.LicNo AS GNUMER,'
+' GB.HSMANID,'
+' CASE WHEN (GS.CREDIT IS NULL)OR (GS.CREDIT <> 1) THEN NULL ELSE '''+RSReturn+''' END AS LBACK,'
+' GW.NAME,'
+' SUM(GW.ORDNUM) AS '''+RSQuantity+''','
+' SUM(GW.ORDNUM)*GW.UNITPR AS SUMMA'
+' FROM GSAL'+sPostfix+' GS LEFT OUTER JOIN'
+' GROW'+sPostfix+' GW ON (GS.GSALID = GW.GSALID) LEFT OUTER JOIN'
+' GBIL'+sPostfix+' GB ON (GS.GSALID = GB.GSALID) LEFT OUTER JOIN'
+' VEHI V ON (GS.VEHIID = V.VEHIID) LEFT OUTER JOIN'
+' CUST C ON (GS.CUSTNO = C.CUSTNO) RIGHT OUTER JOIN'
+' (SELECT CustNo, Lname + '' '' + FNAME AS PNAME'
+' FROM CUST WITH (NOLOCK))'
+' CS ON (GB.CUSTNO = CS.CUSTNO)'
+' WHERE (GS.STATUS = ''A'') AND (GW.RTYPE IN (1,2))' +sSQLWhere
+' GROUP BY GW.ITEM, GW.NAME, GW.UNITPR,'
+' GS.WRKORDNO, GB.Grecno, GS.ServD, GB.BILLD, C.LNAME, C.FNAME,'
+' CS.PNAME, V.SERIALNO, V.LicNo, GB.HSMANID, GS.CREDIT, GW.RECMTIME, GS.STYPE)'
+' VTS'
+' CASE WHEN (GS.CREDIT IS NULL)OR (GS.CREDIT <> 1) THEN NULL ELSE '''+RSReturn+''' END AS LBACK,'
+' GW.NAME,'
+' SUM(GW.ORDNUM) AS '''+RSQuantity+''','
+' SUM(GW.ORDNUM)*GW.UNITPR AS SUMMA'
+' FROM GSAL'+sPostfix+' GS LEFT OUTER JOIN'
+' GROW'+sPostfix+' GW ON (GS.GSALID = GW.GSALID) LEFT OUTER JOIN'
+' GBIL'+sPostfix+' GB ON (GS.GSALID = GB.GSALID) LEFT OUTER JOIN'
+' VEHI V ON (GS.VEHIID = V.VEHIID) LEFT OUTER JOIN'
+' CUST C ON (GS.CUSTNO = C.CUSTNO) RIGHT OUTER JOIN'
+' (SELECT CustNo, Lname + '' '' + FNAME AS PNAME'
...
... и так далее. НАПИСАНО ВРУЧНУЮ! Всего 420 строк, 4 подзапроса, связанных через full outer join. 16 тысяч записей 4-x ядерный mssql server обрабатывал таким образом минуты две. Я уж промолчу, как он по строкам в Delphi разбит...
Два дня врубался, как оно работает, переписал за два часа. 58 строк, включая каждое поле из select с новой строки :)
+102
boo:=false;
j:=length(edit1.text);
for i:=1 to stringgrid1.RowCount do begin
le:=length(stringgrid1.Cells[temp,i]);
if (temp=1) or (temp=5) then begin
if not (j>le) then
for npo:=1 to ((le-j)+1) do begin
str:=copy(Stringgrid1.cells[temp,i],npo,j);
str_po:=str;
if AnsiSameText(edit1.Text,str) then begin
stringgrid1.Row:=i;
boo:=true;
break;
end;
end;
end;
Еще один шедевр. Выполняет поиск введенного текста в Edit в заданой колонке Strinngrid'а.
+104
if doc_lang='UA' then filename:=ExtractFileDir(Application.ExeName)+'/docs/sales_slip_MS_UA.xlt';
if doc_lang='RU' then filename:=ExtractFileDir(Application.ExeName)+'/docs/sales_slip_MS_RU.xlt';
Классика жанра, и так пол проги((((((
+103
if Column.Field.AsInteger > 10 then
DrawGridCheckBox(DBGrid1.Canvas, Rect, true)
else
DrawGridCheckBox(DBGrid1.Canvas, Rect, false)
end;
Классика жанра
+95
program z1;
function func (x: real): real;
const e = 0.000000000000001; {15 знаков после запятой}
var f: real; {переменая для расчета двойного факториала}
i, k: integer; {счетчик проходов, i-общий, k-частный}
d: real; {добавляемая дельта}
y: real; {переменная искомого значения}
begin
y := 1.0;
i := 1;
repeat
f := 1; {----------}
k := i; {--расчет--}
while (k >= 2) do begin {-двойного-}
f := f * k; {факториала}
k := k - 2; {----------}
end; {----------}
d := 1; {---------------------}
for k := 1 to i do {считаем степень числа}
d := d * x; {---------------------}
d := d / f; {-----------------находим d-----------------}
if (d < e) then break; {проверяем ее на попадание в разрядную сетку}
y := y + d;
i := i + 1;
until (false);
func := y;
end;
var x: real;
begin
write ('Введите x: ');
readln (x);
writeln ('y = ', func (x):3:15);
end.
+106
FilterKey = 'Software'+'\'+CompanyName+'\'+ApplName+'\'+ApplVersion+'\'+SettingsKey+'\'+'FilterDD';
OrderKey = 'Software'+'\'+CompanyName+'\'+ApplName+'\'+ApplVersion+'\'+SettingsKey+'\'+'OrderDD';
NotepadKey = 'Software'+'\'+CompanyName+'\'+ApplName+'\'+ApplVersion+'\'+SettingsKey+'\'+'Notepad';
повторение - мать учения
+111
if Z = 'Pr'
then
case N of
1: Series1.Assign(Series33);
2: Series2.Assign(Series33);
3: Series3.Assign(Series33);
4: Series4.Assign(Series33);
5: Series5.Assign(Series33);
end
else
if Z = 'ST'
then
case N of
1: case Kolvo_Issledovanii of
1: Series6.Assign(Series33);
2: Series34.Assign(Series33);
3: Series59.Assign(Series33);
end;
//пропущено 15 строк
5: case Kolvo_Issledovanii of
1: Series10.Assign(Series33);
2: Series38.Assign(Series33);
3: Series63.Assign(Series33);
end;
end
else
if Z = 'TT'
then
case N of
1:
case Kolvo_Issledovanii of
1: Series11.Assign(Series33);
2: Series39.Assign(Series33);
3: Series64.Assign(Series33);
end;
//в том же духе, ещё 150 строк
//вообще-то, в том же духе - весь код, около 5000 строк
//...
//в другом месте:
Series1.Clear;
Series2.Clear;
Series3.Clear;
Series4.Clear;
//пропущено 75 строк
Series80.Clear;
Series81.Clear;
Series82.Clear;
Series83.Clear;
//...
Series1.Active:=false;
Series2.Active:=false;
Series3.Active:=false;
Series4.Active:=false;
//пропущено 75 строк
Series80.Active:=false;
Series81.Active:=false;
Series82.Active:=false;
Series83.Active:=false;
Фтопку ООП!
Такой вот диплом был сдан кем-то в прошлом году.
+87
var
s:string;
function f(s:string):string;
var
i:integer;
s1:string;
begin
s1:=#13#10's:=''';
for i:=1to length(s)do begin
if s[i]=#13then
s1:=s1+'''#13#10+'#13#10+''''
else if s[i]=''''then
s1:=s1+''''''
else if s[i]<>#10 then
s1:=s1+s[i];
f:=s1+''';'#13#10+
's:=s+f(s);'#13#10+
'write(s);'#13#10+
'close(output);'#13#10+
'end.';
end;
end;
begin
assign(output,'s.txt');
rewrite(output);
s:='var'#13#10+
's:string;'#13#10+
'function f(s:string):string;'#13#10+
'var'#13#10+
'i:integer;'#13#10+
's1:string;'#13#10+
'begin'#13#10+
's1:=#13#10''s:='''''';'#13#10+
'for i:=1to length(s)do begin'#13#10+
'if s[i]=#13then'#13#10+
's1:=s1+''''''#13#10+''#13#10+'''''''''#13#10+
'else if s[i]=''''''''then'#13#10+
's1:=s1+'''''''''''''#13#10+
'else if s[i]<>#10 then'#13#10+
's1:=s1+s[i];'#13#10+
'f:=s1+'''''';''#13#10+'#13#10+
'''s:=s+f(s);''#13#10+'#13#10+
'''write(s);''#13#10+'#13#10+
'''close(output);''#13#10+'#13#10+
'''end.'';'#13#10+
'end;'#13#10+
'end;'#13#10+
'begin'#13#10+
'assign(output,''s.txt'');'#13#10+
'rewrite(output);';
s:=s+f(s);
write(s);
close(output);
end.
Нарыл свой высер на тему программы, выводящей свой текст.