- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
function rand:LongInt;
{$IFOPT J-} {$J+} {$DEFINE NoJ} {$ENDIF}
const next:LongInt=1;
{$IFDEF NoJ} {$J-} {$UNDEF NoJ} {$ENDIF}
begin
next:=next*1103515245+12345;
Result:=(next div 65536) mod 32768;
end;
Нашли или выдавили из себя код, который нельзя назвать нормальным, на который без улыбки не взглянешь? Не торопитесь его удалять или рефакторить, — запостите его на говнокод.ру, посмеёмся вместе!
0
function rand:LongInt;
{$IFOPT J-} {$J+} {$DEFINE NoJ} {$ENDIF}
const next:LongInt=1;
{$IFDEF NoJ} {$J-} {$UNDEF NoJ} {$ENDIF}
begin
next:=next*1103515245+12345;
Result:=(next div 65536) mod 32768;
end;
Краткая инструкция как сделать static unsigned long int на Delphi.
0
procedure TF_dvij.rg_sortClick(Sender: TObject);
var k :Integer;
s,str1,str2 :string;
fl :boolean;
begin
if G.Columns[9].Visible then
begin
fl := Q_dvij.Active ;
with Q_dvij do
begin
if fl then k := RecNo;
if rg_sort.ItemIndex=0 then s:='order by obd,gr,exped,grot'
else
if rg_sort.ItemIndex=1 then s:='order by exped,gr,obd,grot'
else
if rg_sort.ItemIndex=2 then s:='order by gr,vp,exped,obd,grot'
else
if rg_sort.ItemIndex=3 then s:='order by id_korr,exped,obd,gr,grot'
else
if rg_sort.ItemIndex=4 then s:='order by grot,gr,exped,obd'
else
s:='order by strn,obd,gr,exped,grot';
if rg_sort.ItemIndex=3 then
begin
str1 := 'select vp, id_korr,' ; //100
str2 := 'group by 1,2,3,4,5,6,7,8' //192
end
else
begin
str1 := 'select vp, max(id_korr) as id_korr,' ;
str2 := 'group by 1,3,4,5,6,7,8'
end ;
Active:=false;
SQL.Delete(100);
SQL.Insert(100, str1 );
SQL.Delete(192);
SQL.Insert(192, str2 );
SQL.Delete(262);
SQL.Insert(262, s);
Active:= fl;
if fl then RecNo := k;
G.Refresh;
end;
end;
сортировОЧКА
0
Dim a As Double
'обнуление видимой величины
Private Sub Command1_Click()
Dim b As Double
Dim c As Double
b = Val(Replace(Text2.Text, ",", "."))
c = a - b
Text3.Text = c
End Sub
Private Sub Form_Load()
'ввод числа 3FBF9ADD3746F67D
a = 0.123456789012346 + 1E-16
Text1.Text = a
End Sub
Источник - https://www.softelectro.ru/ieee754.html
0
with ZeoDataModule.TmpZQuery do
begin
ZeoDataModule.TmpZQuery.Close;
ZeoDataModule.TmpZQuery.SQL.Clear;
//ZeoDataModule.TmpZQuery.SQL.Add(ZeoDataModule.zqryOstatki.SQL.Text);
ZeoDataModule.TmpZQuery.SQL.Add(TZQuery(dbgrdh1.DataSource.DataSet).SQL.Text);
// ZeoDataModule.Add ('select *,''0.00'' as str_cen from material.ostatki_by_skladid(:skladid,:dt) ');
ZeoDataModule.TmpZQuery.SQL.Add (' and tovarid in(');
for i:=0 to OstatkiTovarList.Count-1 do
begin
ZeoDataModule.TmpZQuery.SQL.Add(ostatkiTovarList[i]);
if i< OstatkiTovarList.Count-1 then
ZeoDataModule.TmpZQuery.SQL.Add(',');
end;
ZeoDataModule.TmpZQuery.SQL.Add(')');
ZeoDataModule.TmpZQuery.SQL.Add('order by nt');
//-------
zQ_sv:= DataModulePrint.frxDBDatasetOstatki.DataSet as TZQuery; // zqryOstatki
//--------
ZeoDataModule.zqrySumBySS.Close;
// ZeoDataModule.zqrySumBySS.SQL.Add('select :dt,:skladid from material.globalvalues where 1=2'); // пустой набор
ZeoDataModule.zqrySumBySS.ParamByName('skladid').Value:=10000; // несуществующий склад (пустой набор)
ZeoDataModule.zqrySumBySS.Open;
ZeoDataModule.TmpZQuery.ParamByName('skladid').Value:=zQ_sv.ParamByName('skladid').Value;
ZeoDataModule.TmpZQuery.ParamByName('dt').AsDate:=zQ_sv.ParamByName('dt').AsDate;
ZeoDataModule.TmpZQuery.Open;
DataModulePrint.frxDBDatasetOstatki.DataSet := ZeoDataModule.TmpZQuery;
DataModulePrint.frxDBDatasetSumBySS.DataSet := ZeoDataModule.zqrySumBySS;
if TypeVed=USUAL_OST then
begin
if Material.TypeSkladId = 4 then
DataModulePrint.ShowReport('ostatki.fr3')
else
DataModulePrint.ShowReport('ostatki.fr3')
end
else if TypeVed = NO_MOVE_OST then
DataModulePrint.ShowReport('ostatki_no_move.fr3');
ZeoDataModule.TmpZQuery.Close;
DataModulePrint.frxDBDatasetOstatki.DataSet := zQ_sv;
ZeoDataModule.zqrySumBySS.Close;
ZeoDataModule.zqrySumBySS.ParamByName('skladid').Value:=Material.Skladid;
// ZeoDataModule.zqrySumBySS.SQL.Clear();
// ZeoDataModule.zqrySumBySS.SQL.Add(sqlSum_sv);
ZeoDataModule.zqrySumBySS.Open;
end;
ZeoDataModule.TmpZQuery.SQL.Add(TZQuery( dbgrdh1.DataSource.DataSet).SQL.Text); - особенно понравилось. Молчу про "with".
0
procedure TOstatkiForm.FormCreate(Sender: TObject);
begin
OstatkiTovarList:=TStringList.Create;
btnShowToConvert.Enabled := False;
grpToConvert.Visible := False;
zqrToConvert.SQL.Text := 'select null::integer ostid,' + #13#10 +
'null::integer tovarid,' + #13#10 +
'null::bigint kt,' + #13#10 +
'null::varchar nt,' + #13#10 +
'null::numeric cen,' + #13#10 +
'null::integer edizmerid,' + #13#10 +
'null::varchar name_u,' + #13#10 +
'null::date income_period,' + #13#10 +
'null::varchar ss,' + #13#10 +
'null::numeric ost_doc,' + #13#10 +
'null::numeric gsum' + #13#10 +
'where 1=2';
end;
Без комментариев
0
if ( (sd<>5) ) and // (Material.ReadOnlySklad =false) and
(
( Material.TypeSkladId <> 4 ) and
(
// (Material.UserBuh = true ) or (Material.UserAdmin = true) or
(Material.DisunionByOssSb=true ) or ( credit_operation = true )
)
)
then
0
procedure TForm9.FormShow(Sender: TObject);
var i_vx,o_dt,o_kt: real;
begin
Form9.Caption:='Èòîãî ïî æóðíàëó';
r_:='select sum(sma) as ism from '+t_ss;
with DM.ZQ_all do
begin
Close;
SQL.Clear;
SQL.Add(r_);
SQL.Add('where ch=1 and gd*100+ms<:rgd*100+:rms');
Params.ParamByName('rgd').Value :=t_gd;
Params.ParamByName('rms').Value :=t_ms;
Open;
first;
if Eof=true then i_vx:=0 else i_vx:=Fieldbyname('ism').asfloat;
Close;
SQL.Clear;
SQL.Add(r_);
SQL.Add('where ch=2 and gd*100+ms<:rgd*100+:rms');
Params.ParamByName('rgd').Value :=t_gd;
Params.ParamByName('rms').Value :=t_ms;
Open;
first;
if not Eof=true then i_vx:=i_vx - Fieldbyname('ism').asfloat;
LEdit1.Text:=Format('%10.2f',[i_vx]);
Close;
SQL.Clear;
SQL.Add(r_);
SQL.Add('where ch=1 and gd*100+ms=:rgd*100+:rms');
Params.ParamByName('rgd').Value :=t_gd;
Params.ParamByName('rms').Value :=t_ms;
Open;
first;
if Eof=true then o_dt:=0 else o_dt:=Fieldbyname('ism').asfloat;
LEdit2.Text:=Format('%10.2f',[o_dt]);
Close;
SQL.Clear;
SQL.Add(r_);
SQL.Add('where ch=2 and gd*100+ms=:rgd*100+:rms');
Params.ParamByName('rgd').Value :=t_gd;
Params.ParamByName('rms').Value :=t_ms;
Open;
first;
if Eof=true then o_kt:=0 else o_kt:=Fieldbyname('ism').asfloat;
Close;
LEdit3.Text:=Format('%10.2f',[o_kt]);
LEdit4.Text:=Format('%10.2f',[i_vx+o_dt-o_kt]);
end;
end;
0
Program print_numbers_twice;
Procedure give(p: pptrint);
begin
if pptrint(p^) <> nil then begin
give(pptrint(p^));
writeln((p-1)^)
end
end;
Procedure take;
var n: ptrint;
begin
if not SeekEof then begin
read(n);
take
end else begin
n := (pptrint(@n)+1)^;
give(pptrint(n));
give(pptrint(n))
end
end;
Begin
take
End.
На входе программа получает неизвестное заранее количество целых чисел, разделенных пробельными символами, а затем выводит их два раза в том же порядке по одному числу в строке.
Очень простая и короткая программа. Я думаю, вам не составит труда понять, как она работает. Пишите в комментариях!
0
// Подгрузка аватаров пользователей.
Bmp:=TBitMap.Create; // Нет более изящного спооба узнать тип изображения, не колупаясь в заголовках. Расширение файлов картинок зачастую фиктивное.
try // Зная, что ава может быть только двух типов - jpg и png, я решил пойти конём.
Bmp.PixelFormat:=pf32Bit;
Bmp.Width:=16;
Bmp.Height:=16;
ImgConv:=True;
Png:=TPngObject.Create;
try
try
Comm.RawAvatar.Position:=0;
Png.LoadFromStream(Comm.RawAvatar);
Bmp.Canvas.StretchDraw(Bmp.Canvas.ClipRect, Png);
except
ImgConv:=False; // Ошибка конвертирования. Не совпал формат - идем дальше, пробуем jpg...
end;
finally
Png.Free; // нет смысла раскручивать стек, ибо исключение в любом случае отловится try..except
end;
if not ImgConv then
begin
Jpg:=TJPEGImage.Create;
try
try
Comm.RawAvatar.Position:=0;
Jpg.LoadFromStream(Comm.RawAvatar);
Bmp.Canvas.StretchDraw(Bmp.Canvas.ClipRect, Jpg);
except
end;
finally
Jpg.Free;
end;
end;
CommentList.Items[I].ImageIndex:=Images.AddMasked(Bmp, clWhite);
finally
Bmp.Free;
end;
end;
"Тут всюду густая вонь, то жаркая и приятная, то теплая и противная, но одинаково волнующая, особая, пароходная, мешающаяся с морской свежестью"
@ Бунин.
Теперь минусатор умеет подгружать авы.
https://dropmefiles.com/USQKW
0
function ReplaceHTMLSpec(First, Last, RepTo, RepEd:string):string;
var
I, P, St:Integer;
SS, Temp:string;
begin
Temp:='';
ST:=0;
while True do
begin
P:=Pos(First, Result);
if P = 0 then Break;
SS:=Copy(Result, ST, P-1)+RepTo;
Temp:=Temp+SS;
ST:=P+Length(First);
Result:=Copy(Result, ST, MaxInt);
P:=Pos(Last, Result);
if P > 0 then
begin
SS:=Copy(Result, 1, P-1)+RepEd;
Temp:=Temp+SS;
ST:=P+Length(Last);
SS:=Copy(Result,ST, MaxInt);
Temp:=Temp+SS;
end;
Result:=Temp;
end;
end;
function DecorateText(S:string):string;
const
Arr:array[0..3] of string=('<br>','"','<','>');
var
I, P, St:Integer;
SS, Temp:string;
begin
Result:=S;
for I:=0 to 3 do
Result:=StringReplace(Result, Arr[I], '',[rfreplaceall]);
Result:=StringReplace(Result,'<br />',#13#10,[rfreplaceall]);
Result:=StringReplace(Result,'<i>','[i]',[rfreplaceall]);
Result:=StringReplace(Result,'</i>','[/i]',[rfreplaceall]);
Result:=StringReplace(Result,'<b>','[b]',[rfreplaceall]);
Result:=StringReplace(Result,'</b>','[/b]',[rfreplaceall]);
Temp:='';
ST:=0;
{ while True do
begin
P:=Pos('<span style="font-size:10px;">', Result);
if P = 0 then Break;
SS:=Copy(Result, ST, P-1)+'[size=10]';
Temp:=Temp+SS;
ST:=P+Length('<span style="font-size:10px;">');
Result:=Copy(Result, ST, MaxInt);
P:=Pos('</span>', Result);
if P > 0 then
begin
SS:=Copy(Result, 1, P-1)+'[/size]';
Temp:=Temp+SS;
ST:=P+Length('</span>');
SS:=Copy(Result,ST, MaxInt);
Temp:=Temp+SS;
Result:=Temp;
end;
end; }
Result:=ReplaceHTMLSpec('<span style="color:white;">','</span>','[color=white]','[/color]');
Result:=ReplaceHTMLSpec('<span style="color:red;">','</span>','[color=red]','[/color]');
Result:=ReplaceHTMLSpec('<span style="color:blue;">','</span>','[color=blue]','[/color]');
Result:=ReplaceHTMLSpec('<span style="color:green;">','</span>','[color=green]','[/color]');
Result:=ReplaceHTMLSpec('<pre><code class="">','</code></pre>','[code]','[/code]');
Result:=ReplaceHTMLSpec('<span style="font-size:10px;">','</span>','[size=10]','[/size]');
Result:=ReplaceHTMLSpec('<span style="font-size:15px;">','</span>','[size=15]','[/size]');
Result:=ReplaceHTMLSpec('<span style="font-size:20px;">','</span>','[size=20]','[/size]');
Result:=ReplaceHTMLSpec('<span style="text-decoration:underline;">','</span>','[u]','[/u]');
Result:=ReplaceHTMLSpec('<span style="text-decoration:line-through;">','</span>','[s]','[/s]');
Result:=ReplaceHTMLSpec('<span style="text-decoration:blink;">','</span>','[blink]','[/blink]');
end;
Пахнет селёдкой. Ой блять, забыл подмыться.