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

Вниз

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

 
int64   (2004-04-07 10:29) [0]

Приходил человек устраиваться на работу, приносил тексты программ. В одном проекте у него 20 форм. Разница у большенства этих форм только в Caption и они все в Auto-Create.
Конечно, главный аргумент - "мне удобнее и быстрее делать так", тем более, если руководитель(заказчик) разницы не видел.
И таких вот программиств дохрена, они даже занимают реальные
должности. Судя по назначении их программ и автобиографии.

Берутся тексты соискателей на работу, делается поиск по StrToInt, и если этот самый StrToInt неоправдано используется - сразу в урну.
А прочитал бы этот юзер раньше: "Не храните данные в конторолах", даже без объяснений - почему. И программы бы у него всегда отличались структурностью и самодокументированностью. Он бы и сам себя как кодера уважал больше.
Вот сейчас разбираю код. Писал уважаемый человек - преподаватель информатики, полковник. Заводит глобальную переменную, а потом юзает её, где как локальную, а где как буфер между функциями. Я не говорю уже о других "примудростях". Черт ногу сломает в таком коде.
"ТАК ВЕДЬ РАБОТАЕТ"
Ненавижу!
Если бы кто-то, когда-то взялся собрать "свод законов" о правилах хорошего тона в программировании, об азах, сей документ был бы куда полезнее всяких факов. Потому что без этих правил кодить можно, а без факов - нет.


 
int64   (2004-04-07 10:29) [0]

Приходил человек устраиваться на работу, приносил тексты программ. В одном проекте у него 20 форм. Разница у большенства этих форм только в Caption и они все в Auto-Create.
Конечно, главный аргумент - "мне удобнее и быстрее делать так", тем более, если руководитель(заказчик) разницы не видел.
И таких вот программиств дохрена, они даже занимают реальные
должности. Судя по назначении их программ и автобиографии.

Берутся тексты соискателей на работу, делается поиск по StrToInt, и если этот самый StrToInt неоправдано используется - сразу в урну.
А прочитал бы этот юзер раньше: "Не храните данные в конторолах", даже без объяснений - почему. И программы бы у него всегда отличались структурностью и самодокументированностью. Он бы и сам себя как кодера уважал больше.
Вот сейчас разбираю код. Писал уважаемый человек - преподаватель информатики, полковник. Заводит глобальную переменную, а потом юзает её, где как локальную, а где как буфер между функциями. Я не говорю уже о других "примудростях". Черт ногу сломает в таком коде.
"ТАК ВЕДЬ РАБОТАЕТ"
Ненавижу!
Если бы кто-то, когда-то взялся собрать "свод законов" о правилах хорошего тона в программировании, об азах, сей документ был бы куда полезнее всяких факов. Потому что без этих правил кодить можно, а без факов - нет.


 
Мараканец ©   (2004-04-07 10:37) [1]

дело не в том как писать, по большому счету, а в правильном документировании


 
Мараканец ©   (2004-04-07 10:37) [1]

дело не в том как писать, по большому счету, а в правильном документировании


 
VAleksey ©   (2004-04-07 10:53) [2]


> int64   (07.04.04 10:29)  

Кофе попей.


 
VAleksey ©   (2004-04-07 10:53) [2]


> int64   (07.04.04 10:29)  

Кофе попей.


 
serge35   (2004-04-07 10:58) [3]

Согласен с автором. Мне тоже приходилось разбираться с исходниками одного профессионального программера, ему уже за 40.
На каждом шагу изобретен новый велосипед.
Смотрю новая функция fround4. Ищу ее код, нахожу в файле Utils. Код состоит из одной строки - вызов функции round.
И это самый простой велосипед.
Я бы заставлял всех, кто собирается заниматься программированием проходить медицинскую экспертизу, как водители для получения прав на вождение. Особенно психиатора.


 
serge35   (2004-04-07 10:58) [3]

Согласен с автором. Мне тоже приходилось разбираться с исходниками одного профессионального программера, ему уже за 40.
На каждом шагу изобретен новый велосипед.
Смотрю новая функция fround4. Ищу ее код, нахожу в файле Utils. Код состоит из одной строки - вызов функции round.
И это самый простой велосипед.
Я бы заставлял всех, кто собирается заниматься программированием проходить медицинскую экспертизу, как водители для получения прав на вождение. Особенно психиатора.


 
int64   (2004-04-07 10:59) [4]

Значит я один такой придирчивый.
А вот не приходилось вам править чужой код. Никакое документирование не спасет, если там гемерой один.


 
int64   (2004-04-07 10:59) [4]

Значит я один такой придирчивый.
А вот не приходилось вам править чужой код. Никакое документирование не спасет, если там гемерой один.


 
VAleksey ©   (2004-04-07 11:01) [5]


> int64   (07.04.04 10:59) [4]

Только этим и занимаюсь практически :-)). Правда того о чем ты писал нет. Таких не дёржють :-))).
Я просто имею в виду, что чего психовать-то? Спокойнее надо быть.


 
VAleksey ©   (2004-04-07 11:01) [5]


> int64   (07.04.04 10:59) [4]

Только этим и занимаюсь практически :-)). Правда того о чем ты писал нет. Таких не дёржють :-))).
Я просто имею в виду, что чего психовать-то? Спокойнее надо быть.


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

Тейксейра, Пачеко, Delphi 5, руководство разработчика, глава 6.

Наизусть.


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

Тейксейра, Пачеко, Delphi 5, руководство разработчика, глава 6.

Наизусть.


 
pasha_golub ©   (2004-04-07 11:06) [7]

Игорь Шевченко ©   (07.04.04 11:03) [6]
Игорь, тама хорошие советы бесспорно, но мало. :-) На все случаи не помогет.


 
pasha_golub ©   (2004-04-07 11:06) [7]

Игорь Шевченко ©   (07.04.04 11:03) [6]
Игорь, тама хорошие советы бесспорно, но мало. :-) На все случаи не помогет.


 
int64   (2004-04-07 11:12) [8]

Игорь Шевченко ©   (07.04.04 11:03) [6]
Там больше о форматировании и именовании идентификаторов.
Я знаю контору, где за несоответсвие таким стандартам штраф 5$.


 
int64   (2004-04-07 11:12) [8]

Игорь Шевченко ©   (07.04.04 11:03) [6]
Там больше о форматировании и именовании идентификаторов.
Я знаю контору, где за несоответсвие таким стандартам штраф 5$.


 
Saturn_   (2004-04-07 11:13) [9]

2 int64   (07.04.04 10:59) [4]
нет ты не один такой придирчевый.
Но просто у каждого свой стиль прграмирования. и с эти ничего нельзя сделать.


 
Saturn_   (2004-04-07 11:13) [9]

2 int64   (07.04.04 10:59) [4]
нет ты не один такой придирчевый.
Но просто у каждого свой стиль прграмирования. и с эти ничего нельзя сделать.


 
Vovchik_A ©   (2004-04-07 11:15) [10]

2int64   (07.04.04 10:59) [4]
Чужой код править  - занятие неблагодарное. Лучше свой написать. (ИМХО, конечно)...


 
Vovchik_A ©   (2004-04-07 11:15) [10]

2int64   (07.04.04 10:59) [4]
Чужой код править  - занятие неблагодарное. Лучше свой написать. (ИМХО, конечно)...


 
pasha_golub ©   (2004-04-07 11:16) [11]

Vovchik_A ©   (07.04.04 11:15) [10]
Переписать все нафиг..ю (с) Российский программист

Кстати, а где можно эту байку прочесть?


 
pasha_golub ©   (2004-04-07 11:16) [11]

Vovchik_A ©   (07.04.04 11:15) [10]
Переписать все нафиг..ю (с) Российский программист

Кстати, а где можно эту байку прочесть?


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

pasha_golub ©   (07.04.04 11:06)


> хорошие советы бесспорно, но мало. :-) На все случаи не
> помогет


Опыт, сын ошибок трудных....Оно рулез :)

int64   (07.04.04 11:12)

> Я знаю контору, где за несоответсвие таким стандартам штраф
> 5$.


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


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

pasha_golub ©   (07.04.04 11:06)


> хорошие советы бесспорно, но мало. :-) На все случаи не
> помогет


Опыт, сын ошибок трудных....Оно рулез :)

int64   (07.04.04 11:12)

> Я знаю контору, где за несоответсвие таким стандартам штраф
> 5$.


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


 
serge35   (2004-04-07 11:19) [13]

Поэтому брать на работу лучше студентов и сразу им объяснять, в каком стиле они должны писать. После них можно будет разобраться в коде, а маститый дяденька сделает может быть и правильно, но разбираться в его коде будет очень сложно.
А вообще сейчас центр тяжести переносится с написания кода в проектирование системы, написания грамотного и глубокого ТЗ.


 
serge35   (2004-04-07 11:19) [13]

Поэтому брать на работу лучше студентов и сразу им объяснять, в каком стиле они должны писать. После них можно будет разобраться в коде, а маститый дяденька сделает может быть и правильно, но разбираться в его коде будет очень сложно.
А вообще сейчас центр тяжести переносится с написания кода в проектирование системы, написания грамотного и глубокого ТЗ.


 
Мараканец ©   (2004-04-07 11:21) [14]

http://diesel.elcat.kg/prog/messages/12958.html

это не оно?

гугл фарэва)


 
Мараканец ©   (2004-04-07 11:21) [14]

http://diesel.elcat.kg/prog/messages/12958.html

это не оно?

гугл фарэва)


 
Vovchik_A ©   (2004-04-07 11:21) [15]

2serge35   (07.04.04 11:19) [13]
Совершенно согласен. Глубокое и грамотное ТЗ это 50% если не 70% успеха. Жаль только, что это случается редко.

2pasha_golub ©   (07.04.04 11:16) [11]

Не смешно.


 
Vovchik_A ©   (2004-04-07 11:21) [15]

2serge35   (07.04.04 11:19) [13]
Совершенно согласен. Глубокое и грамотное ТЗ это 50% если не 70% успеха. Жаль только, что это случается редко.

2pasha_golub ©   (07.04.04 11:16) [11]

Не смешно.


 
passlight ©   (2004-04-07 11:28) [16]

int64   (07.04.04 11:12) [8]
Блин, вот нам бы так


 
passlight ©   (2004-04-07 11:28) [16]

int64   (07.04.04 11:12) [8]
Блин, вот нам бы так


 
Nikolay M. ©   (2004-04-07 11:36) [17]


> Я знаю контору, где за несоответсвие таким стандартам штраф
> 5$

И что, текучка программистов там просто большая или очень большая?
Уже неоднократно замечено, что каждый новый начальник пытается насадить свой формат расстановки скобок, отступов, заглавных-строчных букв и прочей белиберды.
Если программист грамотный, он пишет такой код, что поймет его и он сам через год, и любой другой программист. А всякое палево "перед begin ставить два пробела, а For писать с большой буквы" - пустая трата времени и удовлетворение непонятных амбиций со стороны людей, занимающихся издательством такой бессмыслицы. А зачастую - банальное прикрытие собственной некомпетентности или повод платить программистам меньшую зарплату  за счет таких штрафов.
Работать в таких конторах крайне противопоказано. Имхо.


 
Nikolay M. ©   (2004-04-07 11:36) [17]


> Я знаю контору, где за несоответсвие таким стандартам штраф
> 5$

И что, текучка программистов там просто большая или очень большая?
Уже неоднократно замечено, что каждый новый начальник пытается насадить свой формат расстановки скобок, отступов, заглавных-строчных букв и прочей белиберды.
Если программист грамотный, он пишет такой код, что поймет его и он сам через год, и любой другой программист. А всякое палево "перед begin ставить два пробела, а For писать с большой буквы" - пустая трата времени и удовлетворение непонятных амбиций со стороны людей, занимающихся издательством такой бессмыслицы. А зачастую - банальное прикрытие собственной некомпетентности или повод платить программистам меньшую зарплату  за счет таких штрафов.
Работать в таких конторах крайне противопоказано. Имхо.


 
sniknik ©   (2004-04-07 11:39) [18]

> Смотрю новая функция fround4. Ищу ее код, нахожу в файле Utils. Код состоит из одной строки - вызов функции round.
> И это самый простой велосипед.

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


 
sniknik ©   (2004-04-07 11:39) [18]

> Смотрю новая функция fround4. Ищу ее код, нахожу в файле Utils. Код состоит из одной строки - вызов функции round.
> И это самый простой велосипед.

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


 
Иксик ©   (2004-04-07 11:42) [19]

На www.xprogramming.ru предлагался в частности стандарт для Дельфи.


 
Иксик ©   (2004-04-07 11:42) [19]

На www.xprogramming.ru предлагался в частности стандарт для Дельфи.


 
Style ©   (2004-04-07 11:42) [20]

Nikolay M. ©
Нужно просто фильтр написать который у атачментов *.pas в слове for первую букву меняет на заглавную :)
И поставить на отправку почты начальнику :)
Чего мучаться то :))


 
Style ©   (2004-04-07 11:42) [20]

Nikolay M. ©
Нужно просто фильтр написать который у атачментов *.pas в слове for первую букву меняет на заглавную :)
И поставить на отправку почты начальнику :)
Чего мучаться то :))


 
zzet ©   (2004-04-07 11:48) [21]

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


 
zzet ©   (2004-04-07 11:48) [21]

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


 
serge35   (2004-04-07 11:49) [22]

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


 
serge35   (2004-04-07 11:49) [22]

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


 
nick_   (2004-04-07 11:49) [23]


> Style ©   (07.04.04 11:42) [20]

Ну вот еще!
Кстати, один раз наблюдал такой круговорот событий.
Начальник начал насаживать очередной "стандарт", как следствие, программист, который писал программу в едином стиле уволился (кому охота фигней страдать?), на его место пришел другой, который не сразу включился в "стандарт", после трений с начальником также уволился, начальника заменили, поскольку не может обеспечить нормальную работу, на его место приходит новый, со своим "стандартом", все начинается по новой.
Я этот процесс застал на n-дцатой итерации и имел счастье видеть ужасно кривую программу, к тому же без единого комментария. больше 2 месяцев я не выдержал.


 
nick_   (2004-04-07 11:49) [23]


> Style ©   (07.04.04 11:42) [20]

Ну вот еще!
Кстати, один раз наблюдал такой круговорот событий.
Начальник начал насаживать очередной "стандарт", как следствие, программист, который писал программу в едином стиле уволился (кому охота фигней страдать?), на его место пришел другой, который не сразу включился в "стандарт", после трений с начальником также уволился, начальника заменили, поскольку не может обеспечить нормальную работу, на его место приходит новый, со своим "стандартом", все начинается по новой.
Я этот процесс застал на n-дцатой итерации и имел счастье видеть ужасно кривую программу, к тому же без единого комментария. больше 2 месяцев я не выдержал.


 
uny   (2004-04-07 11:50) [24]

бывают такие правила -
можно "закрыть" курсор мыши в таком то прямоугольнике, но использование этой функции = плохой тон

эти правила не только программистам важны:)


 
uny   (2004-04-07 11:50) [24]

бывают такие правила -
можно "закрыть" курсор мыши в таком то прямоугольнике, но использование этой функции = плохой тон

эти правила не только программистам важны:)


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

Nikolay M. ©   (07.04.04 11:36)
zzet ©   (07.04.04 11:48)

Вы поработайте в команде над серьезным проектом, потом вернемся к разговору.

Неужели вы всерьез считаете, что Тейксейра с Пачеко, да и многие другие, пишут о том, что стандартизация кода есть хорошо, только потому, что им просто хочется поговорить или засорить мозги читателям ? :))


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

Nikolay M. ©   (07.04.04 11:36)
zzet ©   (07.04.04 11:48)

Вы поработайте в команде над серьезным проектом, потом вернемся к разговору.

Неужели вы всерьез считаете, что Тейксейра с Пачеко, да и многие другие, пишут о том, что стандартизация кода есть хорошо, только потому, что им просто хочется поговорить или засорить мозги читателям ? :))


 
Alex Konshin ©   (2004-04-07 11:59) [26]

Где-то была ссылка на сайт, где представлены образцы как хорошего интерфейса, так и такие, как не надо делать. Помню там перлы типа выбор пола через два чекбокса (видимо решили все варианты предусмотреть). А у нас на работе вполне реально используется такой образец того, как делать не надо - Siebel CaRDS. Это система для трекинга багов и проблем. Такого ублюдского интефейса я давно не видел.

Да, возвращаемся к теме.
Стрелял бы тех, кто не пишет комментарии.
Все, пошел вешаться...


 
Alex Konshin ©   (2004-04-07 11:59) [26]

Где-то была ссылка на сайт, где представлены образцы как хорошего интерфейса, так и такие, как не надо делать. Помню там перлы типа выбор пола через два чекбокса (видимо решили все варианты предусмотреть). А у нас на работе вполне реально используется такой образец того, как делать не надо - Siebel CaRDS. Это система для трекинга багов и проблем. Такого ублюдского интефейса я давно не видел.

Да, возвращаемся к теме.
Стрелял бы тех, кто не пишет комментарии.
Все, пошел вешаться...


 
zzet ©   (2004-04-07 11:59) [27]

>[25] Игорь Шевченко ©   (07.04.04 11:54)

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


 
zzet ©   (2004-04-07 11:59) [27]

>[25] Игорь Шевченко ©   (07.04.04 11:54)

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


 
zzet ©   (2004-04-07 12:03) [28]

Если б меня мой босс попробовал оштрафовать за то что не может прочитать мой код на 5$, я бы ему эти 5$ в *** засунул и расчитался.
(поэтому я, как начальник, никогда так не поступаю)


 
zzet ©   (2004-04-07 12:03) [28]

Если б меня мой босс попробовал оштрафовать за то что не может прочитать мой код на 5$, я бы ему эти 5$ в *** засунул и расчитался.
(поэтому я, как начальник, никогда так не поступаю)


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

Alex Konshin ©   (07.04.04 11:59)

http://www.akzhan.midi.ru/iarchitect/ ?


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

Alex Konshin ©   (07.04.04 11:59)

http://www.akzhan.midi.ru/iarchitect/ ?


 
Alex Konshin ©   (2004-04-07 12:04) [30]

Насчет понимающих команд: я сам свой код после трех месяцев перерыва разбираю как чужой - ни хрена не помню. Занятно, бывает, сделать открытие в своей же собственной программе. Другому же человеку во много раз труднее. Так что я не верю в понимающие команды. Нужно просто писать так, что было понятно.


 
Alex Konshin ©   (2004-04-07 12:04) [30]

Насчет понимающих команд: я сам свой код после трех месяцев перерыва разбираю как чужой - ни хрена не помню. Занятно, бывает, сделать открытие в своей же собственной программе. Другому же человеку во много раз труднее. Так что я не верю в понимающие команды. Нужно просто писать так, что было понятно.


 
SoftX   (2004-04-07 12:06) [31]

Вот напрмер пример моего кода, говорят тяжелый, а я так не думаю:)

function ReadCarrentSid(var UserInfo:TUserVariables):boolean;
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;
begin
 //получаем текущий SID пользователя
 CUsername:=0;
 GetUserName(nil,CUsername);
 SetLength(Username,CUsername);
 GetUserName(@Username[1],CUsername);
 //
 Csid:=0;Cdomain:=0;
 LookupAccountName(nil,@Username[1],nil,Csid,nil,Cdomain,PUse);
 SetLength(Domain,cDomain);
 GetMem(SID,cSID);
 LookupAccountName(nil,@Username[1],Sid,Csid,@Domain[1],Cdomain,PUse);
 //создаем запрос на пользователя
 MainData.UserQuery.Active:=false;
 MainData.UserQuery.SQL.Clear;

 MainData.UserQuery.SQL.Add("select * from faxusers;");
 MainData.UserQuery.Active:=True;
 //ищем нужный SID
 found:=False;
 MainData.UserQuery.first;
 if (MainData.UserQuery.RecordCount>0) then
   begin
   while (not MainData.UserQuery.Eof) and (found=false) do
     begin
     BlobStream:=MainData.UserQuery.CreateBlobStream(MainData.UserQuery.FieldByName("winsid"),bmRead);
     if BlobStream.Size=CSid then
       begin
       found:=True;
       GetMem(TSid,BlobStream.Size);
       BlobStream.ReadBuffer(PByteArray(TSid)[0],BlobStream.Size);
       for i:=0 to Csid-1 do
         if (PByteArray(Sid)[i]<>PByteArray(TSid)[i]) then found:=false;
       FreeMem(TSid);
       end;
     BlobStream.Free;
     if found=false then MainData.UserQuery.Next;
     end;
   end;

 //получам данные если запрос с данной информацией найден
 if (found=True) then
   begin
   UserInfo.LOGIN:=MainData.UserQuery.FieldByName("LOGIN").AsString;
   UserInfo.USERNAME:=MainData.UserQuery.FieldByName("USERNAME").AsString;
   UserInfo.CANDELETEFAX:=MainData.UserQuery.FieldByName("CANDELETEFAX").AsInteger;
   UserInfo.IMMORTAL:=MainData.UserQuery.FieldByName("IMMORTAL").AsInteger;
   UserInfo.CANGETFAX:=MainData.UserQuery.FieldByName("CANGETFAX").AsInteger;
   UserInfo.ADMINISTRATOR:=MainData.UserQuery.FieldByName("ADMINISTRATOR").AsInteger;
   //
   ReadCarrentSid:=True;
   end
 else
   ReadCarrentSid:=false;
 //
 Username:="";
 Domain:="";
 FreeMem(Sid);
 //закрываем запрос
 MainData.UserQuery.Active:=false;
 MainData.UserQuery.SQL.Clear;
end;


 
SoftX   (2004-04-07 12:06) [31]

Вот напрмер пример моего кода, говорят тяжелый, а я так не думаю:)

function ReadCarrentSid(var UserInfo:TUserVariables):boolean;
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;
begin
 //получаем текущий SID пользователя
 CUsername:=0;
 GetUserName(nil,CUsername);
 SetLength(Username,CUsername);
 GetUserName(@Username[1],CUsername);
 //
 Csid:=0;Cdomain:=0;
 LookupAccountName(nil,@Username[1],nil,Csid,nil,Cdomain,PUse);
 SetLength(Domain,cDomain);
 GetMem(SID,cSID);
 LookupAccountName(nil,@Username[1],Sid,Csid,@Domain[1],Cdomain,PUse);
 //создаем запрос на пользователя
 MainData.UserQuery.Active:=false;
 MainData.UserQuery.SQL.Clear;

 MainData.UserQuery.SQL.Add("select * from faxusers;");
 MainData.UserQuery.Active:=True;
 //ищем нужный SID
 found:=False;
 MainData.UserQuery.first;
 if (MainData.UserQuery.RecordCount>0) then
   begin
   while (not MainData.UserQuery.Eof) and (found=false) do
     begin
     BlobStream:=MainData.UserQuery.CreateBlobStream(MainData.UserQuery.FieldByName("winsid"),bmRead);
     if BlobStream.Size=CSid then
       begin
       found:=True;
       GetMem(TSid,BlobStream.Size);
       BlobStream.ReadBuffer(PByteArray(TSid)[0],BlobStream.Size);
       for i:=0 to Csid-1 do
         if (PByteArray(Sid)[i]<>PByteArray(TSid)[i]) then found:=false;
       FreeMem(TSid);
       end;
     BlobStream.Free;
     if found=false then MainData.UserQuery.Next;
     end;
   end;

 //получам данные если запрос с данной информацией найден
 if (found=True) then
   begin
   UserInfo.LOGIN:=MainData.UserQuery.FieldByName("LOGIN").AsString;
   UserInfo.USERNAME:=MainData.UserQuery.FieldByName("USERNAME").AsString;
   UserInfo.CANDELETEFAX:=MainData.UserQuery.FieldByName("CANDELETEFAX").AsInteger;
   UserInfo.IMMORTAL:=MainData.UserQuery.FieldByName("IMMORTAL").AsInteger;
   UserInfo.CANGETFAX:=MainData.UserQuery.FieldByName("CANGETFAX").AsInteger;
   UserInfo.ADMINISTRATOR:=MainData.UserQuery.FieldByName("ADMINISTRATOR").AsInteger;
   //
   ReadCarrentSid:=True;
   end
 else
   ReadCarrentSid:=false;
 //
 Username:="";
 Domain:="";
 FreeMem(Sid);
 //закрываем запрос
 MainData.UserQuery.Active:=false;
 MainData.UserQuery.SQL.Clear;
end;


 
Игорь Шевченко ©   (2004-04-07 12:09) [32]

SoftX   (07.04.04 12:06)


> говорят тяжелый,


Справедливо говорят.


 
Игорь Шевченко ©   (2004-04-07 12:09) [32]

SoftX   (07.04.04 12:06)


> говорят тяжелый,


Справедливо говорят.


 
Паниковский ©   (2004-04-07 12:09) [33]

Можно и утилитку написать

стандарт засовываеш в утилитку находит ключивое слово вставляет пробелы или пишет с большой буквы пиши как хочеш а потом в утилитку загнал она все выправила и все зер гут и все довольны!

Кстати может кто напишет? Что скажите Мастера?


 
Паниковский ©   (2004-04-07 12:09) [33]

Можно и утилитку написать

стандарт засовываеш в утилитку находит ключивое слово вставляет пробелы или пишет с большой буквы пиши как хочеш а потом в утилитку загнал она все выправила и все зер гут и все довольны!

Кстати может кто напишет? Что скажите Мастера?


 
NAlexey ©   (2004-04-07 12:10) [34]

>SoftX   (07.04.04 12:06) [31]
Мдя... С самого начала все ясно: ReadCarrentSid...


 
NAlexey ©   (2004-04-07 12:10) [34]

>SoftX   (07.04.04 12:06) [31]
Мдя... С самого начала все ясно: ReadCarrentSid...


 
Alex Konshin ©   (2004-04-07 12:11) [35]

Игорь Шевченко ©   (07.04.04 12:04) [29]
Alex Konshin ©   (07.04.04 11:59)
http://www.akzhan.midi.ru/iarchitect/ ?

Это перевод оригинала. Там есть ссылка на него.


 
Alex Konshin ©   (2004-04-07 12:11) [35]

Игорь Шевченко ©   (07.04.04 12:04) [29]
Alex Konshin ©   (07.04.04 11:59)
http://www.akzhan.midi.ru/iarchitect/ ?

Это перевод оригинала. Там есть ссылка на него.


 
Игорь Шевченко ©   (2004-04-07 12:19) [36]

Паниковский ©   (07.04.04 12:09)


> Можно и утилитку написать


> Кстати может кто напишет?


STFW: DelForEx


 
Игорь Шевченко ©   (2004-04-07 12:19) [36]

Паниковский ©   (07.04.04 12:09)


> Можно и утилитку написать


> Кстати может кто напишет?


STFW: DelForEx


 
NAlexey ©   (2004-04-07 12:20) [37]

>Паниковский ©   (07.04.04 12:09) [33]
Ничего себе загнул:)
из строк
Var i:integer;
moyaperemennaja:String;
begin
i:=1;moyaperemennaja:="раз";
end;
мне надо получить:

var
 I: Integer;
 Str: string;
begin
 I := 1;
 Str := "Раз";
end;


Есть предложения какие ключевые слова использовать?


 
NAlexey ©   (2004-04-07 12:20) [37]

>Паниковский ©   (07.04.04 12:09) [33]
Ничего себе загнул:)
из строк
Var i:integer;
moyaperemennaja:String;
begin
i:=1;moyaperemennaja:="раз";
end;
мне надо получить:

var
 I: Integer;
 Str: string;
begin
 I := 1;
 Str := "Раз";
end;


Есть предложения какие ключевые слова использовать?


 
mfender ©   (2004-04-07 12:23) [38]

Давайте будем честны: правильное форматирование исходного текста := лучшее понимание собою же написанного. Бывает, понавалишь там временно всякого барахла, потом сам не поймешь, зачем так всего и много. А чтобы прочитать все это можно было - хотя бы тот же банальный 2 пробела перед begin поставить-таки следует.
Руководство просто вероломствует и самодурит по причине своей, порой, малограмотности и недостатка образования.


 
mfender ©   (2004-04-07 12:23) [38]

Давайте будем честны: правильное форматирование исходного текста := лучшее понимание собою же написанного. Бывает, понавалишь там временно всякого барахла, потом сам не поймешь, зачем так всего и много. А чтобы прочитать все это можно было - хотя бы тот же банальный 2 пробела перед begin поставить-таки следует.
Руководство просто вероломствует и самодурит по причине своей, порой, малограмотности и недостатка образования.


 
Nikolay M. ©   (2004-04-07 12:24) [39]


> zzet ©   (07.04.04 12:03) [28]
> Если б меня мой босс попробовал оштрафовать за то что не
> может прочитать мой код на 5$, я бы ему эти 5$ в *** засунул
> и расчитался.

Аналогично.


 
Nikolay M. ©   (2004-04-07 12:24) [39]


> zzet ©   (07.04.04 12:03) [28]
> Если б меня мой босс попробовал оштрафовать за то что не
> может прочитать мой код на 5$, я бы ему эти 5$ в *** засунул
> и расчитался.

Аналогично.


 
KSergey ©   (2004-04-07 12:25) [40]

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

Не в плане спора, а из любопытства: приведите свой.


 
KSergey ©   (2004-04-07 12:25) [40]

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

Не в плане спора, а из любопытства: приведите свой.



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

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

Наверх




Память: 0.7 MB
Время: 0.038 c
8-1076746407
iudjen
2004-02-14 11:13
2004.05.09
только height или witdth на TImage


8-1076358343
Graff
2004-02-09 23:25
2004.05.09
Помогите с перерисовкой PaintBox и Image.


3-1081503969
GIL
2004-04-09 13:46
2004.05.09
почему не грузится изображение?


14-1082131239
Soft
2004-04-16 20:00
2004.05.09
Синдром выгорания как результат обыденных стрессов.


7-1080029027
Аноним
2004-03-23 11:03
2004.05.09
MSDN -> Delphi





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский