Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2006.09.03;
Скачать: CL | DM;

Вниз

С такими проектами приходится работать   Найти похожие ветки 

 
Loginov Dmitry ©   (2006-08-11 19:15) [0]

Здоровая прога. Писалась до меня. Женщиной.
Вот пример кода:


type
 pCPayment = ^CPayment;
 CPayment = class
   m_ID       : integer;
   m_Name     : string;
   m_Type     : word; // нал\безнал
   m_Check    : byte; // тип чека
   m_Discount : double; // скидка
   m_Enabled  : boolean;
   m_State    : byte;
   //1 бит  1- удален
   //действия:
   //2- 1- новый
   //3- 1- изменить
   //4- 1- удалить
 end;

...

procedure CPaymentList.Load();
var
 item : pCPayment;
begin
 List.Clear;
 try
   new(item);
   item^ := CPayment.Create();
   item^.m_ID    := 0;
   item^.m_Name  := "наличные";
   item^.m_Type  := 0;
   item^.m_Check := 1;
   item^.m_Discount := 0;
   item^.m_Enabled  := true;
   item^.m_State    := 0;
   List.Add(item);

   new(item);
   item^ := CPayment.Create();
   item^.m_ID    := 1;
   item^.m_Name  := "безналичные";
   item^.m_Type  := 1;
   item^.m_Check := 3;
   item^.m_Discount := 0;
   item^.m_Enabled  := true;
   item^.m_State    := 0;
   List.Add(item);

...



Дальше - больше.

И все это в системе, которая уже ни один год используется во многих регионах России (в соответствующих организациях). Вносить изменения в такой проект просто страшно. И как оно еще работает...


 
Медведъ   (2006-08-11 19:18) [1]

а женщина тут причем
я видел код и покруче написаный мужчиной


 
Ega23 ©   (2006-08-11 19:18) [2]

Самое жуткое, что за такое кто-то столько бабла срубил...


 
Чапаев ©   (2006-08-11 19:21) [3]


> Ega23 ©   (11.08.06 19:18) [2]

Есть мнение, что кто-то срубил бабла ровно столько, сколько программа стОит... А чужое бабло считать не стоит, расстройства одни.


 
VictorT ©   (2006-08-11 19:23) [4]

Чапаев ©   (11.08.06 19:21) [3]
Уж не ты ли эта женщина? :D


 
jack128 ©   (2006-08-11 19:24) [5]

Ega23 ©   (11.08.06 19:18) [2]
Самое жуткое, что за такое кто-то столько бабла срубил...

совсем не обязательно. фирма искала программиста за 500 уёв.  ну и нашла соответственно девченку,ничего не знающую.


 
Vlad ©   (2006-08-11 19:25) [6]

Есть мнение, что
CPayment = class
должно выглядеть (а возможно и задумывалось) как
CPayment = record
а потом кому-то понадобилось переделать в класс (возможно для наследования)


 
Чапаев ©   (2006-08-11 19:28) [7]


> Уж не ты ли эта женщина? :D

к сожалению, нет. :-p


> jack128 ©   (11.08.06 19:24) [5]

+1

А по какому поводу негодование? Я кроме
>    m_Name     : string;
>    m_Type     : word; // нал\безнал
никакого криминала не заметил...


 
Jeer ©   (2006-08-11 19:29) [8]


> Loginov Dmitry ©   (11.08.06 19:15)


> Писалась до меня. Женщино


Запомни (на моем примере здесь): женщина есть для мужчины - табу.
Тут, на форуме.

Вне форума, можешь делать с ней все, что позволяет тебе мужское достоинство.

P.S.
Учти, что второй случай дискриминации женщины на форуме может быть включен, как и обещал McSim, в ограничение высказываний, вплоть до использования технических возможностей.
Тут.

Мне даже страшно представить, какие технические возможности могли попасть в руки, ноги, etc.. администраторов данного сайта.

Аннигиляция - это еще цветочки, повыерь.

Нам это надо ?


 
palva ©   (2006-08-11 19:30) [9]


> Vlad ©   (11.08.06 19:25) [6]
> должно выглядеть (а возможно и задумывалось) как
> CPayment = record


По-моему, задумывалось, как
CPayment = object
Возможно и было так написано, а потом кто-то решил переделать на классы, когда переписывал с доса на виндовз.


 
KilkennyCat ©   (2006-08-11 19:31) [10]

хорошо, что женщины есть...
А ба-а-бо-о-чка-а ... крылышками бяк-бяк-бяк-бяк... (с) всем известен.


 
ёж   (2006-08-11 19:32) [11]

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


 
Медведъ   (2006-08-11 19:34) [12]

а еще женщине нельзя за руль


 
Jeer ©   (2006-08-11 19:35) [13]


> Поясните новичку что тут не так.


Ошибка, как считает, автор сабжа - в женщине.
Подозреваю, что точка там была зряшной, а значит ошибка в Женщине.


 
Чапаев ©   (2006-08-11 19:35) [14]


> (с) всем известен.

(с) известен, а вот из какого фильма -- не могу вспомнить. Не подскажете? ;-)


> ошибка - работа через указатель

Конструктор не вызван, что некоторые могут посчитать за страшенную ошибку. ;-)


 
Vlad ©   (2006-08-11 19:36) [15]


> palva ©   (11.08.06 19:30) [9]

ну или так. А реализацию переделывать было лень человеку. Наверно кода слишком много к тому времени было написано :-)

В любом случае, ничего особо криминального, кроме необоснованного использования указателей я что-то тут не заметил...


 
jack128 ©   (2006-08-11 19:39) [16]

Чапаев ©   (11.08.06 19:35) [14]
(с) известен, а вот из какого фильма -- не могу вспомнить. Не подскажете? ;-)

ПОЗОР!!!!!!.  КАШМАР!!!!!!!

ЗЫ Обыкновенное чудо, Министр-администратор её пел..


 
DVM ©   (2006-08-11 19:39) [17]

Программа, я так понимаю работает? И выполняет возложенное на нее? Если да, то какая разница, какой у нее код? Если смотреть со стороны пользователя.


 
Чапаев ©   (2006-08-11 19:39) [18]

Во всём виноват Сухов. Это он освободил женщин Востока и провозгласил их "тоже величайшей ценностью".


 
jack128 ©   (2006-08-11 19:39) [19]

Чапаев ©   (11.08.06 19:35) [14]
Конструктор не вызван,

где не вызван?

> List.Clear;
> try
>   new(item);
>   item^ := CPayment.Create();
>   item^.m_ID    := 0;
>   item^.m_Name  := "наличные";
>   item^.m_Type  := 0;
>    item^.m_Check := 1;


 
jack128 ©   (2006-08-11 19:41) [20]

А.  Блин, вот еще вариант. CPayment = class. Девченка - СИшник.  и делала по аналогии с С++.


 
Чапаев ©   (2006-08-11 19:41) [21]

тьфу... Удаляюсь делать себе харакири...


 
guav ©   (2006-08-11 19:44) [22]

а в чём проблема ?
Ну допустим лишний уровень косвенности. Ну ещё не применены перечисления и множества.
Но почему бы этому не работать ?


 
Jeer ©   (2006-08-11 19:45) [23]


> Девченка - СИшник


Покажите сие чудо.
Желательно в анфас и профил.

Можно - prifile.
Не, интересно просто.


 
Джо ©   (2006-08-11 19:47) [24]

> [23] Jeer ©   (11.08.06 19:45)
> > Девченка - СИшник
> Покажите сие чудо.
> Желательно в анфас и профил.


http://alenacpp.blogspot.com/ пойдет?
Правда, С++. Но зато с фотографией.


 
jack128 ©   (2006-08-11 19:48) [25]

Jeer ©   (11.08.06 19:45) [23]
Можно - prifile.

http://forum.sources.ru/index.php?showuser=13699 .  AFAIR - системщик, какой то.  Низкоуровневая девченка, короче..  (это не она писала код, приведенный Димой ;-) )


 
Jeer ©   (2006-08-11 19:51) [26]

"Ну давайте, давайте знакомиться"

не, так не пойдет...
-no zoom on photo
-"Если нет интерфейса, это вовсе не значит, что интервал нельзя настроить. Нужно подредактировать"

Хм, кто против ?

Я - за.
Более того, интерфейс и интервал беру на себя.
Все остальное...


 
Jeer ©   (2006-08-11 19:52) [27]

Джо ©   (11.08.06 19:47) [24]

> http://alenacpp.blogspot.com/ пойдет?
> Правда, С++. Но зато с фотографией.


"Вешесказанное - к этому.


 
ёж   (2006-08-11 19:53) [28]

Гы... я тут ещё "про C#" Рихтера почитываю. Так там написано что такие лишние уровни косвенности автоматически компилятором (C#) создаются :)


 
ArtemESC ©   (2006-08-11 20:04) [29]

>>Джо ©   (11.08.06 19:47) [24]
>>http://www.blogger.com/profile/6478901
About Me  - уржался...


 
Джо ©   (2006-08-11 20:10) [30]

> [29] ArtemESC ©   (11.08.06 20:04)
> >>http://www.blogger.com/profile/6478901
> About Me  - уржался...

А что там смешного?!


 
Jeer ©   (2006-08-11 20:11) [31]

ArtemESC ©   (11.08.06 20:04) [29]


> About Me  - уржался...


Еще раз внятно и с расcтановкой.

Что тебе не пондравилось-  "about"  или "self about "женщина" " ?


 
ArtemESC ©   (2006-08-11 20:12) [32]

Джо ©   (11.08.06 20:10) [30]
А ты читал?


 
Джо ©   (2006-08-11 20:14) [33]

> [32] ArtemESC ©   (11.08.06 20:12)
> Джо ©   (11.08.06 20:10) [30]
> А ты читал?

Я всегда читаю страницы, ссылку на которые даю. А что?


 
ArtemESC ©   (2006-08-11 20:17) [34]

Джо

Ну я немного поправил адрес (с этой же страницы)...


 
tButton ©   (2006-08-11 20:21) [35]


> > About Me  - уржался...
>
> А что там смешного?!

меня туда вообще не пустили =(


 
IMHO ©   (2006-08-11 20:23) [36]

Если честно, я не могу понять таких вещей на http://alenacpp.blogspot.com/:

"Если вы хотите поддержать этот блог, киньте денежку на мой счет в системе Яндекс.Деньги, я буду вам безмерно благодарна. Счет ..."

Зачем это попрошайничество???


 
Jeer ©   (2006-08-11 20:24) [37]

ArtemESC ©   (11.08.06 20:17) [34]

Ты почитай прецендент.
Если будет непонятно - я смогу дополнить в любое время.
Даже без твоего согласия.
Даже без согласия..

http://delphimaster.net/view/15-1154760816/
http://delphimaster.net/view/15-1154760816/


 
ArtemESC ©   (2006-08-11 20:25) [38]

Jeer ©   (11.08.06 20:11) [31]
Именно self about "женщина" ...


 
Джо ©   (2006-08-11 20:29) [39]

> [38] ArtemESC ©   (11.08.06 20:25)
> Jeer ©   (11.08.06 20:11) [31]
> Именно self about "женщина" ...

Вероятно, тебе что-то другое показывают на странице http://www.blogger.com/profile/6478901, поскольку я не обнаружил на ней слов "self about "женщина"".


 
ArtemESC ©   (2006-08-11 20:48) [40]

>>Jeer ©   (11.08.06 20:24) [37]
>>я смогу дополнить в любое время.
Буду очень благодарен...


 
ArtemESC ©   (2006-08-11 20:53) [41]

Jeer ©   (11.08.06 20:24) [37]
 Помойму я не кого не оскорблял по половому признаку, если конечно, это
  имелось ввиду...


 
Медведъ   (2006-08-11 21:06) [42]

>ArtemESC ©   (11.08.06 20:53) [41]
женщина программист для джира сущ-во среднего рода
уж очень он их не любит :)


 
Медведъ   (2006-08-11 21:12) [43]

>Jeer
а вообще ты на модераторов не обижайся
трудная у них работа
вот опять начали сезон охоты на медведов, всячески преседуют меня по никовому признаку
скоро придется еще один твердый знак добавлять чует сердце мое


 
begin...end ©   (2006-08-11 21:19) [44]

Да, не все переступают пятидесятилетний рубеж без последствий... Уже второй случай, однако...


 
Медведъ   (2006-08-11 21:23) [45]

>begin...end ©   (11.08.06 21:19) [44]
хехе, интересно что будет с тобой на этом рубеже


 
begin...end ©   (2006-08-11 21:27) [46]

> Медведъ   (11.08.06 21:23) [45]

Мне тоже.


 
Карелин Артем ©   (2006-08-11 21:44) [47]

У меня в офисе 2 женщины: программист и WEB-мастер. Обе очень даже хорошо и продуманно творят программы


 
ArtemESC ©   (2006-08-11 21:50) [48]

Карелин Артем ©   (11.08.06 21:44) [47]
>>У меня в офисе 2 женщины: программист и WEB-мастер. Обе очень >>даже .хорошо и продуманно творят программы
У них нет каких небудь странностей?


 
Суслик ©   (2006-08-11 21:51) [49]

Это просто проект писанный изначально на турбо или борланд паскале, потом формально переведенный на delphi
imho


 
Карелин Артем ©   (2006-08-11 21:58) [50]

Вот код, написанный программистом. Авторское форматирование сохранено

procedure TfNastr.FormCreate(Sender: TObject);
begin  try  if fDmNadz.takod_progr.Active=False then
fDmNadz.takod_progr.Active:=True;  except
 begin    ShowMessage(OnErrorMessage);    Close;   end;  end;
end;

procedure TfNastr.btnOdbClick(Sender: TObject);
var i,j:Integer;filNam,filNam1:String;F:TextFile;rrr:Boolean;
    NameOld,NameNew,Izm:String;
begin try i:=fdmNadz.taKod_ProgrKOL_INS.Value; fUdos.DBGrid_Udos.DataSource:=nil;
fUdos.DBGrid_UdosA.DataSource:=nil; fUdos.DBGrid_OUd.DataSource:=nil;
fUdos.DBGrid_OudA.DataSource:=nil;
fUdos.taUd_f.Active:=False; fUdos.taUd_Af.Active:=False;
fUdos.taUdos.Active:=False; fUdos.taUdos_A.Active:=False;
fUdos.taGur_Udos.Active:=False; fUdos.taOUdos.Active:=False;
fUdos.taOUdos_A.Active:=False;  if FileExists("c:\nadzor\ondz.gdb") then
begin   with  Qobl_del do
 begin    SQL.Clear;    SQL.Add("Delete From udos");
  ExecSQL;    SQL.Clear;
  SQL.Add("Delete From UDOS_A");
  ExecSQL;
  end;// with
end // if exis
 else
 begin
  ShowMessage("Создание БД области прекращено.Отсутствует файл ONDZ.GDB");
 Exit;
 // тут надо или завершить приложение или все восстановить сетки табл
 end; // not FileExist

// тут новый виток
begin
// ShowMessage("Начинаем переименованиие ");
 j:=1;
  NameNew:="c:\nadzor\ndz.gdb";
 //NameNew:="ndz.gdb";
// Добавим все записи
 while j<i+1 do
 begin
 Izm:=IntToStr(j);
 NameOld:="c:\nadzor\"+Izm+"ndz.gdb";
 if FileExists(NameOld) then
  begin
  // 3-  переименовать 1NDZ.GDB в NDZ.GDB
 if fdmNadz.DbNadzor.Connected then fdmNadz.DbNadzor.Close;
 fdmNadz.DbNadzor.Connected:=False;
   DeleteFile(NameNew);
  AssignFile(F,NameOld);
 Rename(F,NameNew);
 fdmNadz.DbNadzor.Connected:=True;
 fdmNadz.DbNadzor.Open;
         // SQL.Add("Insert INTO ": ODB: UDOS" select * from ": NADZOR: UDOS"");
      fUdos.Move_Ud.Execute;  // run the batchmove
      fUdos.Move_UdA.Execute;
      J:=J+1;
 end      // if
else  J:=J+1;
 end;// while
end;//
// новый 3 виток
begin
ShowMessage("Выполнено слияние "+IntToStr(j)+" - БД");
// восстановим табл
fUdos.taUd_f.Active:=True;
fUdos.taUd_Af.Active:=True;
fUdos.taGur_Udos.Active:=True;
fUdos.taUdos.Active:=True;
fUdos.taUdos_A.Active:=True;
fUdos.taOUdos.Active:=True;
fUdos.taOUdos_A.Active:=True;
// восстановим сетки
fUdos.DBGrid_Udos.DataSource:=fUdos.dsUdos;
fUdos.DBGrid_UdosA.DataSource:=fUdos.dsOUdos_A;
fUdos.DBGrid_OUd.DataSource:=fUdos.dsOUdos;
fUdos.DBGrid_OudA.DataSource:=fUdos.dsOUdos_A;
//fUdos.DBGrid_Gur.DataSource:=fUdos.dsGur_Udos;
end;
except
  MessageDlg("Ошибка!! при слиянии БД!",mtWarning,[mbOk],0);
end; // try
end; // вся процедура -конец


 
Медведъ   (2006-08-11 22:02) [51]

бывает гораздо хуже


 
Kerk ©   (2006-08-11 22:04) [52]

Года полтора назад тут была моя ветка про суицид. И там был кусок исходника.

Так вот что я вам скажу.. фигня.. до того всем еще далекоооооооо..


 
Джо ©   (2006-08-11 22:08) [53]

> [52] Kerk ©   (11.08.06 22:04)

А шедевр не сохранился? :)


 
Суслик ©   (2006-08-11 22:09) [54]

а в чем проблема то?
кто нить исходники TCustomGrid разбирал?
Все вроде красиво нарисовано и глупостей очевидных нет.
Но очень нелегкий для понимания исходник.

Я это к тому, что форма не определяет содержание.


 
Медведъ   (2006-08-11 22:09) [55]

у меня на работе коллега стал писать код читающий строку из ком порта (сканер штрих кода)
для определения конца данных передаваемых устройством он использовал 2 таймера, замерял вообщем интервал кросавачег :)


 
Kerk ©   (2006-08-11 22:18) [56]

Джо ©   (11.08.06 22:08) [53]
А шедевр не сохранился? :)


Обладатели старых баз могут попробовать поискать мою ветку примерно позапрошлая зима, сабж "я на грани суицида". Самому будет интересно обновить впечатления :-)


 
Джо ©   (2006-08-11 22:22) [57]

> [56] Kerk ©   (11.08.06 22:18)

Нашел: :)

Kerk ©   (24.01.05 10:56)
Не могу больше разбирать подобный код!!!

TPole(TNapravl(TPch(TDorog(PointerDor.Objects[AfoDor]).PointerPCH.Objects[ AfoPch]).PointerNapr.Objects[AfoN]).Poin terPut.Objects[AfoPut]).KolKm:=0;
TPole(TNapravl(TPch(TDorog(PointerDor.Objects[AfoDor]).PointerPCH.Objects[AfoPch ]).PointerNapr.Objects[AfoN]).PointerPut .Objects[AfoPut]).KolPKm:=0;
for i:=0 to TPole(TNapravl(TPch(TDorog(PointerDor.Objects[AfoDor]).PointerPCH.Objects[AfoPch ]).PointerNapr.Objects[AfoN]).PointerPut .Objects[AfoPut]).PropKiloms.Count-2 do
begin
 if (TPropKm(TPole(TNapravl(TPch(TDorog(PointerDor.Objects[AfoDor]).PointerPCH.Objec ts[AfoPch]).PointerNapr.Objects[AfoN]).P ointerPut.Objects[AfoPut]).PropKiloms.Objects[i]).Prop) or
    (TPropKm(TPole(TNapravl(TPch(TDorog(PointerDor.Objects[AfoDor]).PointerPCH.Objec ts[AfoPch]).PointerNapr.Objects[AfoN]).P ointerPut.Objects[AfoPut]).PropKiloms.Objects[i]).Nest) then
  begin
   TPole(TNapravl(TPch(TDorog(PointerDor.Objects[AfoDor]).PointerPCH.Objects[AfoPch ]).PointerNapr.Objects[AfoN]).PointerPut .Objects[AfoPut]).KolPKm:=
    TPole(TNapravl(TPch(TDorog(PointerDor.Objects[AfoDor]).PointerPCH.Objects[AfoPch ]).PointerNapr.Objects[AfoN]).PointerPut .Objects[AfoPut]).KolPKm+1;
   j:=j+1;
  end
 else
  TPole(TNapravl(TPch(TDorog(PointerDor.Objects[AfoDor]).PointerPCH.Objects[AfoPch ]).PointerNapr.Objects[AfoN]).PointerPut .Objects[AfoPut]).KolKm:=
   TPole(TNapravl(TPch(TDorog(PointerDor.Objects[AfoDor]).PointerPCH.Objects[AfoPch ]).PointerNapr.Objects[AfoN]).PointerPut .Objects[AfoPut]).KolKm+1;
 TPropKm(TPole(TNapravl(TPch(TDorog(PointerDor.Objects[AfoDor]).PointerPCH.Object s[AfoPch]).PointerNapr.Objects[AfoN]).Po interPut.Objects[AfoPut]).PropKiloms.Objects[i]).Nom:=j;
end;
TPropKm(TPole(TNapravl(TPch(TDorog(PointerDor.Objects[AfoDor]).PointerPCH.Object s[AfoPch]).PointerNapr.Objects[AfoN]).Po interPut.Objects[AfoPut]).PropKiloms.Objects[
   TPole(TNapravl(TPch(TDorog(PointerDor.Objects[AfoDor]).PointerPCH.Objects[AfoPch ]).PointerNapr.Objects[AfoN]).PointerPut .Objects[AfoPut]).PropKiloms.Count-1]).Nom:=
 TPropKm(TPole(TNapravl(TPch(TDorog(PointerDor.Objects[AfoDor]).PointerPCH.Object s[AfoPch]).PointerNapr.Objects[AfoN]).Po interPut.Objects[AfoPut]).PropKiloms.Objects[
     TPole(TNapravl(TPch(TDorog(PointerDor.Objects[AfoDor]).PointerPCH.Objects[AfoPch ]).PointerNapr.Objects[AfoN]).PointerPut .Objects[AfoPut]).PropKiloms.Count-2]).Nom;
TPole(TNapravl(TPch(TDorog(PointerDor.Objects[AfoDor]).PointerPCH.Objects[AfoPch ]).PointerNapr.Objects[AfoN]).PointerPut .Objects[AfoPut]).KolKm:=
TPole(TNapravl(TPch(TDorog(PointerDor.Objects[AfoDor]).PointerPCH.Objects[AfoPch ]).PointerNapr.Objects[AfoN]).PointerPut .Objects[AfoPut]).KolKm*10;

Скажите что-нибудь приятное.. чтоб жить захотелось!!!


 
Kerk ©   (2006-08-11 22:24) [58]

Джо ©   (11.08.06 22:22) [57]

Оооо.. я снова рад, что сменил работу :)))


 
Джо ©   (2006-08-11 22:36) [59]

> [57] Джо ©   (11.08.06 22:22)

Вообще, подобный код смахивает на саботаж и диверсию :)


 
isasa ©   (2006-08-11 22:56) [60]

Медведъ   (11.08.06 22:09) [55]
2 таймера, замерял вообщем интервал кросавачег


А временной интервал получен экспериментальным путем?
Фундаментально.


 
Marser ©   (2006-08-11 23:15) [61]

> [55] Медведъ   (11.08.06 22:09)
> у меня на работе коллега стал писать код читающий строку
> из ком порта (сканер штрих кода)
> для определения конца данных передаваемых устройством он
> использовал 2 таймера, замерял вообщем интервал

Мама моя родная....


 
Дураг   (2006-08-12 00:19) [62]

procedure TNTDScreen.ShowShapes;
var i:integer;
var Oldcol:Tcolor;
var OldBrushColor:Tcolor;
var OldFontSize:integer;
var TopCord:Tcord;
var BottomCord:Tcord;
var Rect:TRect;
var Rectsize:integer;
begin
 Rectsize:=10;

 Oldcol:=WritedPicture.Bitmap.Canvas.Pen.Color;
 OldBrushColor:=WritedPicture.Bitmap.Canvas.Brush.Color;
 OldFontSize:=WritedPicture.Bitmap.Canvas.Font.Size;

If (NTDSystem.N_Shapes>0) then
 for i:=NTDSystem.N_Shapes downto 1 do
   begin

   if (CheckedItem.TypeOfItem=3)  and (CheckedItem.IDItem=NTDSystem.Shapes[i].ID) then
     WritedPicture.Bitmap.Canvas.Pen.Color:=clWhite
   else
     WritedPicture.Bitmap.Canvas.Pen.Color:=clBlack;

   WritedPicture.Bitmap.Canvas.Brush.Color:=NTDSystem.Shapes[i].Color;
   //
   Rect.Left:=NTDSystem.Shapes[i].PLeft+StartCord.X;
   Rect.Top:=NTDSystem.Shapes[i].PTop+StartCord.Y;
   Rect.Right:=NTDSystem.Shapes[i].PRight+StartCord.X;
   Rect.Bottom:=NTDSystem.Shapes[i].PBottom+StartCord.Y;
   //
   WritedPicture.Bitmap.Canvas.Rectangle(Rect);

   WritedPicture.Bitmap.Canvas.Pen.Color:=clBlack;
   WritedPicture.Bitmap.Canvas.Font.Size:=NTDSystem.Shapes[i].FontSize;
   //WritedPicture.Bitmap.Canvas.TextOut(Rect.Left+2,Rect.Top+2,NTDSystem.Shapes[i].Inscription);
   WritedPicture.Bitmap.Canvas.TextRect(Rect,Rect.Left+2,Rect.Top+2,NTDSystem.Shapes[i].Inscription);

   TopCord.X:=Rect.Left;
   TopCord.Y:=Rect.Top;
   BottomCord.X:=Rect.Right;
   BottomCord.Y:=Rect.Bottom;

   if (CheckedItem.TypeOfItem=3) and (CheckedItem.IDItem=NTDSystem.Shapes[i].ID) then
     begin
     WritedPicture.Bitmap.Canvas.Pen.Color:=clWhite;
     WritedPicture.Bitmap.Canvas.Brush.Color:=clLime;

     //первая шашечка
     Rect.Left:=TopCord.X-Rectsize;
     Rect.Top:=TopCord.Y-Rectsize;
     Rect.Right:=TopCord.X;
     Rect.Bottom:=TopCord.Y;
     WritedPicture.Bitmap.Canvas.Rectangle(Rect);
     //вторая шашечка
     Rect.Left:=BottomCord.X+Rectsize;
     Rect.Top:=TopCord.Y-Rectsize;
     Rect.Right:=BottomCord.X;
     Rect.Bottom:=TopCord.Y;
     WritedPicture.Bitmap.Canvas.Rectangle(Rect);
     //третья шашечка
     Rect.Left:=BottomCord.X+Rectsize;
     Rect.Top:=BottomCord.Y+Rectsize;
     Rect.Right:=BottomCord.X;
     Rect.Bottom:=BottomCord.Y;
     WritedPicture.Bitmap.Canvas.Rectangle(Rect);
     //четвертая шашечка
     Rect.Left:=TopCord.X-Rectsize;
     Rect.Top:=BottomCord.Y+Rectsize;
     Rect.Right:=TopCord.X;
     Rect.Bottom:=BottomCord.Y;
     WritedPicture.Bitmap.Canvas.Rectangle(Rect);
     end;
   end;

 WritedPicture.Bitmap.Canvas.Pen.Color:=Oldcol;
 WritedPicture.Bitmap.Canvas.Brush.Color:=OldBrushColor;
 WritedPicture.Bitmap.Canvas.Font.Size:=OldFontSize;
end;


Работает. Говорят, даже не очень страшный код...


 
Джо ©   (2006-08-12 00:21) [63]

> Работает. Говорят, даже не очень страшный код...

Код как код. With проставить и тогда в нем даже можно будет разобраться :)


 
Суслик ©   (2006-08-12 00:51) [64]

зачем разбираться в коде?
моем имо, что если стоит задача поднять безобразный код, то его нужно сразу приводить в божеский вид путем рефаторинга.


 
Marser ©   (2006-08-12 01:11) [65]

Как же я рад, что самые глубокие изменений, которые приходилось вносить в чужой код (по работе) это добавление with и устранение бессмысленных "=true"...


 
Суслик ©   (2006-08-12 01:27) [66]


> Как же я рад, что самые глубокие изменений

изучение чужого *работающего* кода (любого - хорошего и плохого) развивает больше чем чтение книг. :)


 
Германн ©   (2006-08-12 01:29) [67]

Был занят, освободился, зашёл на форум, читаю то, что не читал ранее. Поэтому процесс "ухода от сабжа" меня не затронул. Может кто мне глупому объяснит - что так "поразило" автора сажа в этом коде? То бишь что в этом коде особо удивительного, глупого, смешного и т.п.?


 
Суслик ©   (2006-08-12 01:31) [68]


> То бишь что в этом коде особо удивительного, глупого, смешного
> и т.п.?

мне тоже этот вопрос остался неясным - код переведенка с ранних паскалей.


 
Джо ©   (2006-08-12 01:37) [69]

Лично мне.
1. Ну, непонятно, зачем его нужно было переводить в таком случае. Совершенно непонятно. Если уж взялись переводить, так перевели бы. А не бездумно изменили зарезерв. слово record на class.
2. Неужели досовский Паскаль запрещал сделать из  m_State перечислимый тип или хотя-бы объявить константы, избавившись от глупых комментариев прямо в тексте объявления.


 
Суслик ©   (2006-08-12 01:44) [70]

качество и *ценность* продукта от этого не меняется :)


 
Marser ©   (2006-08-12 01:45) [71]

> [66] Суслик ©   (12.08.06 01:27)
>
> > Как же я рад, что самые глубокие изменений
>
> изучение чужого *работающего* кода (любого - хорошего и
> плохого) развивает больше чем чтение книг. :)

VCL и ИШа читать приятно. Но не все коды одинаково красивы :-)


 
Джо ©   (2006-08-12 01:46) [72]

> [70] Суслик ©   (12.08.06 01:44)
> качество и *ценность* продукта от этого не меняется :)

А тут не говорили о качестве и ценности продукта. Тут как раз о красоте кода и говорили. Если я не ошибаюсь, конечно :)


 
Marser ©   (2006-08-12 01:48) [73]

> 2. Неужели досовский Паскаль запрещал сделать из  m_State
> перечислимый тип или хотя-бы объявить константы, избавившись
> от глупых комментариев прямо в тексте объявления.

Там boolean просится. Третий закон формальной логики :-)


 
Германн ©   (2006-08-12 01:57) [74]


> Джо ©   (12.08.06 00:21) [63]
>
> > Работает. Говорят, даже не очень страшный код...
>
> Код как код. With проставить и тогда в нем даже можно будет
> разобраться :)
>


Не к данному примеру, а вообще.
Я очень люблю оператор with, но очень его боюсь! Поскольку при его применении "разбираемость" кода, имхо чаще всего ухудшается! И кроме того, поскольку вышеназванный оператор позволяет указывать "список ссылок на переменные", всегда есть возможность, что будет прочитано/изменено поле/свойство и т.п. не той переменной, что было надо..
За всё время на сём форуме мною было замечено только два "разумных" применений оператора with. Первое - по-моему привнес ЮЗ, когда публиковал примеры созданий в рантайм компонент.
"try
  with MyComponent.Create() do
    ...
 finally
   Free;
 end;


Второе не помню кто. :-( В памяти вертятся два ника, но не уверен какой именно. То ли на "s", то ли на "e"). По поводу изменения в файле проекта свойства Application.Title.


 
Marser ©   (2006-08-12 01:59) [75]

> "try
>  with MyComponent.Create() do
>    ...
> finally
>   Free;
> end;

Неверно. Создание должно происходить до блока. Иначе можно огрести ещё одни грабли при освобождении в файналли ещё не созданного экземпляра.


 
Джо ©   (2006-08-12 02:00) [76]

Да, я тоже побаиваюсь with, если честно :)


 
Marser ©   (2006-08-12 02:01) [77]

> Неверно. Создание должно происходить до блока. Иначе можно
> огрести ещё одни грабли при освобождении в файналли ещё
> не созданного экземпляра.

Хотя во Free защитка имеется, сё равно некрасиво. Тем более, не факт, что переменная бкдет nil


 
Германн ©   (2006-08-12 02:08) [78]


> Marser ©   (12.08.06 01:59) [75]

Да. Очепятался. :-( Прошу прощения у Юрия Зотова. Он писАл по другому. Но суть Германн ©   (12.08.06 01:57) [74] остаётся без изменений.


 
Zeqfreed_   (2006-08-12 02:14) [79]

> [74] Германн ©   (12.08.06 01:57)

О, это его находка? Тогда премного ему благодарен, очень удобная штука!


 
Германн ©   (2006-08-12 02:16) [80]

Вышеуказанное следует писАть как:

 with MyComponent.Create() do try
   begin
   ...
   end;
 finally
    Free;
 end;


 
Германн ©   (2006-08-12 02:19) [81]


> Zeqfreed_   (12.08.06 02:14) [79]
>
> > [74] Германн ©   (12.08.06 01:57)
>
> О, это его находка? Тогда премного ему благодарен, очень
> удобная штука!
>

Если я тебя правильно понял, то мы все ему премного благодарны :-)


 
Gero ©   (2006-08-12 02:19) [82]

> [80] Германн ©   (12.08.06 02:16)


> begin
>   ...
>   end;

Лишнее.


 
Marser ©   (2006-08-12 02:22) [83]

> [79] Zeqfreed_   (12.08.06 02:14)
> > [74] Германн ©   (12.08.06 01:57)
>
> О, это его находка?

Нет, конечно же :-)
Просто он когда-то подмечал "мелочи" вроде той, что я подметил у Германна, называя их такими, по которым видно программиста.


 
Германн ©   (2006-08-12 02:23) [84]

> Gero ©   (12.08.06 02:19) [82]
>
> > [80] Германн ©   (12.08.06 02:16)
>
>
> > begin
> >   ...
> >   end;
>
> Лишнее.
>

Это только наглядная подсказка к "..." :-)


 
Zeqfreed_   (2006-08-12 02:25) [85]

> [83] Marser ©   (12.08.06 02:22)

Приятно хоть чем-то быть похожим на программиста :)


 
Джо ©   (2006-08-12 02:25) [86]

> [84] Германн ©   (12.08.06 02:23)
> Это только наглядная подсказка к "..." :-)

Они лишнее потому, что блок with будет относится ко всему блоку try/finally :)


 
Германн ©   (2006-08-12 02:37) [87]


> Джо ©   (12.08.06 02:25) [86]
>
> > [84] Германн ©   (12.08.06 02:23)
> > Это только наглядная подсказка к "..." :-)
>
> Они лишнее потому, что блок with будет относится ко всему
> блоку try/finally :)
>

???
Кто-то кого-то явно не понял! :-(


 
Джо ©   (2006-08-12 02:46) [88]

> [87] Германн ©   (12.08.06 02:37)
> ???
> Кто-то кого-то явно не понял! :-(

Похоже, что я. Тогда сорри :)


 
Германн ©   (2006-08-12 03:04) [89]


> Джо ©   (12.08.06 02:46) [88]
>
> > [87] Германн ©   (12.08.06 02:37)
> > ???
> > Кто-то кого-то явно не понял! :-(
>
> Похоже, что я. Тогда сорри :)
>


Должен, во избежание, добавить. Я "очень" люблю begin..end.
Лично для меня всё то, что не умещается в, примерно, 60 символов в строке, должно оформляться, особо. А begin..end очень часто помогает!


 
Marser ©   (2006-08-12 03:08) [90]

> Лично для меня всё то, что не умещается в, примерно, 60
> символов в строке, должно оформляться, особо. А begin..end
> очень часто помогает!

То есть, вы его используете не только как составной оператор, но и дополнительно?


 
Германн ©   (2006-08-12 03:15) [91]


> Marser ©   (12.08.06 03:08) [90]
>
> > Лично для меня всё то, что не умещается в, примерно, 60
> > символов в строке, должно оформляться, особо. А begin.
> .end
> > очень часто помогает!
>
> То есть, вы его используете не только как составной оператор,
>  но и дополнительно?
>

Кого его? Не понял :-( Уточни Сергей.
Если про begin..end, то да очень часто пишу:
if Sentence = Needed  then begin
 MyVar:=...
end;

Хотя в данном примере begin..end не нужен.


 
Marser ©   (2006-08-12 03:22) [92]

> Если про begin..end

Да.

> то да очень часто пишу:
> if Sentence = Needed  then begin
> MyVar:=...
> end;
> Хотя в данном примере begin..end не нужен.

Кошмар. Не люблю лишнего в коде. С трудом приучаю себя ставить точку с запятой перед end, после того, как осознал потребность в этом при добавлении строчки кода в конец блока. Причём, борландовцы так и делают, очевидно, из тех же соображений.


 
Германн ©   (2006-08-12 03:29) [93]


> Marser ©   (12.08.06 03:22) [92]
>
> Кошмар. Не люблю лишнего в коде. С трудом приучаю себя ставить
> точку с запятой перед end, после того, как осознал потребность
> в этом при добавлении строчки кода в конец блока. Причём,
>  борландовцы так и делают, очевидно, из тех же соображений.>

Кошмар. Не спорю. Но нагляднее. По крайней мере для меня.


 
Loginov Dmitry ©   (2006-08-12 11:56) [94]

Вот это "развили" тему :)

Прошу прощение, если кого-то задело слово "Женщиной". Ничего плого не имел ввиду :(

Вот мои собственные замечания по коду:

Программа начиналась разрабатываться в Delphi 2, поэтому ни о каком переводе из Turbo паскаля речи быть не могло. Очевидно, что разработчица - сишница, так как:
- названия классов начинаются с "С"
- имена полей классов начинаются с "m"
- для создания экземпляров классов используется оператор new

В проекте класс CPayment используется исключительно в качестве record, а pCPayment = ^CPayment; - это "слышал звон, но не знаю где он".

Почему-то меня больше всего не устроила утечка памяти, возникающая в результате new(item); (соответствующие операторы dispose в проекте отсутствуют). Утечка памяти конечно небольшая - 4 байта, и она обнаружилась не в рун-тайме.

Представьте: пол-проекта написано в таком стиле. Руководитель мне - работает - не трожь! Вот и приходится придерживаться такого же дурацкого стиля, скрипя зубами :(


> [2] Самое жуткое, что за такое кто-то столько бабла срубил...


На вряд-ли. Работала девушка около пол-года. Кстати, прославилась очень компитентным программистом. Мне до нее далеко (изучение предметной области - 90 %-ный залог успеха).

Во всей Пензе не более пяти фирм (а может еще меньше), в которых программят на Delphi, поэтому отбор был очень жестким (она в свое время прошла)


> [5] совсем не обязательно. фирма искала программиста за 500
> уёв.  ну и нашла...


Это же Пенза. 500 уёв получает разве что один директор фирмы.


> [6] Есть мнение, что
> CPayment = class
> должно выглядеть (а возможно и задумывалось) как
> CPayment = record


Поддерживаю.


> [7] А по какому поводу негодование? Я кроме
> >    m_Name     : string;
> >    m_Type     : word; // нал\безнал
> никакого криминала не заметил...


Я негодую даже по такому поводу. Очень уж люблю придерживаться стандартов VCL, где все поля классов начинаются с "F".


> [8] Учти, что второй случай дискриминации женщины


Причем тут это. Эсли бы данный код писался мужчиной, я бы его нашел и пристрелил. В упор. Из BFG.
:))


> [11] Поясните новичку что тут не так.
> Насколько я понял, ошибка - работа через указатель, без
> которого можно обойтись.


А новичку все-равно не понять, имхо.


> [13] Ошибка, как считает, автор сабжа - в женщине.


Все опошлит! Не уж-то все к.т.н. такие :))


> [17] Программа, я так понимаю работает? И выполняет возложенное
> на нее? Если да, то какая разница, какой у нее код? Если
> смотреть со стороны пользователя.


Я не пользователь а программист, и смотрю на программный код с точки зрения программиста.


> [22] Покажите сие чудо.
> Желательно в анфас и профил.
>
> Можно - prifile.
> Не, интересно просто.


Не покажу. Сам не видел и не знаю ее.


> [57]


Да... И как только Керку удалось избежать суицида ;))


> [72] А тут не говорили о качестве и ценности продукта. Тут как
> раз о красоте кода и говорили. Если я не ошибаюсь, конечно
> :)


Все правильно. К качеству и ценности придраться нельзя.


 
StriderMan ©   (2006-08-12 13:43) [95]


> Медведъ   (11.08.06 19:34) [12]
> а еще женщине нельзя за руль

эт ты зря! мы вот с женой едем в гости, я пью пиво с друзьями, а она меня потом пьяного домой везет! красота!



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

Текущий архив: 2006.09.03;
Скачать: CL | DM;

Наверх




Память: 0.75 MB
Время: 0.053 c
3-1151441197
Vosik
2006-06-28 00:46
2006.09.03
Триггеры на системных таблицах в InterBase


15-1155369296
Deka
2006-08-12 11:54
2006.09.03
Как продать идею? Кто-нить пробовал?


2-1155664754
NikIta86
2006-08-15 21:59
2006.09.03
Как отловить завершение работы Windows в безоконном приложении?


6-1143485914
Jah182100Jah
2006-03-27 22:58
2006.09.03
Помогите пожалуйста с проверкой на наличие компа в сети


15-1154452246
Kerk
2006-08-01 21:10
2006.09.03
Есть тут мастаки из Казани?