Конференция "Журнал" » APC: Ошибка в коде (?) или снова про MultiByteToWideChar
 
  • Ketmar © (13.11.06 00:32) [20]
    >[19] Anatoly Podgoretsky(c) 13-Nov-2006, 00:31
    >Убить то можно, не будет ли других проблем?
    так всё равно без абсолюта не работает, какая разница...
  • Anatoly Podgoretsky © (13.11.06 00:36) [21]
    > Ketmar  (13.11.2006 0:32:20)  [20]

    Возможно с данным проектом это и пойдет, конечно на русской локализации, зато другие мои проекты включают как минимум два языка и к сожалению нет достойного набора компонент для полной, нормальной реализации, TNT не перекрывает даже потребности баз данных, например отсутствие TTntDBLookupComboBox потребовало искать обходные пути, но это и к лучшему, почти везде где можно отказался от dbAware компонент, что благоприятно повлияло на проекты, а иначе бы так и сидел на них.
  • Ketmar © (13.11.06 00:38) [22]
    мда. dbaware -- удобно, но такая гадость... %-)
  • Anatoly Podgoretsky © (13.11.06 00:41) [23]
    > Ketmar  (13.11.2006 0:38:22)  [22]

    Да не гадость, но меньшая управляемость, зато теперь красота - SELECT/INSERT/UPDATE короткие транзакции, кроме читающей SELECT и никаких проблем со сложными запросами.
  • guav © (13.11.06 00:45) [24]

    > [17] Ketmar ©   (13.11.06 00:30)

    Уже, причём именно ноутпадом


    > да и повторение кода в каждой форме уже может быть поводом
    > для придирки

    Это опрометчивое заявление. ReadSettings все разные.

    В одном есть несущий магический смысл Exit.

    procedure TMainForm.ReadSettings;
    begin
     with TRegistry.Create do
     try
       OpenKey(RegBase + 'MainForm', True);
       if ValueExists('Left') then begin
         ... end
       else begin
         ...
         Exit;
       end;
     finally
       Free;
     end;
    end;


    В другой есть except (я понимаю, зачем он там нужен, вопрос скорее почему в других местах нет).

    Копипаст - зло, ошибки нужно делать и исправлять в одном месте.
  • Ketmar © (13.11.06 00:50) [25]
    >[24] guav(c) 13-Nov-2006, 00:45
    можно сократить до
    >ошибки нужно делать
    %-)
  • Anatoly Podgoretsky © (13.11.06 00:51) [26]
    > guav  (13.11.2006 0:45:24)  [24]

    В других местах его нет потому что там пользовательские, а не серверные функции и исключение не смертельно для сервера, а наоборот пользователь узнает о нем.
    Главный ReadSettings как раз другой. Ну и второй вариант, может я чего то не учел.
    Кроме того эти другие от отличаются и подходом, в них записаны характеристики форм, если в реестре нет значения, то оно будет создано при закрытии, иначе будут использованы дизайнтайм характеристики.

    Поэтому подход дифферинцирован, но надо будет внимательно посмотреть, нет ли каких блох.
  • Anatoly Podgoretsky © (13.11.06 00:56) [27]
    > guav  (13.11.2006 0:45:24)  [24]

    Ой посмотрел код, не совсем так, совсем не так, except вообще не нужен, можно будет убрать, пусть стандартная обработка работает, а главный серверный защищен с помощью ValueExists
    Но можно и не менять, разве только для единства стиля. И так и так результат одинаковый и более того вероятность возникновения ошибка в TRegistry.Create практически равна нулю и если такая вероятность есть тут уже не до моей программы, живым бы ноги унести, это говорит что у системы серьезные проблемы.
    Конечно есть определенная непоследовательность и как ты справедливо заметил, из-за китайского метода, все никак не могу себя от него отучить, проблемы из-за него постоянно возникают.
  • Ketmar © (13.11.06 00:59) [28]
    нормальный метод. наследие времён, когда платили за количество строк. %-)
  • guav © (13.11.06 01:10) [29]
    > [25] Ketmar ©   (13.11.06 00:50)

    Можно. Но это и так очевидно.
    Можно до "ошибки нужно делать и исправлять" - это тоже очевидно.
    А вот "ошибки нужно делать и исправлять в одном месте." - уже аргумент против копипаста.


    > [27] Anatoly Podgoretsky ©   (13.11.06 00:56)
    > из-за китайского метода, все никак
    > не могу себя от него отучить, проблемы из-за него постоянно
    > возникают.

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

    Вообще, там столько переменных публикуемых типов пишется и читается в реестр, что запуздыривание их в класс и запись/чтение через RTTI не только сделает код менее "китайским", но и уменьшит размер иходников.
  • guav © (13.11.06 01:15) [30]
    > [28] Ketmar ©   (13.11.06 00:59)
    > нормальный метод.

    В основном, да. Легко писать, легко трассировать.
    Однако модифицировать такой код потом трудно: где-то можно забыть исправить. И баги по несколько раз исправлять приходится.
  • Ketmar © (13.11.06 01:34) [31]
    >[30] guav(c) 13-Nov-2006, 01:15
    не надо мне про это рассказывать. знаком не по-наслышке. %-)
  • guav © (13.11.06 01:40) [32]
    > [31] Ketmar ©   (13.11.06 01:34)
    > не надо мне про это рассказывать.

    и то правда.

    Что меня побудило скачать исходники - ошибки АРС, причём не в том, что касается протоколов, но в более простых вещах. Хотел увидеть, как так может быть. Увидел, что там просто код даже более "китайский", чем мой.
  • Ketmar © (13.11.06 01:55) [33]
    >[32] guav(c) 13-Nov-2006, 01:40
    >просто код даже более "китайский", чем мой.
    CDM такой же. %-)
  • guav © (13.11.06 02:07) [34]
    а я вообще писать клиента не буду.

    а шокирующий меня пример копипаста я увидел в генофонде:
    перегруженные версии FloatToText, FloatToTextFmt и FormatBuf не разделяют единую реализацию, я предполагал, что из версий без const FormatSettings: TFormatSettings вызываются вкрсии с оным, оказалось - нет, копипаст.
  • Gero © (13.11.06 02:14) [35]
    Я уже молчу про DMClient, который начал писать один человек, не собираясь никому показывать ни исходный код, ни саму программу, а теперь дописывает другой.
  • Anatoly Podgoretsky © (13.11.06 09:13) [36]
    > Gero  (13.11.2006 02:14:35)  [35]

    Он чего боялся чтоли?
    Я например не боюсь показывать любой код, как бы плохо он не был написан.
  • Gero © (13.11.06 09:19) [37]
    > [36] Anatoly Podgoretsky ©   (13.11.06 09:13)

    Почему же, не боялся, и код потом был опубликован.
  • Anatoly Podgoretsky © (13.11.06 09:21) [38]
    > guav  (13.11.2006 01:10:29)  [29]

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

    Видел бы ты как писался код, сколько раз он изменялся по данной причине, поскольку не только не ясно как нормально, а вообще не ясно как вообще, многочисленый трассировки с воссождание различных ситуаций, тем более что нельзя сразу написать для всех вариатов, которых просто очень много, неизвестные реакции серверов на различные ситуации и при этом сервер должен оставаться в любом случае живым, это же не клиент. Вот если буду писать другой сервер то будет полегче, уже известны многие проблемы.
    Документация - ожидалось, что в RFC все описано, оказалось что нет, один формат XOVER столько пришлось перешерстить Интернета, все ссылаются на одного чувака, мол у него описан формат, а все ссылки на него мертвые и датированы прошлым веком, еле еле нашел одно единственное место, где была нужная мне строчка. А код как код, можно писать с разными вариантами, сути не меняет.
  • Anatoly Podgoretsky © (13.11.06 09:24) [39]
    > guav  (13.11.2006 01:15:30)  [30]

    Не, китайский метод, это зло, именно забывается и особенно когда идентификаторы близкие по написанию и старое описание то есть и оно валидное, компилятор тут не помогает. Но время ускоряет невероятно, только нужно быть скрупулезно внимательным, но и то пропускаешь, если же писать не этом методом, то не будет единства стиля, сам же в него меня ткнул вчера и дольше, но более надежно.
 
Конференция "Журнал" » APC: Ошибка в коде (?) или снова про MultiByteToWideChar
Есть новые Нет новых   [134427   +26][b:0][p:0.001]