- 1
- 2
- 3
- 4
- 5
public interface ArchitectureUnit<T> {
public T release(Object... params);
}
Нашли или выдавили из себя код, который нельзя назвать нормальным, на который без улыбки не взглянешь? Не торопитесь его удалять или рефакторить, — запостите его на говнокод.ру, посмеёмся вместе!
+86
public interface ArchitectureUnit<T> {
public T release(Object... params);
}
максимальная гибкость
+86
public PriceComparator {
private PriceComparator INSTANCE;
public PriceComparator() {
INSTANCE = this;
}
public PriceComparator getInstance() {
return INSTANCE;
}
...
}
Singleton fail...
+86
procedure TForm1.FormCreate(Sender: TObject);
begin
panel27.Caption:=' ' + TimeToStr(time);
KeyPreview := true;
Form1.BorderStyle:=bsNone;
Form1.WindowState:=wsMaximized;
ShowWindow(Application.Handle, SW_HIDE);
end;
procedure TForm1.Timer2Timer(Sender: TObject);
var
Images: array[0..25] of Timage;
i,p:integer;
begin
{Цикл для прорисовки канвы,идея безумная но иначе она прорисовывается не полностью}
{РАБОТАЕТ? НЕ ТРОГАЙ!©}
for i:=0 to 26 do
begin
images[0]:=image1;
images[1]:=image2;
images[2]:=image3;
images[3]:=image4;
images[4]:=image5;
images[5]:=image6;
images[6]:=image7;
images[7]:=image8;
images[8]:=image9;
images[9]:=image10;
images[10]:=image11;
images[11]:=image12;
images[12]:=image13;
images[13]:=image14;
images[14]:=image15;
images[15]:=image16;
images[16]:=image17;
images[17]:=image18;
images[18]:=image19;
images[19]:=image20;
images[20]:=image21;
images[21]:=image22;
images[22]:=image23;
images[23]:=image24;
images[24]:=image25;
images[25]:=image26;
if i>25
then PageControl1.ActivePageIndex:=0
else begin
PageControl1.ActivePageIndex:=i;
{Квадраты,Круг,Дуги}
images[i].Canvas.rectangle(200,50,300,150);
images[i].Canvas.rectangle(200,200,300,300);
images[i].Canvas.rectangle(200,350,300,450);
...
{Дальше идут канвас код которых примерно строк 150}
...
end;
p:=Gauge1.Progress+4;
if p<100 then
Gauge1.Progress:=p;
end;
timer2.Enabled:=false;
Gauge1.Progress:=100;
end;
Изначально суть была в том, что при запуске программы окно разворачивалось на весь экран и вырисовывалось изображение на имаге(точнее несколько...штук 26),которые находились на пейдж контроле с 26 табщитами, но т.к в конструкторе окно формы не огромных размеров то вырисовывалось изображение размером с это маленькое окно оставляя огромный пробел справа и снизу.Позже проблема решилась и на активной вкладке пейджконтрола вырисовка была правильной, но на остальных неактивных такой же как и вначале. Пришлось при запуске переключать табщиты и поочередно рисовать на канве, все это происходит за 2-3 секунды каждый раз при запуске программы..другого решения увы не нашел.
+86
function IsMemoryCommitByAdress(const AAddress: Pointer): Boolean;
var
MemoryInfo: TMemoryBasicInformation;
begin
Result := False;
if not Assigned(AAddress) then
Exit;
VirtualQuery(AAddress, MemoryInfo, SizeOf(MemoryInfo));
Result := MemoryInfo.State and MEM_COMMIT <> 0;
end;
function IsPointerToVMT(const APointer: Pointer): Boolean;
var
VMTPointer, VMTPointerSelf: Pointer;
begin
Result := False;
if not IsMemoryCommitByAdress(APointer) then
Exit;
VMTPointer := APointer;
VMTPointerSelf := Pointer(Integer(VMTPointer) + vmtSelfPtr);
if not IsMemoryCommitByAdress(VMTPointer) then
Exit;
if not IsMemoryCommitByAdress(VMTPointerSelf) then
Exit;
if not IsMemoryCommitByAdress(PPointer(VMTPointerSelf)^) then
Exit;
Result := PPointer(VMTPointerSelf)^ = VMTPointer;
end;
function IsBadptr(apointer:pointer):boolean;
begin
Result := IsMemoryCommitByAdress(APointer) and IsPointerToVMT(PPointer(APointer)^);
end;
Функция, для определения качества указателя, в ситуации "один объект - несколько указателей".
Гк в том, что нет надежности - это все равно, что юзать IsBadReadPtr и аналогичные.
Почему-то никто не пытается использовать операторы is и as (я узнал о них благодаря Тарасу, спасибо ему), чтобы сравнить качество приведения.
+86
begin
if CheckListBox1.checked[2] or CheckListBox1.checked[3]
or CheckListBox2.checked[0] or CheckListBox2.checked[1] or CheckListBox2.checked[2]
or CheckListBox3.checked[1] or CheckListBox3.checked[2]
or CheckListBox5.checked[0] or CheckListBox5.checked[1] or CheckListBox5.checked[2]
then Form2.Memo1.Lines.Add('Генераторы шумовых сигналов');
if CheckListBox1.checked[2] or CheckListBox1.checked[3]
or CheckListBox2.checked[0] or CheckListBox2.checked[1] or CheckListBox2.checked[2]
or CheckListBox3.checked[1] or CheckListBox3.checked[2]
or CheckListBox5.checked[0] or CheckListBox5.checked[1] or CheckListBox5.checked[2]
then Form2.Memo1.Lines.Add('Низкочастотные генераторы сигналов');
if CheckListBox1.checked[2] or CheckListBox1.checked[3]
or CheckListBox2.checked[0] or CheckListBox2.checked[1] or CheckListBox2.checked[2]
or CheckListBox3.checked[1] or CheckListBox3.checked[2]
or CheckListBox5.checked[0] or CheckListBox5.checked[1] or CheckListBox5.checked[2]
then Form2.Memo1.Lines.Add('Усилители мощности');
if CheckListBox1.checked[2] or CheckListBox1.checked[3]
or CheckListBox2.checked[0] or CheckListBox2.checked[1] or CheckListBox2.checked[2]
or CheckListBox3.checked[1] or CheckListBox3.checked[2]
or CheckListBox5.checked[0] or CheckListBox5.checked[1] or CheckListBox5.checked[2]
then Form2.Memo1.Lines.Add('Акустические излучатели');
if CheckListBox1.checked[2] or CheckListBox1.checked[3]
or CheckListBox2.checked[0] or CheckListBox2.checked[1] or CheckListBox2.checked[2]
or CheckListBox3.checked[1] or CheckListBox3.checked[2]
or CheckListBox5.checked[0] or CheckListBox5.checked[1] or CheckListBox5.checked[2]
then Form2.Memo1.Lines.Add('Измерители шума и вибраций (шумомеры)');
if CheckListBox1.checked[0]
or CheckListBox2.checked[0] or CheckListBox2.checked[1] or CheckListBox2.checked[2]
or CheckListBox3.checked[1] or CheckListBox3.checked[2] or CheckListBox3.checked[0]
or CheckListBox5.checked[0] or CheckListBox5.checked[1] or CheckListBox5.checked[2]
then Form2.Memo1.Lines.Add('Селективные микровольтметры, измерительные приемники (анализаторы спектра)');
if CheckListBox1.checked[0] or CheckListBox1.checked[1] or CheckListBox1.checked[2] or CheckListBox1.checked[3]
or CheckListBox2.checked[0] or CheckListBox2.checked[1] or CheckListBox2.checked[2]
or CheckListBox3.checked[1] or CheckListBox3.checked[3]
or CheckListBox5.checked[0] or CheckListBox5.checked[1] or CheckListBox5.checked[2]
then Form2.Memo1.Lines.Add('Селективные нановольтметры');
if CheckListBox1.checked[2] or CheckListBox1.checked[2]
or CheckListBox2.checked[0] or CheckListBox2.checked[1] or CheckListBox2.checked[2]
or CheckListBox3.checked[1] or CheckListBox3.checked[2]
or CheckListBox5.checked[0] or CheckListBox5.checked[1] or CheckListBox5.checked[2]
then Form2.Memo1.Lines.Add('Измерительные микрофоны');
if CheckListBox1.checked[0] or CheckListBox1.checked[1]
or CheckListBox2.checked[0] or CheckListBox2.checked[1] or CheckListBox2.checked[2]
or CheckListBox3.checked[0]
or CheckListBox5.checked[0] or CheckListBox5.checked[1] or CheckListBox5.checked[2]
then Form2.Memo1.Lines.Add('Измерительные антенны');
if CheckListBox1.checked[2] or CheckListBox1.checked[3]
or CheckListBox2.checked[0] or CheckListBox2.checked[1] or CheckListBox2.checked[2]
or CheckListBox3.checked[1] or CheckListBox3.checked[2]
then Form2.Memo1.Lines.Add('Вибродатчики (акселерометры)');
if CheckListBox1.checked[0] or CheckListBox1.checked[1]
or CheckListBox2.checked[0] or CheckListBox2.checked[1] or CheckListBox2.checked[2]
or CheckListBox3.checked[0]
or CheckListBox5.checked[0] or CheckListBox5.checked[1] or CheckListBox5.checked[2]
then Form2.Memo1.Lines.Add('Измерительные пробники');
if CheckListBox1.checked[2] or CheckListBox1.checked[3]
or CheckListBox2.checked[0] or CheckListBox2.checked[1] or CheckListBox2.checked[2]
or CheckListBox3.checked[1] or CheckListBox3.checked[2]
or CheckListBox5.checked[0] or CheckListBox5.checked[1] or CheckListBox5.checked[2]
then Form2.Memo1.Lines.Add('Полосовые октавные фильтры со среднегеометри- ческими частотами 250, 500, 1000, 2000, 4000 Гц');
if CheckListBox1.checked[0] or CheckListBox1.checked[1]
or CheckListBox3.checked[0]
or CheckListBox5.checked[0] or CheckListBox5.checked[1] or CheckListBox5.checked[2]
then Form2.Memo1.Lines.Add('Осциллографы');
{ if Checklistbox6.Checked[0] or CheckListBox3.checked[0]
or CheckListBox4.checked[0]
then Form2.Memo1.Lines.Add('Программные средства формирования и контроля полномочий доступа в AC'); }
<font color="Red"> if CheckListBox2.checked[3] or CheckListBox2.checked[4]or CheckListBox2.checked[5]
or CheckListBox3.checked[0] or CheckListBox4.checked[0]
then Form2.Memo1.Lines.Add('Программные средства контроля целостности программ и программных комплексов');</font>
Вот так живут Америка с Европой.
http://www.delphisources.ru/forum/showthread.php?t=26142
+86
function RealToStr(X: Real; Count: Integer): String;//Count - количество цифр после запятой
var S: String;
N: Integer;
begin
S:=FloatToStr(X); //после запятой - длинная последовательность цифр
//DecimalSeparator - константа, содержащая истинный разделитель целой и дробной частей числа
N:=Pos(DecimalSeparator, S); //позиция запятой в строке
//вычисляем длину строки с нужным количеством знаков после запятой:
if N=0//если в строке нет запятой - это целое число, и
then N:=Length(S)//тогда просто выводим это число
else N:=N+Count;//иначе вычисляем длину строки
Result:=Copy(S, 1, N);//копируем часть строки в результат
end;
Говно на говне сидит и говном погоняет.
http://www.delphi-manual.ru/work-with-strings.php
+86
load 'regex'
f=: 13 : '((+./-.(1 2 3 4{y))+.(0{y))*.(5{y)'
a =: #:i.2^6
b =: f"(1) a
cc =: ":|:(|:a),(|:b)
cc1 =: (32+i.32){cc
cc2 =: (i.32){cc
ccc=:|:(|:cc2),(1 32$'*'),(|:cc1)
ccc=:('\*';'&&') rxrplc"1 (ccc)
(,&'\\ \hline')"1 (' ';' & ')rxrplc"1 (ccc)
Вот он, первый говнокод на J
+86
// сделать невидимым кол-во поиск
if Assigned(m_DBGrid) and Assigned(m_DBGrid.DataSource) and Assigned(m_DBGrid.DataSource.DataSet) then
TblBtnFind.Enabled := (m_DBGrid.DataSource.DataSet.RecordCount<>0);
+86
procedure TForm1.Colorize;
procedure SetStr(var s: string; const Style: TFontStyles; const Color, BackColor: Byte);
var
Format: TCharFormat2;
begin
If s<>'' Then
begin
FillChar(Format, SizeOf(Format), 0);
Format.cbSize := SizeOf(Format);
Format.dwMask:= CFM_BACKCOLOR or CFM_COLOR;
Format.crBackColor:= GetIRCColor(BackColor, True);
Format.crTextColor:= GetIRCColor(Color);
if RichEdit1.HandleAllocated then
SendMessage(RichEdit1.Handle, EM_SETCHARFORMAT, SCF_SELECTION,
LPARAM(@Format));
RichEdit1.SelAttributes.Style:= Style;
RichEdit1.SelText:= s;
RichEdit1.SelAttributes.Assign(RichEdit1.DefAttributes);
s:= ''
end;
end;
var
Color, BackColor: Byte;
Style: TFontStyles;
CurrStr: string;
I: Integer;
begin
Style:= [];
Color:= DefForeColor;
BackColor:= DefBackColor;
CurrStr:= '';
I:= 0;
While (I<Length(Str))do
begin
Inc(I);
case Str[I] of
#31:
begin
SetStr(CurrStr, Style, Color, BackColor);
If fsUnderLine in Style Then
Exclude(Style, fsUnderLine)
else
Include(Style, fsUnderLine);
end;
#2:
begin
SetStr(CurrStr, Style, Color, BackColor);
If fsBold in Style Then
Exclude(Style, fsBold)
else
Include(Style, fsBold);
end;
#15, #13:
begin
SetStr(CurrStr, Style, Color, BackColor);
Color:= DefForeColor;
BackColor:= DefBackColor;
end;
#3:
begin
SetStr(CurrStr, Style, Color, BackColor);
Inc(I);
Color:= DefForeColor;
If (Str[I] in ['0', '1'..'9'])Then
begin
Color:= StrToInt(Str[I]);
Inc(I);
If (Str[I] in ['0', '1'..'9'])Then
begin
Color:= StrToInt(IntToStr(Color)+Str[I]);
Inc(I)
end;
end;
If Str[I] = ',' Then //BackColor
begin
BackColor:= DefBackColor;
Inc(I);
If (Str[I] in ['0', '1'..'9'])Then
begin
BackColor:= StrToInt(Str[I]);
Inc(I);
If (Str[I] in ['0', '1'..'9'])Then
begin
BackColor:= StrToInt(IntToStr(BackColor)+Str[I]);
Inc(I)
end;
end;
end;
Dec(I)
end;
else
CurrStr:= CurrStr+Str[I]
end;
end;
SetStr(CurrStr, Style, Color, BackColor);
end;
Процедура раскрашивающая текст из Log-файла mIRC загруженого в TRichEdit на форме.
function GetIRCColor(const Color: Byte; const Back: Boolean=False): TColor;
begin
case Color of
0: Result:= clWhite;
1: Result:= clBlack;
2: Result:= clNavy;
3: Result:= clGreen;
4: Result:= clRed;
5: Result:= clMaroon;
6: Result:= clPurple;
7: Result:= $000080FF;
8: Result:= clYellow;
9: Result:= clLime;
10: Result:= clTeal;
11: Result:= clAqua;
12: Result:= clBlue;
13: Result:= clFuchsia;
14: Result:= clGray;
15: Result:= clSilver;
else
begin
If Back Then
Result:= clWhite
else
Result:= clBlack
end;
end;
end;
+86
@Override
public boolean equals(Object obj)
{
return obj != null && obj.equals(this);
}