1. C# / Говнокод #19700

    +1

    1. 01
    2. 02
    3. 03
    4. 04
    5. 05
    6. 06
    7. 07
    8. 08
    9. 09
    10. 10
    11. 11
    12. 12
    13. 13
    14. 14
    15. 15
    16. 16
    17. 17
    18. 18
    19. 19
    20. 20
    21. 21
    22. 22
    23. 23
    24. 24
    [DllImport("quickusb.dll", CharSet = CharSet.Ansi)]
    static extern int QuickUsbWriteData(IntPtr Handle, byte[] outData, int length);
    
    // ...
    
     public bool Write(byte[] data)
        {
        // ...
            int result = QuickUsbWriteData(handle, data, data.Length);
    
            if (result != 0)
                return true;
            else if (result == 0)
            {
                LastError =  "QUSB returned 0";
                return false;
            }
            else
            {
                LastError = "Unknown error inside WriteData";
                return false;
            }
        // ...
      }

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

    Запостил: yamamoto, 25 Марта 2016

    Комментарии (14) RSS

    • а какой-нить решарпер типа не подсветил что condition is always true?
      Ответить
      • Да даже студия из коробки подсветит.
        Ответить
    • Запостите пожалуйста вот этот код
      Я немогу потому что гость

      http://phpclub.ru/talk/threads/%D0%92%D1%8B%D0%BF%D0%B0%D0%B4%D0%B0%D1% 8E%D1%89%D0%B8%D0%B9-%D1%81%D0%BF%D0%B8%D1%81%D0%BE%D0%BA-%D0%B8-%D0%B2%D1%8B%D0%B1%D0%BE%D1%80%D0%BA%D0% B0-%D0%B8%D0%B7-%D0%91%D0%94.81513/
      Ответить
    • бля, виндузятники заленились так сильно что юзают C# и P/Invoke даже там, где реально логичнее написать модуль на сях
      Ответить
      • > реально логичнее написать модуль на сях
        И потом один хер вызывать его через P/Invoke? А смысл?
        Ответить
        • во-первых не обязаительно, можно и ComInterop
          Во-вторых можно сделать красивый API без всяких этих IntPtr

          Мешать в одном модуле .NET и Native, равно как и C и ASM -- моветон
          Ответить
    • Может там вот такое имелось в виду?
      if (result > 0) {
          // ok, result indicates how many bytes was transferred
      }
      else if (result == 0) {
          // ok, but nothing was transferred
      }
      else {
          // error occurred
      }
      Сишники довольно часто такую идиому юзают.
      Ответить
      • а как иначе то?
        Ответить
        • Внезапно, но в доке по quickusb вот так написано: 0 - ошибка, не 0 - не ошибка.
          Ответить
          • даже отрицательные числа не ошибка? А что они означают?
            Ответить
            • Ничего. Просто true/false.
              Ответить
              • лоль

                я думал может хоть на текущее положение начала пустого места или оно по умному
                Ответить
    • - Сууука ёбаная! - шепчу хуйню, уже не в силах совладать с собой, просто осоловело взирая на то, как Егор жадно подлизывает мой блестящий от слюны болт.
      Ответить

    Добавить комментарий