Форум: "Потрепаться";
Текущий архив: 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.044 c