• Как можно подставить другой путь к диску через метод FindFirstFileW?

    @Sumor
    Если вы используете TCHAR, то вместо FindFirstFileW нужно использовать FindFirstFile.
    TCHAR это в зависимости от настроек препроцессора или char, или wchar_t.
    Соответственно функции WinApi в зависимости от этой настройки сами выбирают какую версию ansi или unicode вызывать.
    Условно, вы можете использовать char, вызывать GetModuleFileNameA и FindFirstFileA.
    Или, если у вас только unicode: использовать wchar_t, вызывать GetModuleFileNameW и FindFirstFileW.
    Или, как делает большинство, использовать универсальный тип TCHAR, вызывать GetModuleFileName и FindFirstFile. Компилятор сам выберет какую версию ansi или unicode использовать.

    К сожалению для консоли Microsoft не придумал tcout, поэтому нужно в зависимости от параметра препроцессора выбирать консоль, например так:
    #if defined(UNICODE) || defined(_UNICODE)
    #define tcout std::wcout
    #else
    #define tcout std::cout
    #endif
    Ответ написан
    Комментировать
  • Wpf Mvvm Как получить значение из другой формы?

    @Sumor
    У вас одна ViewModel, которую и передаёте из одной формы в другую (устанавливаете, например, в DataContext). По нажатию клавиши во второй форме сохраняете то, что вам нужно в переданной ViewModel и автоматически эта информация станет доступной в первой форме.

    void button_click(object sender, RoutedEventArgs e)
    {
      var form = new Form2(){DataContext = DataContext};
      form.ShowDialog();
    }
    Ответ написан
    Комментировать
  • Номера ошибок. Требуется однократно указать номер ошибки в коде. Есть хорошая практика?

    @Sumor
    Используйте для своих ошибок свой класс исключений. Так вы отделите свои ошибки от чужих.
    В качестве номера ошибок используйте enum с явным указанием числового значения - с одной стороны в своём коде вы используете понятные буквенные обозначения, с другой - у вас есть их числовое значение.
    public MyException : Exception
    {
      public enum MyErrorCodeEnum { Error1 = 1, Error2 = 2, Error22 = 22};
      
      private MyErrorCodeEnum _myErrorCode;
      public MyErrorCodeEnum MyErrorCode
      {
        get {return _myErrorCode;}
      }
    
      public MyException(MyErrorCodeEnum errorCode)
      {
        _myErrorCode = errorCode;
      }
    }
    Ответ написан
    2 комментария
  • Как открыть и закрыть DVD-RW дисковод?

    @Sumor
    Попробуйте
    OpenParm.lpstrDeviceType = L"F:";
    OpenParm.lpstrDeviceType=L"CDAudio";
    mciSendCommand(0, MCI_OPEN, MCI_OPEN_TYPE | MCI_OPEN_ELEMENT, (DWORD_PTR)&OpenParm);
    Ответ написан
    Комментировать
  • Почему ошибка Argument is out of range?

    @Sumor
    При первом запуске у вас список AllSymbols видимо чем-то заполнен.
    Перед вторым запуском вы его очищаете: AllSymbols.Clear()
    А затем
    int rnd = Random.Range(0, AllSymbols.Count);
    
    while (AllSymbols[rnd].GetComponent<Text>().text != "-")
                    rnd = Random.Range(0, AllSymbols.Count);

    С учётом того, что AllSymbols.Count == 0, Random.Range(0, 0) я даже не знаю что возвратит. В любом случае у вас нет ни AllSymbols[0], ни тем более AllSymbols[-1]
    Ответ написан
    2 комментария
  • Как полностью очистить массив?

    @Sumor
    Вы можете после использования сделать:
    checkAddDel = null;
    или
    checkAddDel = new int[0];
    А заполненный ранее массив уничтожится сборщиком мусора.
    Ответ написан
    Комментировать
  • Как правильно перевести длину в прямоугольных координатах в проекцию wgs84?

    @Sumor
    Вопрос в том насколько точно вам нужно провести расчёты.
    В первом и самом простом приближении можно использовать следующее:
    Для точки полигона с заданными координатами X, Y вычислить примерные коэффициенты перевода в метры для данной точки.
    Для широты это примерно 6356752/360~17657 метров на градус
    Для долготы вычисляется в зависимости от широты, для каждой точки отдельно: 6378137/360 * cos(широты)
    Например, если вам нужно найти примерные координаты точек отстоящих от точки с координатами (55,0000; 37,0000) на 1000 метров, то:
    17657 метров на градус широты дают нам расстояние в 0,056634762 градуса на 1000 метров
    Для долготы: 6 378 137/360 * cos(55 градусов) ~ 10162 метров на градус, что даёт 0,098405826 градуса на 1000 метров.
    Итого нужные нам точки лежат в пределах 55+dY; 37+dY, где (dx/0,056634762)^2 + (dy/0,098405826)^2 < 1000^2

    Подсчёты примерные, и наверняка с ошибками, но общий смысл должен быть понятен. Точность данных расчётов около метра, нужно больше - считайте точнее. При увеличении расстояний начнёт сказываться кривизна земли и данный метод станет совсем неточным.
    Ответ написан
  • Как копировать выбранные папки C#?

    @Sumor
    На входе IEnumerable или IEnumerable. Тогда:
    void perebor_updates(IEnumerable<DirectoryInfo> dirs)
    {
      foreach(var dir in dirs)
    ...
    }

    или
    void perebor_updates(IEnumerable<string> dirNames)
    {
      foreach(var name in dirNames)
      {
        var dir = new DirectoryInfo(name);
    ...
      {
    ...
    }


    А дальше у вас есть рекурсивная функция, принимающая одну папку в качестве параметра и выполняющая нужное действие.
    Ответ написан
    1 комментарий
  • Медленное шифрование AES256, как ускорить?

    @Sumor
    Ну если результат шифрования расшифровывается, и совпадает с зашифрованными другими программами данными, то всё правильно.
    Проблема заключается в том, что часто реализованные в лоб алгоритмы выполняют много повторяющейся работы, которую можно оптимизировать. Как минимум, в процессорах 8-байтные регистры, а большинство операций в алгоритме - однобайтовые.
    Для оптимизации можно и нужно использовать профайлер, который покажет узкие места, которые можно попробовать оптимизировать.
    При компиляции нужно указать параметры для наибольшего ускорения.

    Для реализации можно использовать специальные инструкции процессора AES-NI, которые и используются в truecrypt.
    Ответ написан
    Комментировать
  • Задать имя Excel документа через Qt Creator?

    @Sumor
    После создания книги сделайте ей SaveAs.

    PS. У метода Workbooks.Add в параметры передаётся имя файла с шаблоном, на основе которого создать новую таблицу, а не имя будущей книги.
    Ответ написан
    Комментировать
  • Как вывести несколько ячеек из разных таблиц с разными условиями?

    @Sumor
    Попробуйте как-то так:
    SELECT `nazvanie` ,  `gorod`,  `ulica` 
    FROM  `dannie` as D LEFT JOIN `ulica` as U  on D.`kod_ulica` = U.`kod_ulica`
                        LEFT JOIN `gorod` as G  on U.`kod_gorod` = G.`kod_gorod`
                        LEFT JOIN `region` as R  on G.`kod_region` = R.`kod_region`

    Но, возможно, будет лучше иметь одну таблицу адреса, с колонками: код региона, код города, код улицы, чтобы не склеивать таблицы на ходу.
    Ответ написан
  • C# .Net Как изменить имя и расширение в другой папке?

    @Sumor
    Как-то так, рекурсивно:

    string name = @"C:\Путь";
    DirectoryInfo dir = new DirectoryInfo (name);
    ChangeNameRecursive(dir);


    void ChangeNameRecursive(DirectoryInfo dir)
    {
      int i = 0;
      foreach(var item in dir.GetFiles())
      {  
        File.Move (item.FullName, name + "test_" + i.ToString() + ".pp");
        i++;
      }
      foreach(var d in dir.GetDirectories())
      {  
        if(d.Name == "." || d.Name == "..") continue;
        ChangeNameRecursive(d);
      }
    }
    Ответ написан
  • Как считается checksum в TCP?

    @Sumor
    Вы не дочитали эту часть:

    The checksum also covers a 96 bit pseudo header conceptually
    prefixed to the TCP header. This pseudo header contains the Source
    Address, the Destination Address, the Protocol, and TCP length.
    This gives the TCP protection against misrouted segments. This
    information is carried in the Internet Protocol and is transferred
    across the TCP/Network interface in the arguments or results of
    calls by the TCP on the IP.

    +--------+--------+--------+--------+
    | Source Address |
    +--------+--------+--------+--------+
    | Destination Address |
    +--------+--------+--------+--------+
    | zero | PTCL | TCP Length |
    +--------+--------+--------+--------+

    The TCP Length is the TCP header length plus the data length in
    octets (this is not an explicitly transmitted quantity, but is
    computed), and it does not count the 12 octets of the pseudo
    header.

    Нужно добавить данные псевдозаголовка.
    Ответ написан
    Комментировать
  • Как задать координаты прямоугольника без StackPanel?

    @Sumor
    Рисуй на Canvas - есть и координаты и размеры.
    Ответ написан
    Комментировать
  • Для каких элементов существует обратный элемент(метод Хилла)?

    @Sumor
    Вам необходимо изучить/прочитать основы алгебры конечных множеств и линейной алгебры.
    Вкратце примерно так:
    Если мощность множества символов равна простому числу, то обратный элемент есть у всех элементов кроме нуля.
    Если мощность множества символов равна степени простого числа (например, 2^5), то можно определить операцию умножения таким образом, чтобы также у каждого ненулевого элемента был обратный элемент.
    Для всех остальных случаев действительно обратный элемент есть только только у элементов, которые взаимно простые с мощностью множества.
    Достаточно просто показать, что если элемент a имеет общие множители с m (мощность множества), то:
    a = k*НОД(a,m)
    m = l*НОД(a,m), l < m
    тогда
    a*l = k*l*НОД(a,m) = k*m*НОД(a,m) = 0 (mod m)
    Элемент 0 не имеет обратного, значит и a не имеет обратного.
    Ответ написан
    Комментировать
  • Как в байте поменять порядок следования битов на Pascal?

    @Sumor
    Можно просто влоб:
    b:= (b and $80 shr 7) or (b and $40 shr 5) or (b and $20 shr 3) or (b and $10 shr 1) or 
        (b and $08 shl 1) or (b and $04 shl 3) or (b and $02 shl 5) or (b and $01 shl 7);
    Ответ написан
    Комментировать
  • Как считать строку из ObservableCollection по заданным параметрам?

    @Sumor
    В combobox1.SelectedItem у тебя будет выбранный объект типа CreditsList.
    В простейшем случае:
    public void CreditsList_SelectionChanged(object sender, SelectionChangedEventArgs args)
            {
                if(combobox1.SelectedItem != null)
                    MessageBox.Show((combobox1.SelectedItem as CreditsList).credit_id);
            }
    Ответ написан
  • Как перенести коронку в начало строки, сохранив при этом знаки в ней?

    @Sumor
    \r это возврат каретки (CR или 13 или 0x0d)
    \n это новая строка (LF или 10 или 0x0a)
    Если у вас устройство (например, принтер или консоль) их различает, то нужно использовать оба символа. Первый перемещает каретку в начало строки, а второй переходит к следующей строке.
    Традиционно в текстовых файлах Linux используется только \n, а в текстовых файлах Windows используется \r\n. В некоторых PDF внутри встречается только \r.
    Ответ написан
    Комментировать
  • Как избавится от A call to PInvoke function unbalanced the stack?

    @Sumor
    Все вызовы WinApi являются stdcall (winapi). Отличие от Cdecl - как раз в том, кто прочищает стек с параметрами.
    [DllImport("user32.dll", CharSet = CharSet.Auto, SetLastError = true, CallingConvention = CallingConvention.StdCall)]
    public static extern int CallNextHookEx(IntPtr hhk, int nCode, MouseMessages wParam, [In]MSLLHOOKSTRUCT lParam);
    Ответ написан
    Комментировать
  • Как заставить консольное c++ приложение работать в фоне?

    @Sumor
    Нужно дождаться завершения потоков.
    int main(int argc, char *argv[])
    {
      std::thread thr(SetView);
      thr.detach();
      std::thread thr2(SetListen);
      thr2.detach();
      thr.Join();
      thr2.Join();
      return 0;
    }
    Ответ написан