У меня ошибка? Поможете
Код:
int __fastcall TZash::LoadCharSet(const String& sInput)
{
if (sInput.Length() < 2)
return 0;
String sTemp = sInput;
String sParsed;
int nI, nPos;
if (sTemp[1] == '[') {
if ((nPos = sTemp.Pos("]")) > 2)
sTemp.Delete(1, nPos);
}
for (nI = 0; nI < CHARSET_CODES_NUM; nI++) {
String sCode = CHARSET_CODES[nI];
if ((nPos = sTemp.Pos(sCode)) != 0) {
sTemp.Delete(nPos, sCode.Length());
sParsed += m_charSetDecodes[nI];
}
}
sParsed += sTemp;
//необходимость исключения неоднозначных персонажей(Characters)?
String sAmbigChars;
if (m_passOptions[PASSOPTION_EXCLUDEAMBIG]) {
if (m_sLabel1.IsEmpty())
sAmbigChars = CHARSET_AMBIGUOUS;
else
sAmbigChars = m_sLabel2;
}
String sChars = MakeCharSetUnique(sParsed, sAmbigChars);
int nSetSize = sChars.Length();
if (nSetSize < 2)
return 0;
// m_sCharSet.Assign(sChars.c_str(), nSetSize);
m_sCharSetDisplay = sChars;
//существуют ли какие-либо не строчных букв в наборе?
m_blCharSetNonLC = false;
for (nI = 0; nI < nSetSize; nI++) {
if (m_sCharSet[nI] < 'a' || m_sCharSet[nI] > 'z') {
m_blCharSetNonLC = true;
break;
}
}
//shuffle массив с помощью метода Фишера-Йейтса :
//это должно повысить безопасность (немного) бит
int nRand;
for (nI = nSetSize; nI > 1; ) {
//избежать модулю предвзятости!
while ((nRand = g_pRandPool->GetByte()) > (nI*(256/nI)-1));
nRand %= nI;
nI--;
if (nRand != nI)
swap(m_sCharSet[nI], m_sCharSet[nRand]);
}
nRand = 0;
g_pRandPool->Flush();
m_dCharSetEntropy = Log2(nSetSize);
m_sCharSetInfo = TRLFormat("%d characters / %.1f bits per character",
ARRAYOFCONST((nSetSize, roundEntropy(m_dCharSetEntropy))));
//CharSetInfoLbl->Caption = m_sCharSetInfo;
//CharSetInfoLbl->Font->Color = clNavy;
return nSetSize;
}
{
if (sInput.Length() < 2)
return 0;
String sTemp = sInput;
String sParsed;
int nI, nPos;
if (sTemp[1] == '[') {
if ((nPos = sTemp.Pos("]")) > 2)
sTemp.Delete(1, nPos);
}
for (nI = 0; nI < CHARSET_CODES_NUM; nI++) {
String sCode = CHARSET_CODES[nI];
if ((nPos = sTemp.Pos(sCode)) != 0) {
sTemp.Delete(nPos, sCode.Length());
sParsed += m_charSetDecodes[nI];
}
}
sParsed += sTemp;
//необходимость исключения неоднозначных персонажей(Characters)?
String sAmbigChars;
if (m_passOptions[PASSOPTION_EXCLUDEAMBIG]) {
if (m_sLabel1.IsEmpty())
sAmbigChars = CHARSET_AMBIGUOUS;
else
sAmbigChars = m_sLabel2;
}
String sChars = MakeCharSetUnique(sParsed, sAmbigChars);
int nSetSize = sChars.Length();
if (nSetSize < 2)
return 0;
// m_sCharSet.Assign(sChars.c_str(), nSetSize);
m_sCharSetDisplay = sChars;
//существуют ли какие-либо не строчных букв в наборе?
m_blCharSetNonLC = false;
for (nI = 0; nI < nSetSize; nI++) {
if (m_sCharSet[nI] < 'a' || m_sCharSet[nI] > 'z') {
m_blCharSetNonLC = true;
break;
}
}
//shuffle массив с помощью метода Фишера-Йейтса :
//это должно повысить безопасность (немного) бит
int nRand;
for (nI = nSetSize; nI > 1; ) {
//избежать модулю предвзятости!
while ((nRand = g_pRandPool->GetByte()) > (nI*(256/nI)-1));
nRand %= nI;
nI--;
if (nRand != nI)
swap(m_sCharSet[nI], m_sCharSet[nRand]);
}
nRand = 0;
g_pRandPool->Flush();
m_dCharSetEntropy = Log2(nSetSize);
m_sCharSetInfo = TRLFormat("%d characters / %.1f bits per character",
ARRAYOFCONST((nSetSize, roundEntropy(m_dCharSetEntropy))));
//CharSetInfoLbl->Caption = m_sCharSetInfo;
//CharSetInfoLbl->Font->Color = clNavy;
return nSetSize;
}
Код:
m_dCharSetEntropy = Log2(nSetSize);
[BCC32 Error] ZachYlKn1.cpp(739): E2015 Ambiguity between '_fastcall System::Math::Log2(const float) at c:\progra~2\embarc~1\radstu~1\9.0\include\windows\rtl\System.Math.hpp:199' and '_fastcall System::Math::Log2(const long double) at c:\progra~2\embarc~1\radstu~1\9.0\include\windows\rtl\System.Math.hpp:201'
Full parser context
ZachYlKn1.cpp(675): parsing: int _fastcall TZash::LoadCharSet(const System::UnicodeString &)
Здравствуй сынок, я теперь твой новый учитель)
Там же черным по белому написано: непонятка между вызовом функций с параметрами флоат и лонг дубл. Она возникает, так как переменная которую ты туда передаешь объявлена как инт. Во что этот инт надо преобразовать - в флоат или в лонг дубл? Компилятор не знает, а как бы ты поступил, если бы был компилятором?
Спасибо исправил все.