Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

У меня ошибка. Кто поможет

73K
07 сентября 2013 года
Alexeyvolsh
18 / / 19.08.2013
Код:
int  __fastcall TZash::LoadWordListFile(const String& sFileName)
{
    int nNumOfWords = WORDLIST_DEFAULT_SIZE;
  TStringList* pWordList = NULL;
 
  if (!sFileName.IsEmpty()) {
    FILE* pFile = fopen(sFileName.c_str(), "ru");
 
    if (pFile == NULL)
      return -1;
 
    pWordList = new TStringList();
 
  //игнорировать дубликаты
  pWordList->Sorted = true;
    pWordList->Duplicates = dupIgnore;
 
    Refresh();
    Screen->Cursor = crHourGlass;
 
#if 0
    const int BUFSIZE = 64;
    char szBuf[BUFSIZE];
 
    while (fgets(szBuf, BUFSIZE, pFile) != NULL &&
           pWordList->Count < WORDLIST_MAX_SIZE)
    {
      int nWordLen = strlen(szBuf);
      if (szBuf[nWordLen-1] == '\n')
        szBuf[--nWordLen] = '\0';
      if (nWordLen > 0 && nWordLen <= m_nMaxWordLen)
        pWordList->Add(szBuf);
    }
#else
    const int BUFSIZE = 16384;
    char szBuf[BUFSIZE];
    char szWord[WORDLIST_MAX_WORDLEN + 1];
    int nCharsRead;
    int nWordLen = 0;
    bool blBreak = false;
 
    while (!blBreak)
    {
      nCharsRead = fread(szBuf, 1, BUFSIZE, pFile);
      if (nCharsRead == 0) {
        blBreak = true;
        szBuf[nCharsRead++] = '\n';
      }
      for (int nI = 0; nI < nCharsRead; nI++) {
        char c = szBuf[nI];
        switch (c) {
        case '\n':
        case '\t':
        case ' ':
          if (nWordLen > 0 && nWordLen <= m_nMaxWordLen) {
            szWord[nWordLen] = '\0';
            pWordList->Add(szWord);
            if (pWordList->Count == WORDLIST_MAX_SIZE) {
              blBreak = true;
              nI = nCharsRead;
            }
          }
          nWordLen = 0;
          break;
        default:
          if (nWordLen < m_nMaxWordLen)
            szWord[nWordLen] = c;
          nWordLen++;
          continue;
        }
      }
    }
#endif
 
    fclose(pFile);
 
    Screen->Cursor = crDefault;
 
    nNumOfWords = pWordList->Count;
    if (nNumOfWords < 2) {
      delete pWordList;
      return 0;
    }
 
    //давайте обрабатывать ресурсы памяти экономически
    pWordList->Capacity = pWordList->Count;
  }
 
  if (m_pWordList != NULL)
    delete m_pWordList;
  m_pWordList = pWordList;
  m_dWordListEntropy = Log2(nNumOfWords);
 
  /*WordListInfoLbl->Caption = TRLFormat("%d words / %.1f bits per word",
    ARRAYOFCONST((nNumOfWords, roundEntropy(m_dWordListEntropy))));   */

 
  return nNumOfWords;
}
Ругаеться на строку 7
FILE* pFile = fopen(sFileName.c_str(), "ru");

Код ошибки
[BCC32 Error] ZachYlKn1.cpp(756): E2342 Type mismatch in parameter '__path' (wanted 'const char *', got 'wchar_t *')
Full parser context
ZachYlKn1.cpp(751): parsing: int _fastcall TZash::LoadWordListFile(const UnicodeString &)
446
07 сентября 2013 года
Meander
487 / / 04.09.2011
Type mismatch in parameter '__path' (wanted 'const char *', got 'wchar_t *')
Type mismatch in parameter - несоответствие типов
где?
в __path - в пути к файлу
почему?
wanted 'const char *', - требовался указатель на константный символ
got 'wchar_t *' - а ему подсунули указатель на широкий символ юникода.
Вывод: преобразовать результат sFileName.c_str() в const char *.
Ищи преобразование wchar_t * в const char *.
326
07 сентября 2013 года
sadovoya
757 / / 19.11.2005
Это что за режим fopen-а "ru" ? Читаем о ф-ции здесь.
73K
16 сентября 2013 года
Alexeyvolsh
18 / / 19.08.2013
Код:
Код:
void __fastcall TZash::Button8Click(TObject *Sender)
{
 int nNumOfPassw = 1;

  if (Sender == Button8){
   nNumOfPassw = passNUmEdit2->Text.ToIntDef(0);
    if (nNumOfPassw < 1 || nNumOfPassw > PASSW_MAX_NUM) {
      MsgBox(TRLFormat("Неверное количество паролей.\nMinimum - 1, а максимальный "
        "is %d.", ARRAYOFCONST((PASSW_MAX_NUM))), MB_ICONERROR);
    passNUmEdit2->SetFocus();
    return;
     }
   }

    int nCharsLen = 0, nNumOfWords = 0;
  double dPasswSec = 0;

  if (CheckBox1->Checked) {
    nCharsLen = WordsNumBoxEdit4->Text.ToIntDef(0);
    if (nCharsLen < 1 || nCharsLen > PASSW_MAX_CHARS) {
      MsgBox(TRLFormat("Неверное количество символов.\nMinimum - 1, а максимальный "
        "is %d.", ARRAYOFCONST((PASSW_MAX_CHARS))), MB_ICONERROR);
      WordsNumBoxEdit4->SetFocus();
    return;
    }

     dPasswSec = nCharsLen * m_dCharSetEntropy;
  }

  if (CheckBox2->Checked) {
    nNumOfWords = WordsNumBoxEdit5->Text.ToIntDef(0);
    if (nNumOfWords < 1 || nNumOfWords > PASSW_MAX_WORDS) {
      MsgBox(TRLFormat("Неверное количество слов.\nMinimum - 1, а максимальный "
        "is %d.", ARRAYOFCONST((PASSW_MAX_WORDS))), MB_ICONERROR);
     WordsNumBoxEdit5->SetFocus();
    return;
    }
    dPasswSec += nNumOfWords * m_dWordListEntropy;

  }

  int nPasswSec = min(Floor(dPasswSec), ENTROPY_MAX);
  const String sPasswListInfoOrig = "%d пароли генерируются.\r\пмаксимальная безопасности "
    "каждый пароль: %d бит.\r\пмаксимальная безопасности "
    "всего списка: %d бит.";
  static String sPassListMemo1Info;
  TStringList* pPassList = NULL;

  bool blCallback = false;

  try {
    bool blNoDuplicates = m_passOptions[PASSOPTION_NODUPLICATES];
    int nCallbackFreq;

    if (nNumOfPassw > 1) {
      if (sPassListMemo1Info.IsEmpty())
        sPassListMemo1Info = TRL(sPassListMemo1Info);

     pPassList = new TStringList;
      pPassList->Capacity = nNumOfPassw;

    Form4->Close();

    if (blNoDuplicates || nNumOfPassw > 5000) {
        blCallback = true;
    CallbackForm4->Init(TRL("Создание пароля из списка ..."), TRL("%d of %d "
          "пароли генерируются"), nNumOfPassw);
        nCallbackFreq = (blNoDuplicates) ? 100 : 1000;
      }
      else
        Refresh();

      Screen->Cursor = (blCallback) ? crAppStart : crHourGlass;

    }

     // добавить энтропии системы перед инициализацией PRNG -...
    m_pEntropyMng->AddSystemEntropy();

    int nI, nPasswFlags = 0, nPassphrFlags = 0;
    SecureWString sChars, sWords;
    bool blFirstCharNotLC = m_passOptions[PASSOPTION_FIRSTCHARNOTLC];

    if (nCharsLen != 0) {
      if (blFirstCharNotLC && m_blCharSetNonLC)
        nPasswFlags |= GENPASSW_FIRSTCHARNOTLC;
      if (m_passOptions[PASSOPTION_EXCLUDEREPCHARS])
        nPasswFlags |= GENPASSW_EXCLUDEREPCHARS;
      for (nI = 0; nI < GENPASSW_NUMOPTCHARSETS; nI++) {
        if (m_passOptions[PASSOPTION_INCLUDEUCL+nI])
          nPasswFlags |= GENPASSW_INCLUDEUCL << nI;
      }

      sChars.New(nCharsLen + 1);
    }

    if (nNumOfWords != 0) {
      if (CheckBox3->Checked)
        nPassphrFlags |= GENPASSPHR_COMBINEWCH;
      if (m_passOptions[PASSOPTION_SEPWORDS])
        nPassphrFlags |= GENPASSPHR_DONTSEPWORDS;
      if (m_passOptions[PASSOPTION_SEPWORDSCHARS])
        nPassphrFlags |= GENPASSPHR_DONTSEPWCH;

      if (nPassphrFlags & GENPASSPHR_COMBINEWCH)
        nPasswFlags &= ~GENPASSW_FIRSTCHARNOTLC;

      sWords.New(nCharsLen + nNumOfWords * (WORDLIST_MAX_WORDLEN + 2) + 1);
    }

    int nPasswLen, nPasswCnt = 0;
    int nPasswBytes = sPassListMemo1Info.Length() + 9;
    int nConsecDupl = 0, nMaxDupl = INT_MAX;

    try {
      for (nI = 0; nPasswCnt < nNumOfPassw; nI++) {
        if (nConsecDupl > nMaxDupl) {
          MsgBox(TRLFormat("Система защиты останавливается здесь для того, чтобы"
                           "избежать бесконечного цикла.\n"-
                           "Наверное, это не возможно, чтобы создать список из"
                           "%d\nunique записи "
                           "с нынешним пароль.\n\но, %d уникальный "
                           "паролей может быть\ngenerated успешно.",
            ARRAYOFCONST((nNumOfPassw, nPasswCnt))), MB_ICONWARNING);
          break;
        }


            if (blCallback && nI == nCallbackFreq) {
          CallbackForm4->Callback(nPasswCnt);
          nI = 0;
        }

        if (nCharsLen != 0)
          nPasswLen = GenPassword(sChars, nCharsLen, m_sCharSet, m_charSetPredefined,
            nPasswFlags, g_pRandomPool);
        if (nNumOfWords != 0)
          nPasswLen = GenPassphrase(sWords, nNumOfWords, m_pWordList, sChars,
            nPassphrFlags, g_pRandomPool);

        wchar_t* pszPass = (nNumOfWords != 0) ? sWords : sChars;

        if (blFirstCharNotLC && IsLower(pszPass[0]))
          pszPass[0] = ToUpper(pszPass[0]);

        if (nNumOfPassw == 1) {
          ClearTextBuf(PassEdit3);
          PassEdit3->SetTextBuf(pszPass);
          PassInfoLbl->Caption = TRLFormat("Длина: %d символов / "
            "Безопасность: %d бит", ARRAYOFCONST((nPasswLen, nPasswSec)));
        }

     nPasswBytes += nPasswLen + 2; // also count line breaks ("\r\n")!
          if (nPasswBytes > m_nMaxPasswBytes) {
            passNUmEdit2->Text = nPasswCnt;
            MsgBox(TRLFormat("Достигнуто максимальное число байтов, Допускается\n"
              "in the password list.\n\nNumber of passwords has been "
              "снижена до %d.", ARRAYOFCONST((nPasswCnt))), MB_ICONWARNING);
            break;
          }

          pPassList->Add(pszPassw);
          nConsecDupl = 0;
        }

        nPasswCnt++;
      }
    }
    catch (ECallback& e) {
      MsgBox(TRLFormat("%s.\n%d пароли генерируются.", ARRAYOFCONST((e.Message,
        nPasswCnt))), MB_ICONWARNING);
    }

    g_pRandPool->Flush();
    m_pEntropyMng->ConsumeEntropyBits(nPasswSec * nPasswCnt);
    UpdateEntropyProgress();

    if (nNumOfPassw == 1)
      PassEdit3->SetFocus();
    else {
      if (blCallback) {
        CallbackForm4->ProgressBar1->Position = nPasswCnt;
        CallbackForm4->ProgressLabel8->Caption = TRL("Копирование списка паролей ...");
        CallbackForm4->Refresh();
      }

      String sHeader;
      /*try {
        sHeader = Format(sPasswListInfo, ARRAYOFCONST((nPasswCnt,
          nPasswSec, min(nPasswSec * nPasswCnt, ENTROPY_MAX))));
      }
      catch (EConvertError& e) {
        pLangSupp->LastTranslError(e.Message);
        sHeader = Format(sPasswListInfoOrig, ARRAYOFCONST((nPasswCnt,
          nPasswSec, min(nPasswSec * nPasswCnt, ENTROPY_MAX))));
        sPasswListInfo = sPasswListInfoOrig;
      }                                                */

      Form4->PassListMemo1->Text = sHeader + "\r\n\r\n" + pPassListMemo1->Text;

      delete pPassListMemo1;
      pPassListMemo1 = NULL;

      if (blCallback)
        CallbackForm4->Terminate();
      blCallback = false;

      Screen->Cursor = crDefault;

      Form4->Execute();
    }
 }
 catch (Exception& e) {
    MsgBox(TRLFormat("Произошла ошибка при генерации пароля:\n%s.",
      ARRAYOFCONST((e.Message))), MB_ICONERROR);
    g_pRandPool->Flush();
    if (pPasswList != NULL)
      delete pPasswList;
    if (blCallback)
      CallbackForm4->Terminate();
    Screen->Cursor = crDefault;
  }

Ошибки. в строках
 
Код:
if (nCharsLen != 0)
          nPasswLen = GenPassword(sChars, nCharsLen, m_sCharSet, m_charSetPredefined,
            nPasswFlags, g_pRandomPool);
        if (nNumOfWords != 0)
          nPasswLen = GenPassphrase(sWords, nNumOfWords, m_pWordList, sChars,
            nPassphrFlags, g_pRandomPool);


[BCC32 Error] Zach.cpp(1068): E2357 Reference initialized with 'SecureWString', needs lvalue of type 'SecureString'
Full parser context
Zach.cpp(934): parsing: void _fastcall TZash::Button8Click(TObject *)
[BCC32 Error] Zach.cpp(1068): E2342 Type mismatch in parameter 'sDest' (wanted 'SecureString &', got 'SecureWString')
Full parser context
Zach.cpp(934): parsing: void _fastcall TZash::Button8Click(TObject *)
[BCC32 Error] Zach.cpp(1071): E2357 Reference initialized with 'SecureWString', needs lvalue of type 'SecureString'
Full parser context
Zach.cpp(934): parsing: void _fastcall TZash::Button8Click(TObject *)
[BCC32 Error] Zach.cpp(1071): E2342 Type mismatch in parameter 'sDest' (wanted 'SecureString &', got 'SecureWString')
Full parser context
Zach.cpp(934): parsing: void _fastcall TZash::Button8Click(TObject *)
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог