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

Вниз

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

 
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;



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

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

Наверх




Память: 0.65 MB
Время: 0.057 c
3-1150957711
galexis
2006-06-22 10:28
2006.09.03
Медленно работает LIKE


15-1155274652
Карелин Артем
2006-08-11 09:37
2006.09.03
Как програмно записать в именованную ячейку Екселя?


2-1155744819
dabreezy
2006-08-16 20:13
2006.09.03
Аналог в delphi


2-1155554432
Leyhont
2006-08-14 15:20
2006.09.03
Размеры изображения


1-1153798565
Zilog_
2006-07-25 07:36
2006.09.03
Как правильно описать константу с С на Делфи?