Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Потрепаться";
Текущий архив: 2004.04.11;
Скачать: [xml.tar.bz2];

Вниз

О провилах хорошего тона в программировании.   Найти похожие ветки 

 
Rouse_ ©   (2004-04-07 13:23) [80]

> [78] Alex Konshin ©   (07.04.04 13:19)
Ну так я ж не вникал - просто указал на излишнюю захламленность кода, которую обычно убираю при помощи with...


 
Rouse_ ©   (2004-04-07 13:23) [80]

> [78] Alex Konshin ©   (07.04.04 13:19)
Ну так я ж не вникал - просто указал на излишнюю захламленность кода, которую обычно убираю при помощи with...


 
SoftX   (2004-04-07 13:28) [81]

>>Agent13 ©   (07.04.04 12:53) [60]
>>Присоединяюсь. Здесь на форуме мастера очень часто критикуют чей-то код, а примера как НАДО писать я так и не видел. Очень хотелось бы посмотреть.

Ну мне в принципе была полезна критика именно моего кода, и его недостатков, так как часто я ориентируюсь на скорость работы и функциональность, а не на красивость исходников. Теперь буду стараться учесть и это. Я думаю, что мастера тоже код не очень хорошо пишут, иногда, думаю, жертвуют функциональности за счет красивости...


 
SoftX   (2004-04-07 13:28) [81]

>>Agent13 ©   (07.04.04 12:53) [60]
>>Присоединяюсь. Здесь на форуме мастера очень часто критикуют чей-то код, а примера как НАДО писать я так и не видел. Очень хотелось бы посмотреть.

Ну мне в принципе была полезна критика именно моего кода, и его недостатков, так как часто я ориентируюсь на скорость работы и функциональность, а не на красивость исходников. Теперь буду стараться учесть и это. Я думаю, что мастера тоже код не очень хорошо пишут, иногда, думаю, жертвуют функциональности за счет красивости...


 
}|{yk ©   (2004-04-07 13:30) [82]

А я код вообще не форматирую. Для этого в Delphi есть DelForEx,
для оракловских скриптов - в SQL Navigator Source Formatter
Получается правильное и красивое оформление. А если ктото чскажет что лучше ручками форматировать, то это будет бред - зачем будучи программистом не упрощать себе жизнь?


 
}|{yk ©   (2004-04-07 13:30) [82]

А я код вообще не форматирую. Для этого в Delphi есть DelForEx,
для оракловских скриптов - в SQL Navigator Source Formatter
Получается правильное и красивое оформление. А если ктото чскажет что лучше ручками форматировать, то это будет бред - зачем будучи программистом не упрощать себе жизнь?


 
Dmitriy O. ©   (2004-04-07 13:32) [83]


> SoftX   (07.04.04 12:06)

http://dmitriyo.narod.ru/Skrin/kod.jpg

Да такой код трудно понять :))))


 
Dmitriy O. ©   (2004-04-07 13:32) [83]


> SoftX   (07.04.04 12:06)

http://dmitriyo.narod.ru/Skrin/kod.jpg

Да такой код трудно понять :))))


 
Alex Konshin ©   (2004-04-07 13:34) [84]

Ты не учитываешь
а) стоимость поддержки твоего кода (а все время, "съэкономленное" тобой будет просто ничто, по сравнению с тем, сколько ты сам или другие люди потратят на разбор твоего кода).
б) стиль позволяет избегать ошибок и упрощает отладку. Я, собственно, тебе указал именно на эти недостатки.


 
Alex Konshin ©   (2004-04-07 13:34) [84]

Ты не учитываешь
а) стоимость поддержки твоего кода (а все время, "съэкономленное" тобой будет просто ничто, по сравнению с тем, сколько ты сам или другие люди потратят на разбор твоего кода).
б) стиль позволяет избегать ошибок и упрощает отладку. Я, собственно, тебе указал именно на эти недостатки.


 
DiamondShark ©   (2004-04-07 13:34) [85]


if (found=True) then with UserInfo, MainData.UserQuery do
begin
 LOGIN := FieldByName("LOGIN").AsString;
 USERNAME := FieldByName("USERNAME").AsString;
 CANDELETEFAX := FieldByName("CANDELETEFAX").AsInteger;
 IMMORTAL := FieldByName("IMMORTAL").AsInteger;
 CANGETFAX := FieldByName("CANGETFAX").AsInteger;
 ADMINISTRATOR := FieldByName("ADMINISTRATOR").AsInteger;
 //
 ReadCarrentSid := True;
end


ЗЫ
Var Username:String;
var CUsername:longword;
Var TSid,Sid:PSID;
var Csid:longword;
var Domain:String;
Var Cdomain:longword;
Var PUse:SID_NAME_USE;
Var BlobStream:TStream;
var i:integer;
var found:boolean;

if (found=True)

Тяжёлое наследие жабы?


 
DiamondShark ©   (2004-04-07 13:34) [85]


if (found=True) then with UserInfo, MainData.UserQuery do
begin
 LOGIN := FieldByName("LOGIN").AsString;
 USERNAME := FieldByName("USERNAME").AsString;
 CANDELETEFAX := FieldByName("CANDELETEFAX").AsInteger;
 IMMORTAL := FieldByName("IMMORTAL").AsInteger;
 CANGETFAX := FieldByName("CANGETFAX").AsInteger;
 ADMINISTRATOR := FieldByName("ADMINISTRATOR").AsInteger;
 //
 ReadCarrentSid := True;
end


ЗЫ
Var Username:String;
var CUsername:longword;
Var TSid,Sid:PSID;
var Csid:longword;
var Domain:String;
Var Cdomain:longword;
Var PUse:SID_NAME_USE;
Var BlobStream:TStream;
var i:integer;
var found:boolean;

if (found=True)

Тяжёлое наследие жабы?


 
Внук ©   (2004-04-07 13:36) [86]

>>Rouse_ ©   (07.04.04 13:23) [80]
 А я вот за использование with кроме самых простейших случаев караю расстрелом через повешение. О чем, впрочем, неоднократно говорил, переубедить ни у кого не получилось.


 
Внук ©   (2004-04-07 13:36) [86]

>>Rouse_ ©   (07.04.04 13:23) [80]
 А я вот за использование with кроме самых простейших случаев караю расстрелом через повешение. О чем, впрочем, неоднократно говорил, переубедить ни у кого не получилось.


 
}|{yk ©   (2004-04-07 13:37) [87]

Игорю Шевченко:
посмотрел вашу программу "СуперМаркет"
Скажите, а зачем вам было изобретать велосипед?
Есть же специальные языки и среды для моделирования таких процессов. GPSS например.


 
}|{yk ©   (2004-04-07 13:37) [87]

Игорю Шевченко:
посмотрел вашу программу "СуперМаркет"
Скажите, а зачем вам было изобретать велосипед?
Есть же специальные языки и среды для моделирования таких процессов. GPSS например.


 
sniknik ©   (2004-04-07 13:39) [88]

хотите посмотреть на действительно ужастный код? или форматирование это как сказать. посмотрите этот, и все ваши претензии покажутся детским лепетом. ;о))
http://delphi.chertenok.ru/forum/my_download.php?tema=del&action=show&id=172
а мне приходилось его еще и разбирать. ;о) (там глюк был, возможно не один но мне хватило. про глюк в ридми написано)


 
sniknik ©   (2004-04-07 13:39) [88]

хотите посмотреть на действительно ужастный код? или форматирование это как сказать. посмотрите этот, и все ваши претензии покажутся детским лепетом. ;о))
http://delphi.chertenok.ru/forum/my_download.php?tema=del&action=show&id=172
а мне приходилось его еще и разбирать. ;о) (там глюк был, возможно не один но мне хватило. про глюк в ридми написано)


 
Игорь Шевченко ©   (2004-04-07 13:49) [89]

}|{yk ©   (07.04.04 13:37)

1) Вопрос к Джеффри Рихтеру (это его пример, переведенный мной на Delphi)
2) Иллюстрация работы с объектами синхронизации в многопоточном приложении


 
Игорь Шевченко ©   (2004-04-07 13:49) [89]

}|{yk ©   (07.04.04 13:37)

1) Вопрос к Джеффри Рихтеру (это его пример, переведенный мной на Delphi)
2) Иллюстрация работы с объектами синхронизации в многопоточном приложении


 
passlight ©   (2004-04-07 13:56) [90]

DiamondShark ©   (07.04.04 13:34) [85]
Похоже на VBA...


 
passlight ©   (2004-04-07 13:56) [90]

DiamondShark ©   (07.04.04 13:34) [85]
Похоже на VBA...


 
Romkin ©   (2004-04-07 13:59) [91]

Внук ©  (07.04.04 13:36) [86]
ну-ну

 with TCustomFrameShowAnswerClass(FindClass(FrameClassName)).Create(Self) do
 begin
   Parent := self;
   Align := alClient;
   ...
 end;

И не убедишь ты меня, что with - это плохо. Конструкция есть в языке, следовательно - пользуем :)
Единственная причина непользования - неудобно просматривать при отладке? Но у меня пошаговая отладка с просмотром переменных самый крайний случай. Обычно хватает пары точек останова, ну и Ctrl+Alt+W :)

sniknik ©  (07.04.04 13:39) [88] ААААА!!! :)))


 
Romkin ©   (2004-04-07 13:59) [91]

Внук ©  (07.04.04 13:36) [86]
ну-ну

 with TCustomFrameShowAnswerClass(FindClass(FrameClassName)).Create(Self) do
 begin
   Parent := self;
   Align := alClient;
   ...
 end;

И не убедишь ты меня, что with - это плохо. Конструкция есть в языке, следовательно - пользуем :)
Единственная причина непользования - неудобно просматривать при отладке? Но у меня пошаговая отладка с просмотром переменных самый крайний случай. Обычно хватает пары точек останова, ну и Ctrl+Alt+W :)

sniknik ©  (07.04.04 13:39) [88] ААААА!!! :)))


 
Rouse_ ©   (2004-04-07 14:01) [92]

> [86] Внук ©   (07.04.04 13:36)
Не в моих правилах кого-то разубеждать.

к примеру не буду я писать везде IP.<параметр>
вместо
   with IP do
   begin
     Ttl := 1;
     Tos := 0;
     IPFlags := 0;
     OptSize := 0;
     Options := nil;
   end;


Полностью все окаймлять в функции - тут тоже смотря какая функция.
Обычно я это делаю когда нет неоднозначности выполнения кода...


 
Rouse_ ©   (2004-04-07 14:01) [92]

> [86] Внук ©   (07.04.04 13:36)
Не в моих правилах кого-то разубеждать.

к примеру не буду я писать везде IP.<параметр>
вместо
   with IP do
   begin
     Ttl := 1;
     Tos := 0;
     IPFlags := 0;
     OptSize := 0;
     Options := nil;
   end;


Полностью все окаймлять в функции - тут тоже смотря какая функция.
Обычно я это делаю когда нет неоднозначности выполнения кода...


 
SoftX   (2004-04-07 14:02) [93]

>>DiamondShark ©   (07.04.04 13:34) [85]
>>Тяжёлое наследие жабы?

Вообще-то я писал и на Жабе и на C++ и на Ada и на Асме  и на Прологе..., так что после изучения довольно немалого количества языков у меня сформировался свой стиль, возможно кривой, но мне все равно на чем писать(только FoxPro ненавижу). В принципе многим более непонятна логика моей программы, чем код. Так как многие вещи я реализую(для ускорения) так как обычный программист делать не стал бы, но в каждом данном случае это является более целесообразным, чем нормальный подход. Хоть это и затрудняет удобочитаемость кода, код ориентирован на одного человека...


 
SoftX   (2004-04-07 14:02) [93]

>>DiamondShark ©   (07.04.04 13:34) [85]
>>Тяжёлое наследие жабы?

Вообще-то я писал и на Жабе и на C++ и на Ada и на Асме  и на Прологе..., так что после изучения довольно немалого количества языков у меня сформировался свой стиль, возможно кривой, но мне все равно на чем писать(только FoxPro ненавижу). В принципе многим более непонятна логика моей программы, чем код. Так как многие вещи я реализую(для ускорения) так как обычный программист делать не стал бы, но в каждом данном случае это является более целесообразным, чем нормальный подход. Хоть это и затрудняет удобочитаемость кода, код ориентирован на одного человека...


 
Rouse_ ©   (2004-04-07 14:06) [94]

> [88] sniknik ©   (07.04.04 13:39)
Тебе только за попытку разобраться в ЭТОМ (боюсь назвать коде) нужно давать орден Героя Соц Труда, и Красную Звезду на все пузо :)))))


 
Rouse_ ©   (2004-04-07 14:06) [94]

> [88] sniknik ©   (07.04.04 13:39)
Тебе только за попытку разобраться в ЭТОМ (боюсь назвать коде) нужно давать орден Героя Соц Труда, и Красную Звезду на все пузо :)))))


 
Игорь Шевченко ©   (2004-04-07 14:10) [95]


> код ориентирован на одного человека...


Это и есть показатель неудобочитаемого кода. При увольнении, допустим, этого человека, его код с большой долей вероятности придется переписывать, если потребуется в нем что-либо исправлять или дополнять.


 
Игорь Шевченко ©   (2004-04-07 14:10) [95]


> код ориентирован на одного человека...


Это и есть показатель неудобочитаемого кода. При увольнении, допустим, этого человека, его код с большой долей вероятности придется переписывать, если потребуется в нем что-либо исправлять или дополнять.


 
Romkin ©   (2004-04-07 14:16) [96]

Кстати, а ведь неплохой вопрос...
имеем:

type
 TCustomFrameShowAnswer = class(TFrame)
 ...
 end;

 TFrameShowText = class(TCustomFrameShowAnswer)
 ...
 public
   constructor Create(AOwner: TComponent); override;  
 ...
 end;

 Вызов

 FrameClassName := "TFrameShowText";
 with TCustomFrameShowAnswerClass(FindClass(FrameClassName)).Create(Self) do
 begin
  Parent := self;
  Align := alClient;
  ...
 end;

Вопрос: конструктор Create какого класса будет вызван?


 
Romkin ©   (2004-04-07 14:16) [96]

Кстати, а ведь неплохой вопрос...
имеем:

type
 TCustomFrameShowAnswer = class(TFrame)
 ...
 end;

 TFrameShowText = class(TCustomFrameShowAnswer)
 ...
 public
   constructor Create(AOwner: TComponent); override;  
 ...
 end;

 Вызов

 FrameClassName := "TFrameShowText";
 with TCustomFrameShowAnswerClass(FindClass(FrameClassName)).Create(Self) do
 begin
  Parent := self;
  Align := alClient;
  ...
 end;

Вопрос: конструктор Create какого класса будет вызван?


 
mfender ©   (2004-04-07 14:19) [97]

panov ©   (07.04.04 12:37)
>mfender ©   (07.04.04 12:23) [38]
хотя бы тот же банальный 2 пробела перед begin
2 пробела не перед begin вставляются, а в строке, следующей после begin:


А вот я обычно пишу так:
function MyFuncDelta: Boolean;
begin
if a>b then
  begin
    Result := a - b;
  end
else
  begin
    Result := b - a;
  end;
end;


Я не прав?


 
mfender ©   (2004-04-07 14:19) [97]

panov ©   (07.04.04 12:37)
>mfender ©   (07.04.04 12:23) [38]
хотя бы тот же банальный 2 пробела перед begin
2 пробела не перед begin вставляются, а в строке, следующей после begin:


А вот я обычно пишу так:
function MyFuncDelta: Boolean;
begin
if a>b then
  begin
    Result := a - b;
  end
else
  begin
    Result := b - a;
  end;
end;


Я не прав?


 
Внук ©   (2004-04-07 14:20) [98]

>>Romkin ©   (07.04.04 13:59) [91]
 Попробую изложить свои соображения. Чтение такого кода подразумевает знание структуры используемых (иногда - специфических) VCL-классов. Что не является обязательным для чтения этого кода другим человеком (не автором), не говоря уже о собственноручно написанных классах. Поиск на всякий случай наличие в проекте глобальных переменных Parent и Align тоже не добавляет положительных эмоций. Не говоря уже о том, когда with применяется для нескольких объектов или вложенный with.
 Оператор goto тоже есть в языке, так и что?
 Когда сам начинал писать на С++, долго ругался по поводу отсутствия там with (до этого на TP7.0 писал). А потом понял всю прелесть, когда пришлось разбираться в сотнях килобайт чужого кода.
 Перешел на Delphi - теперь для меня with не существует.


 
Внук ©   (2004-04-07 14:20) [98]

>>Romkin ©   (07.04.04 13:59) [91]
 Попробую изложить свои соображения. Чтение такого кода подразумевает знание структуры используемых (иногда - специфических) VCL-классов. Что не является обязательным для чтения этого кода другим человеком (не автором), не говоря уже о собственноручно написанных классах. Поиск на всякий случай наличие в проекте глобальных переменных Parent и Align тоже не добавляет положительных эмоций. Не говоря уже о том, когда with применяется для нескольких объектов или вложенный with.
 Оператор goto тоже есть в языке, так и что?
 Когда сам начинал писать на С++, долго ругался по поводу отсутствия там with (до этого на TP7.0 писал). А потом понял всю прелесть, когда пришлось разбираться в сотнях килобайт чужого кода.
 Перешел на Delphi - теперь для меня with не существует.


 
Игорь Шевченко ©   (2004-04-07 14:20) [99]


> конструктор Create какого класса будет вызван?


TFrameShowText - он же виртуальный


 
Игорь Шевченко ©   (2004-04-07 14:20) [99]


> конструктор Create какого класса будет вызван?


TFrameShowText - он же виртуальный


 
olookin ©   (2004-04-07 14:21) [100]

[32] Игорь Шевченко ©   (07.04.04 12:09)
SoftX   (07.04.04 12:06)
> говорят тяжелый,
Справедливо говорят.

А про это что скажете?

procedure TEQAPbase.EqapAllsizediagram1Click(Sender: TObject);
var Form: TForm;
   Chart: TChart;
   dataser,trendser: TLineSeries;
   i,j,n: integer;
   str: array of string;
   a,s: string;
   lst: TStringList;
   curdate: TDate;
   vals: TIntegerArray;
   p: PChar;
   m: TDoubleArray;
   pm: PDoubleArray;
   psource,pdest: PChartSeries;
   source,dest: TChartSeries;
begin
 Form:=TForm.Create(Application);
 with Form do begin Caption:="EqapAll execution file size diagram";
 BorderIcons:=[biSystemMenu]; BorderStyle:=bsSingle;
 Width:=500; Height:=200; Position:=poScreenCenter; end;
 Chart:=TChart.Create(Form);
 with Chart do begin Parent:=Form; Align:=alClient;
 MarginTop:=3;  MarginBottom:=1; MarginLeft:=1; MarginRight:=3;
 View3D:=false; BevelInner:=bvNone; BevelOuter:=bvNone;
 Title.Visible:=false; Legend.Visible:=false;
 BackWall.Brush.Style:=bsSolid; BackWall.Color:=clWhite;
 with LeftAxis do begin LabelsFont.Size:=6; Grid.Visible:=false;
 Title.Caption:="Size, kB"; Title.Font.Size:=6; BorderWidth:=2; end;
 with BottomAxis do begin LabelsFont.Size:=6; Grid.Visible:=false;
 Title.Caption:="Date"; Title.Font.Size:=6;
 DateTimeFormat:="dd.MM.yyyy"; end;
 dataser:=TLineSeries.Create(Chart);
 with dataser do begin ParentChart:=Chart;
 XValues.DateTime:=true; SeriesColor:=clRed; LinePen.Width:=2;
 with Pointer do begin Visible:=true; Style:=psCircle;
 VertSize:=3; HorizSize:=3; Brush.Color:=clRed;
 Pen.Color:=clBlack; end; end;
 trendser:=TLineSeries.Create(Chart);
 with trendser do begin ParentChart:=Chart; XValues.DateTime:=true;
 SeriesColor:=clBlack; LinePen.Width:=2; end; end;

 for i:=0 to Chart.SeriesCount-1 do Chart.Series[i].Clear;
 if FileExists(dir+"\System\SizeDiagram.eqs") then begin
 i:=0; curdate:=0; lst:=TStringList.Create;
 lst.LoadFromFile(dir+"\System\SizeDiagram.eqs");
 for j:=0 to lst.Count-1 do begin a:=lst.Strings[j];
 s:=Copy(a,1,Pos("=",a)-1); n:=StrToInt(Copy(a,Pos("=",a)+1,Length(a)));
 if StrToDate(s)<>curdate then begin SetLength(vals,i+1); vals[i]:=n;
 Chart.Series[0].AddXY(StrToDate(s),trunc(vals[i]/1000));
 SetLength(str,i+1); str[i]:=a; curdate:=StrToDate(s); Inc(i); end else
 str[i-1]:=a; end; lst.Clear;
 for i:=0 to Length(str)-1 do lst.Add(str[i]);
 lst.SaveToFile(dir+"\System\SizeDiagram.eqs");
 pm:=@m; source:=TChartSeries.Create(nil); source.Assign(dataser);
 dest:=TChartSeries.Create(nil); dest.Assign(trendser);
 psource:=@source; pdest:=@dest;
 PolynomialRegression(nil,nil,psource,pdest,3,pm,clBlack,p);
 trendser.Assign(dest); m:=nil; pm:=nil;
 psource:=nil; source.Free; pdest:=nil; dest.Free;
 ChartMinMax(Chart); end; vals:=nil; str:=nil; Form.ShowModal;
 dataser.Clear; dataser.Free; trendser.Clear; trendser.Free;
 Chart.FreeAllSeries; Chart.Destroy; Form.Destroy; lst.Clear; lst.Free;
end;

PS: я жуть как не люблю длинные листинги - мне нравится когда все перед глазами. Распишите представленное выше по правилам оформления кода, и у вас получится страниц 10 в доковском документе, размер шрифта 12.


 
olookin ©   (2004-04-07 14:21) [100]

[32] Игорь Шевченко ©   (07.04.04 12:09)
SoftX   (07.04.04 12:06)
> говорят тяжелый,
Справедливо говорят.

А про это что скажете?

procedure TEQAPbase.EqapAllsizediagram1Click(Sender: TObject);
var Form: TForm;
   Chart: TChart;
   dataser,trendser: TLineSeries;
   i,j,n: integer;
   str: array of string;
   a,s: string;
   lst: TStringList;
   curdate: TDate;
   vals: TIntegerArray;
   p: PChar;
   m: TDoubleArray;
   pm: PDoubleArray;
   psource,pdest: PChartSeries;
   source,dest: TChartSeries;
begin
 Form:=TForm.Create(Application);
 with Form do begin Caption:="EqapAll execution file size diagram";
 BorderIcons:=[biSystemMenu]; BorderStyle:=bsSingle;
 Width:=500; Height:=200; Position:=poScreenCenter; end;
 Chart:=TChart.Create(Form);
 with Chart do begin Parent:=Form; Align:=alClient;
 MarginTop:=3;  MarginBottom:=1; MarginLeft:=1; MarginRight:=3;
 View3D:=false; BevelInner:=bvNone; BevelOuter:=bvNone;
 Title.Visible:=false; Legend.Visible:=false;
 BackWall.Brush.Style:=bsSolid; BackWall.Color:=clWhite;
 with LeftAxis do begin LabelsFont.Size:=6; Grid.Visible:=false;
 Title.Caption:="Size, kB"; Title.Font.Size:=6; BorderWidth:=2; end;
 with BottomAxis do begin LabelsFont.Size:=6; Grid.Visible:=false;
 Title.Caption:="Date"; Title.Font.Size:=6;
 DateTimeFormat:="dd.MM.yyyy"; end;
 dataser:=TLineSeries.Create(Chart);
 with dataser do begin ParentChart:=Chart;
 XValues.DateTime:=true; SeriesColor:=clRed; LinePen.Width:=2;
 with Pointer do begin Visible:=true; Style:=psCircle;
 VertSize:=3; HorizSize:=3; Brush.Color:=clRed;
 Pen.Color:=clBlack; end; end;
 trendser:=TLineSeries.Create(Chart);
 with trendser do begin ParentChart:=Chart; XValues.DateTime:=true;
 SeriesColor:=clBlack; LinePen.Width:=2; end; end;

 for i:=0 to Chart.SeriesCount-1 do Chart.Series[i].Clear;
 if FileExists(dir+"\System\SizeDiagram.eqs") then begin
 i:=0; curdate:=0; lst:=TStringList.Create;
 lst.LoadFromFile(dir+"\System\SizeDiagram.eqs");
 for j:=0 to lst.Count-1 do begin a:=lst.Strings[j];
 s:=Copy(a,1,Pos("=",a)-1); n:=StrToInt(Copy(a,Pos("=",a)+1,Length(a)));
 if StrToDate(s)<>curdate then begin SetLength(vals,i+1); vals[i]:=n;
 Chart.Series[0].AddXY(StrToDate(s),trunc(vals[i]/1000));
 SetLength(str,i+1); str[i]:=a; curdate:=StrToDate(s); Inc(i); end else
 str[i-1]:=a; end; lst.Clear;
 for i:=0 to Length(str)-1 do lst.Add(str[i]);
 lst.SaveToFile(dir+"\System\SizeDiagram.eqs");
 pm:=@m; source:=TChartSeries.Create(nil); source.Assign(dataser);
 dest:=TChartSeries.Create(nil); dest.Assign(trendser);
 psource:=@source; pdest:=@dest;
 PolynomialRegression(nil,nil,psource,pdest,3,pm,clBlack,p);
 trendser.Assign(dest); m:=nil; pm:=nil;
 psource:=nil; source.Free; pdest:=nil; dest.Free;
 ChartMinMax(Chart); end; vals:=nil; str:=nil; Form.ShowModal;
 dataser.Clear; dataser.Free; trendser.Clear; trendser.Free;
 Chart.FreeAllSeries; Chart.Destroy; Form.Destroy; lst.Clear; lst.Free;
end;

PS: я жуть как не люблю длинные листинги - мне нравится когда все перед глазами. Распишите представленное выше по правилам оформления кода, и у вас получится страниц 10 в доковском документе, размер шрифта 12.


 
Игорь Шевченко ©   (2004-04-07 14:23) [101]

olookin ©   (07.04.04 14:21)

Его нельзя прочитать.


 
Игорь Шевченко ©   (2004-04-07 14:23) [101]

olookin ©   (07.04.04 14:21)

Его нельзя прочитать.


 
Style ©   (2004-04-07 14:26) [102]

[100]
Мдя...
А теперь пощитайте время на его прочтение до полного осознания что там происходит :)

А отладчик вы вообще не используете???
Или к такому виду исходник приводят после отладки :)


 
Style ©   (2004-04-07 14:26) [102]

[100]
Мдя...
А теперь пощитайте время на его прочтение до полного осознания что там происходит :)

А отладчик вы вообще не используете???
Или к такому виду исходник приводят после отладки :)


 
Romkin ©   (2004-04-07 14:27) [103]

Внук ©  (07.04.04 14:20) [98] Ты, эда, не усугубливай :))) Все дело в культуре: уверяю, в моем коде ты можешь быть уверен, что засады нет, переменные в блоке with либо принадлежат этому объекту, либо локальные данного метода (очень редко на F - приватные). Все.
Иначе ты увидишь полную расшифровку... Полностью там написано:

 with TCustomFrameShowAnswerClass(FindClass(FrameClassName)).Create(Self) do
 begin
   Parent := self;
   Align := alClient;
   ShowAnswers(DMTasks.cdsQuestion.FieldByName("QUEST_KIND").asString);
 end;

Неужели код плох для чтения?


 
Romkin ©   (2004-04-07 14:27) [103]

Внук ©  (07.04.04 14:20) [98] Ты, эда, не усугубливай :))) Все дело в культуре: уверяю, в моем коде ты можешь быть уверен, что засады нет, переменные в блоке with либо принадлежат этому объекту, либо локальные данного метода (очень редко на F - приватные). Все.
Иначе ты увидишь полную расшифровку... Полностью там написано:

 with TCustomFrameShowAnswerClass(FindClass(FrameClassName)).Create(Self) do
 begin
   Parent := self;
   Align := alClient;
   ShowAnswers(DMTasks.cdsQuestion.FieldByName("QUEST_KIND").asString);
 end;

Неужели код плох для чтения?


 
Anatoly Podgoretsky ©   (2004-04-07 14:28) [104]

mfender ©   (07.04.04 14:19) [97]
Право имеешь, но логически как бы добавляешь новые уровни вложенности, там где их нет.


 
Anatoly Podgoretsky ©   (2004-04-07 14:28) [104]

mfender ©   (07.04.04 14:19) [97]
Право имеешь, но логически как бы добавляешь новые уровни вложенности, там где их нет.


 
Style ©   (2004-04-07 14:31) [105]

>>[100]
Form:=TForm.Create(Application);
....
Form.Free;

таже беда где у тя try finally????


 
Style ©   (2004-04-07 14:31) [105]

>>[100]
Form:=TForm.Create(Application);
....
Form.Free;

таже беда где у тя try finally????


 
VAleksey ©   (2004-04-07 14:34) [106]


> olookin ©   (07.04.04 14:21) [100]

Вот матерится будет тот кому это придется разгребать.


 
VAleksey ©   (2004-04-07 14:34) [106]


> olookin ©   (07.04.04 14:21) [100]

Вот матерится будет тот кому это придется разгребать.


 
Внук ©   (2004-04-07 14:34) [107]

>>Romkin ©   (07.04.04 14:27) [103]
 Дык, я и говорю - если аккуратно :))) Иначе - расстрел, с занесением в личное дело. А что до меня касается - вообще не применяю такого.


 
Внук ©   (2004-04-07 14:34) [107]

>>Romkin ©   (07.04.04 14:27) [103]
 Дык, я и говорю - если аккуратно :))) Иначе - расстрел, с занесением в личное дело. А что до меня касается - вообще не применяю такого.


 
mfender ©   (2004-04-07 14:35) [108]


> Anatoly Podgoretsky ©   (07.04.04 14:28) [104]
> mfender ©   (07.04.04 14:19) [97]
> Право имеешь, но логически как бы добавляешь новые уровни
> вложенности, там где их нет.


Нет, ну приведенный пример, конечно, содержит лишние begin...end, для одного движения я, разумеется, не стану делать блок. Но в целом я так всегда делаю. Просто самому понятней (я - не программист, это мое хобби. Пишу только для себя. Вот последнее творение - админский клиент для сайта, БД обслуживать.) Да, еще когда пишу, обычно сразу пишу begin...end, чтобы потом не было мучительно трудно концы искать.


 
mfender ©   (2004-04-07 14:35) [108]


> Anatoly Podgoretsky ©   (07.04.04 14:28) [104]
> mfender ©   (07.04.04 14:19) [97]
> Право имеешь, но логически как бы добавляешь новые уровни
> вложенности, там где их нет.


Нет, ну приведенный пример, конечно, содержит лишние begin...end, для одного движения я, разумеется, не стану делать блок. Но в целом я так всегда делаю. Просто самому понятней (я - не программист, это мое хобби. Пишу только для себя. Вот последнее творение - админский клиент для сайта, БД обслуживать.) Да, еще когда пишу, обычно сразу пишу begin...end, чтобы потом не было мучительно трудно концы искать.


 
Anatoly Podgoretsky ©   (2004-04-07 14:38) [109]

Всегда пишу скобки парой, а begin...end это операторные скобки
Также поступаю и с другими конструкциями, типа try, case и подобное, уменьшает количество ошибок.


 
Anatoly Podgoretsky ©   (2004-04-07 14:38) [109]

Всегда пишу скобки парой, а begin...end это операторные скобки
Также поступаю и с другими конструкциями, типа try, case и подобное, уменьшает количество ошибок.


 
Style ©   (2004-04-07 14:42) [110]

Кстати сабж. интересный
О провилах! Или вилы хорошего тона :)


 
Style ©   (2004-04-07 14:42) [110]

Кстати сабж. интересный
О провилах! Или вилы хорошего тона :)


 
Anatoly Podgoretsky ©   (2004-04-07 14:44) [111]

Это грабли только плохие бывают, а вилы нет.


 
Anatoly Podgoretsky ©   (2004-04-07 14:44) [111]

Это грабли только плохие бывают, а вилы нет.


 
Style ©   (2004-04-07 14:49) [112]


> Это грабли только плохие бывают, а вилы нет.

А я и написал - вилы хорошего тона!


 
Style ©   (2004-04-07 14:49) [112]


> Это грабли только плохие бывают, а вилы нет.

А я и написал - вилы хорошего тона!


 
Vuk ©   (2004-04-07 14:53) [113]

to olookin ©   (07.04.04 14:21) [100]:
>А про это что скажете?
Эффект почти как от обфускатора.


 
Vuk ©   (2004-04-07 14:53) [113]

to olookin ©   (07.04.04 14:21) [100]:
>А про это что скажете?
Эффект почти как от обфускатора.


 
panov ©   (2004-04-07 14:57) [114]

>mfender ©

begin...end должны быть на том же уровне по вертикали со строкой с if, do, with и т.п.


 
panov ©   (2004-04-07 14:57) [114]

>mfender ©

begin...end должны быть на том же уровне по вертикали со строкой с if, do, with и т.п.


 
Style ©   (2004-04-07 14:57) [115]

Вот я щас на грабли чуть не наступил :)

Всего лишь то забыл в DotReplace result := ""; в
начале функции поставить :)
Дык у меня сейчас такие миллиарды в банк пошли :)


//Экспорт в БОГОРДСК БАНК!
procedure TFrm_Export.Bogorodsk();
var
 Str: TStringList;
 f,i: integer;

 function DotReplace(Str: string):string;
 var
  i: integer;
 begin
   for i := 1 to Length(Str) do
   begin
     if(Str[i] = ",") then
      result := result + "."
     else
      result := result + Str[i];
   end;

 end;
 
begin
 if(not SaveDialog.Execute) then Exit;

 if(FileExists(SaveDialog.FileName)) then
 begin
   if(MessageBox(Handle,"Файл существует. Заменить?","Сообщение", MB_ICONQUESTION or MB_YESNO) = ID_NO) then
    exit
   else
    deletefile(SaveDialog.FileName);
 end;

 Str := TStringList.Create();
 try

   qry_export.Close;
   qry_export.ParamByName("DateOper").AsDate := CurrentDate;
   qry_export.ParamByName("Flag").AsInteger := 0;
   qry_export.ParamByName("BankID").AsFLoat := qry_banklist.FieldByName("BankID").AsFLoat;
   
  OpenQueryWait(nil,qry_export,STATE_OPEN);

   qry_export.first();
   for i := 1 to qry_export.RecordCount do
   begin
    Str.Add("#"+IntTOStr(i)+"|PayDocRuXE");

     for f := 0 to Qry_Export.Fields.Count-1 do
     begin
      if(qry_export.fields[f].DataType = ftFloat) then
      begin
        Str.Add( WinToDos(DotReplace(qry_export.fields[f].AsString)));
      end
      else
        Str.Add( WinToDos(qry_export.fields[f].AsString));
     end;

    Str.Add(";end");
    qry_export.Next();
   end;

   Str.SaveToFile(SaveDialog.FileName);
   ShowMessage("Экспорт успешно завершен!" + CHR($0D) + CHR($0A) + "Экспортировано записей: " + IntToStr(qry_export.RecordCount));
 finally
   str.Free;
 end;
end;


 
Style ©   (2004-04-07 14:57) [115]

Вот я щас на грабли чуть не наступил :)

Всего лишь то забыл в DotReplace result := ""; в
начале функции поставить :)
Дык у меня сейчас такие миллиарды в банк пошли :)


//Экспорт в БОГОРДСК БАНК!
procedure TFrm_Export.Bogorodsk();
var
 Str: TStringList;
 f,i: integer;

 function DotReplace(Str: string):string;
 var
  i: integer;
 begin
   for i := 1 to Length(Str) do
   begin
     if(Str[i] = ",") then
      result := result + "."
     else
      result := result + Str[i];
   end;

 end;
 
begin
 if(not SaveDialog.Execute) then Exit;

 if(FileExists(SaveDialog.FileName)) then
 begin
   if(MessageBox(Handle,"Файл существует. Заменить?","Сообщение", MB_ICONQUESTION or MB_YESNO) = ID_NO) then
    exit
   else
    deletefile(SaveDialog.FileName);
 end;

 Str := TStringList.Create();
 try

   qry_export.Close;
   qry_export.ParamByName("DateOper").AsDate := CurrentDate;
   qry_export.ParamByName("Flag").AsInteger := 0;
   qry_export.ParamByName("BankID").AsFLoat := qry_banklist.FieldByName("BankID").AsFLoat;
   
  OpenQueryWait(nil,qry_export,STATE_OPEN);

   qry_export.first();
   for i := 1 to qry_export.RecordCount do
   begin
    Str.Add("#"+IntTOStr(i)+"|PayDocRuXE");

     for f := 0 to Qry_Export.Fields.Count-1 do
     begin
      if(qry_export.fields[f].DataType = ftFloat) then
      begin
        Str.Add( WinToDos(DotReplace(qry_export.fields[f].AsString)));
      end
      else
        Str.Add( WinToDos(qry_export.fields[f].AsString));
     end;

    Str.Add(";end");
    qry_export.Next();
   end;

   Str.SaveToFile(SaveDialog.FileName);
   ShowMessage("Экспорт успешно завершен!" + CHR($0D) + CHR($0A) + "Экспортировано записей: " + IntToStr(qry_export.RecordCount));
 finally
   str.Free;
 end;
end;


 
Dmitriy O. ©   (2004-04-07 15:00) [116]


> olookin ©   (07.04.04 14:21)
Да такой код  не смогла обработать до конца даже моя AvtoShema.
http://dmitriyo.narod.ru/Skrin/olookin.jpg


 
Dmitriy O. ©   (2004-04-07 15:00) [116]


> olookin ©   (07.04.04 14:21)
Да такой код  не смогла обработать до конца даже моя AvtoShema.
http://dmitriyo.narod.ru/Skrin/olookin.jpg


 
Игорь Шевченко ©   (2004-04-07 15:10) [117]


> function DotReplace(Str: string):string;
>  var
>   i: integer;
>  begin
>    for i := 1 to Length(Str) do
>    begin
>      if(Str[i] = ",") then
>       result := result + "."
>      else
>       result := result + Str[i];
>    end;
>
>  end;
>  


Result := StringReplace(Str, ",", ".", [rfReplaceAll]);


 
Игорь Шевченко ©   (2004-04-07 15:10) [117]


> function DotReplace(Str: string):string;
>  var
>   i: integer;
>  begin
>    for i := 1 to Length(Str) do
>    begin
>      if(Str[i] = ",") then
>       result := result + "."
>      else
>       result := result + Str[i];
>    end;
>
>  end;
>  


Result := StringReplace(Str, ",", ".", [rfReplaceAll]);


 
Nikolay M. ©   (2004-04-07 15:11) [118]


> olookin ©   (07.04.04 14:21) [100]

Ха-ха 3 раза :)
Это все детский сад. Учу, пока я жив:

#include
#include

#define m(x)(x#define g tj()-J
#define a(x)(x#define h(x)((x)#define f 9999
#define A return
#define H printf(
#define R double
#define U int
#define V for
#define b else
#define u while
#define B if
U v,w,Y= -1,W,J,p,F,o=f,M,N,K,X,YY,_,P[f],s(); typedef U(*L)(); L q[f]; tj(){
U S=m(v)+(m(w)
v?a(v)>1||w-Y||!q[J]:(w-Y  (w-Y*2||q[W+Y*(N+1)]|| (J>>K)-K+(Y-1)/
v?a(v)>2))||q[J];

} z(){ _=5; A v*w||g; } e(){ _= -2;
A(v*v*v-v||w*w*w-w)  (J-W-2||(W N)-4||(W>>K!=(Y-1?N:0))||
q[W+1]||q[W+2]||q[W+K]!=z||P[W+K]*YA(R)(rand() PZ)/(R)PZ; } l(){ _=K+1; A(v*w
a(v)-a(w))||g; } R UC(){ R i=0,d;
u((i+=d=VR())J=n; B(P[W]!=Y||P[J]==Y)A J+1; v=(J N)-(W N); w=(J>>K)-(W>>K); A
q[W]()||(x  QL(W,J,s)); } TT(W){ v=w=0; A q[W]()+K; } s(){ U j= -1,i; Y= -Y;
V(i=0; i
B(j>=0  !I(i,j,0))A Y= -Y; } A!(Y= -Y); } bb(){ _=1; A a(v*w)-2; } uv(){

V(v=0; v>K)==0){ U S=h(v N);
q[v]=!S?z:(S==1?bb:(S==2?c:(v N>K?l:e))); } b B(h(v>>K)==1)q[v]=k; b q[v]=0;
P[v]=!!q[v]*(28-v); } } y(){ U G=Y,i; J=0; V(i=0; ii%8||H"\n%4o ",i);
B((Y=P[i]=m(P[i]))   TT(i))H"%c ",_+93+Y*16); b H"- "); }
H"\n "); do H"%2d",i++ N); u(i N); Y=G; H"\n"); } O(W,J){
B((q[J]=q[W])==k  h(J>>K)==0)q[J]=l; B(q[W]==e)B(J-W==2)O(J+1,J-1); b
B(W-J==2)O(W-1,W+1); P[J]=P[W]; q[W]=0; P[W]=0; } QL(W,J,D)L D; { U
HQ=P[J],YX; L AJ=q[J],XY=q[W]; O(W,J); YX=D(); O(J,W); q[J]=AJ; q[W]=XY;
P[J]=HQ; A YX; } C(){ U i,j,BZ=0; V(i=0; i
r=h(i>>K)+h(i N),G=Y, S=Z==z?88:(Z==k?11 +r+(P[i]>K):(i>>K)):

(Z==l?124-((YY>K)!=(P[i]>0?0:N)))?M:0):
(Z==c?41+r:(Z==e?f-r-r:36+r+r)))); Y=P[i]; V(j=0; j++j)B(!I(i,j,0))S+=(P[j]?5:1);
BZ+=G==Y?S:-S; Y=G; } }
B(!(++X M-1))write(1,".",1); A BZ; } PX(){ U i,Q=0,XP=0,JZ=M*M,E= -f,t,S=o;
B(!F--)A++F+C(); V(i=0; i>K+K,i M-1,1)){ Y= -Y; o= -E; t=

-QL(i>>K+K,i M-1,PX); Y= -Y; B(t>E){ ++XP; Q=i; E=t; B(E>=S) A++F,E; } }

B(!XP)E=s()?-f+1:0; p=Q; A++F,E; } RZ(){ U i,j,T=0; V(; ; ){ y(); o=f; do{
H"\n%d %d %d %s ",X,T,C(),s()?"!":">"); fflush(stdout); }
u(scanf("%o%o", i, j)!=2||I(i,j,1));
O(i,j); y(); X=0; ++YY; Y= -Y; T=PX();

i=p>>(KB(T>M*M)H"\nHar har.\n"); } } main(ac,av)char**av; { long
B(T>time(),j=time( j);

R i=0; srand((U)j); V(M=0; MV(N=1; N*N1?atoi(av[1]):2; uv(); RZ(); }


Кстати, полностью рабочий код. =))


 
Nikolay M. ©   (2004-04-07 15:11) [118]


> olookin ©   (07.04.04 14:21) [100]

Ха-ха 3 раза :)
Это все детский сад. Учу, пока я жив:

#include
#include

#define m(x)(x#define g tj()-J
#define a(x)(x#define h(x)((x)#define f 9999
#define A return
#define H printf(
#define R double
#define U int
#define V for
#define b else
#define u while
#define B if
U v,w,Y= -1,W,J,p,F,o=f,M,N,K,X,YY,_,P[f],s(); typedef U(*L)(); L q[f]; tj(){
U S=m(v)+(m(w)
v?a(v)>1||w-Y||!q[J]:(w-Y  (w-Y*2||q[W+Y*(N+1)]|| (J>>K)-K+(Y-1)/
v?a(v)>2))||q[J];

} z(){ _=5; A v*w||g; } e(){ _= -2;
A(v*v*v-v||w*w*w-w)  (J-W-2||(W N)-4||(W>>K!=(Y-1?N:0))||
q[W+1]||q[W+2]||q[W+K]!=z||P[W+K]*YA(R)(rand() PZ)/(R)PZ; } l(){ _=K+1; A(v*w
a(v)-a(w))||g; } R UC(){ R i=0,d;
u((i+=d=VR())J=n; B(P[W]!=Y||P[J]==Y)A J+1; v=(J N)-(W N); w=(J>>K)-(W>>K); A
q[W]()||(x  QL(W,J,s)); } TT(W){ v=w=0; A q[W]()+K; } s(){ U j= -1,i; Y= -Y;
V(i=0; i
B(j>=0  !I(i,j,0))A Y= -Y; } A!(Y= -Y); } bb(){ _=1; A a(v*w)-2; } uv(){

V(v=0; v>K)==0){ U S=h(v N);
q[v]=!S?z:(S==1?bb:(S==2?c:(v N>K?l:e))); } b B(h(v>>K)==1)q[v]=k; b q[v]=0;
P[v]=!!q[v]*(28-v); } } y(){ U G=Y,i; J=0; V(i=0; ii%8||H"\n%4o ",i);
B((Y=P[i]=m(P[i]))   TT(i))H"%c ",_+93+Y*16); b H"- "); }
H"\n "); do H"%2d",i++ N); u(i N); Y=G; H"\n"); } O(W,J){
B((q[J]=q[W])==k  h(J>>K)==0)q[J]=l; B(q[W]==e)B(J-W==2)O(J+1,J-1); b
B(W-J==2)O(W-1,W+1); P[J]=P[W]; q[W]=0; P[W]=0; } QL(W,J,D)L D; { U
HQ=P[J],YX; L AJ=q[J],XY=q[W]; O(W,J); YX=D(); O(J,W); q[J]=AJ; q[W]=XY;
P[J]=HQ; A YX; } C(){ U i,j,BZ=0; V(i=0; i
r=h(i>>K)+h(i N),G=Y, S=Z==z?88:(Z==k?11 +r+(P[i]>K):(i>>K)):

(Z==l?124-((YY>K)!=(P[i]>0?0:N)))?M:0):
(Z==c?41+r:(Z==e?f-r-r:36+r+r)))); Y=P[i]; V(j=0; j++j)B(!I(i,j,0))S+=(P[j]?5:1);
BZ+=G==Y?S:-S; Y=G; } }
B(!(++X M-1))write(1,".",1); A BZ; } PX(){ U i,Q=0,XP=0,JZ=M*M,E= -f,t,S=o;
B(!F--)A++F+C(); V(i=0; i>K+K,i M-1,1)){ Y= -Y; o= -E; t=

-QL(i>>K+K,i M-1,PX); Y= -Y; B(t>E){ ++XP; Q=i; E=t; B(E>=S) A++F,E; } }

B(!XP)E=s()?-f+1:0; p=Q; A++F,E; } RZ(){ U i,j,T=0; V(; ; ){ y(); o=f; do{
H"\n%d %d %d %s ",X,T,C(),s()?"!":">"); fflush(stdout); }
u(scanf("%o%o", i, j)!=2||I(i,j,1));
O(i,j); y(); X=0; ++YY; Y= -Y; T=PX();

i=p>>(KB(T>M*M)H"\nHar har.\n"); } } main(ac,av)char**av; { long
B(T>time(),j=time( j);

R i=0; srand((U)j); V(M=0; MV(N=1; N*N1?atoi(av[1]):2; uv(); RZ(); }


Кстати, полностью рабочий код. =))


 
Игорь Шевченко ©   (2004-04-07 15:11) [119]


>  if(not SaveDialog.Execute) then Exit;
>
>  if(FileExists(SaveDialog.FileName)) then
>  begin
>    if(MessageBox(Handle,"Файл существует. Заменить?","Сообщение",
> MB_ICONQUESTION or MB_YESNO) = ID_NO) then
>     exit
>    else
>     deletefile(SaveDialog.FileName);
>  end;


SaveDialog.Options := SaveDialog.Options + [ofOverwritePrompt]


 
Игорь Шевченко ©   (2004-04-07 15:11) [119]


>  if(not SaveDialog.Execute) then Exit;
>
>  if(FileExists(SaveDialog.FileName)) then
>  begin
>    if(MessageBox(Handle,"Файл существует. Заменить?","Сообщение",
> MB_ICONQUESTION or MB_YESNO) = ID_NO) then
>     exit
>    else
>     deletefile(SaveDialog.FileName);
>  end;


SaveDialog.Options := SaveDialog.Options + [ofOverwritePrompt]


 
Игорь Шевченко ©   (2004-04-07 15:13) [120]

Nikolay M. ©   (07.04.04 15:11)

Suxx. Оцени:

/*
* Program to compute an approximation of pi
* by Brian Westley, 1988
* (requires pcc macro concatenation; try gcc -traditional-cpp)
*/

#define _ -F<00||--F-OO--;
int F=00,OO=00;
main(){F_OO();printf("%1.3f\n",4.*-F/OO/OO);}F_OO()
{
           _-_-_-_
      _-_-_-_-_-_-_-_-_
   _-_-_-_-_-_-_-_-_-_-_-_
 _-_-_-_-_-_-_-_-_-_-_-_-_-_
_-_-_-_-_-_-_-_-_-_-_-_-_-_-_
_-_-_-_-_-_-_-_-_-_-_-_-_-_-_
_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_
_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_
_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_
_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_
_-_-_-_-_-_-_-_-_-_-_-_-_-_-_
_-_-_-_-_-_-_-_-_-_-_-_-_-_-_
 _-_-_-_-_-_-_-_-_-_-_-_-_-_
   _-_-_-_-_-_-_-_-_-_-_-_
       _-_-_-_-_-_-_-_
           _-_-_-_
}


 
Игорь Шевченко ©   (2004-04-07 15:13) [120]

Nikolay M. ©   (07.04.04 15:11)

Suxx. Оцени:

/*
* Program to compute an approximation of pi
* by Brian Westley, 1988
* (requires pcc macro concatenation; try gcc -traditional-cpp)
*/

#define _ -F<00||--F-OO--;
int F=00,OO=00;
main(){F_OO();printf("%1.3f\n",4.*-F/OO/OO);}F_OO()
{
           _-_-_-_
      _-_-_-_-_-_-_-_-_
   _-_-_-_-_-_-_-_-_-_-_-_
 _-_-_-_-_-_-_-_-_-_-_-_-_-_
_-_-_-_-_-_-_-_-_-_-_-_-_-_-_
_-_-_-_-_-_-_-_-_-_-_-_-_-_-_
_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_
_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_
_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_
_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_
_-_-_-_-_-_-_-_-_-_-_-_-_-_-_
_-_-_-_-_-_-_-_-_-_-_-_-_-_-_
 _-_-_-_-_-_-_-_-_-_-_-_-_-_
   _-_-_-_-_-_-_-_-_-_-_-_
       _-_-_-_-_-_-_-_
           _-_-_-_
}



Страницы: 1 2 3 4 5 6 вся ветка

Форум: "Потрепаться";
Текущий архив: 2004.04.11;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.98 MB
Время: 0.08 c
1-1082642324
Romario
2004-04-22 17:58
2004.05.09
MDI форма из DLL


3-1081423941
AlexPal
2004-04-08 15:32
2004.05.09
Проблемы с Русским шрифтом


7-1079093913
Arm79
2004-03-12 15:18
2004.05.09
Перехват системных комбинаций клавиш для скринсайвера


3-1081952112
pashaz
2004-04-14 18:15
2004.05.09
Как узнать, что за база ?


8-1076164815
SiDr
2004-02-07 17:40
2004.05.09
Резкость BitMap а





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский