Текущий архив: 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