如何将“编辑文本值”传递给函数
How to pass Edit Text Value to a function
我正在尝试制作一个简单的函数来测试密码的强度。将密码输入到编辑框中,然后调用该函数,该函数返回其强度的分数。我不确定如何将值从编辑框传递到函数,因为该值是 Unicode 字符串。
这是函数的第一部分
extern "C" int __declspec(dllexport) calculateStrength(const wchar_t*
password){
bool hasUpper = false;
bool hasLower = false;
bool hasDigit = false;
bool hasSymbol = false;
int PassScore = 50;
for(int i = 1; i <= sizeof(password); ++i)
{
if( islower(password[i]) )
hasLower = true;
.....
这就是我称之为的地方
void __fastcall TForm1::Button1Click(TObject *Sender){
const wchar_t* password = EnterPass->Text.t_str();
int PassScore = calculateStrength(password);
....
我对这一切真的很陌生,这是基于数小时的谷歌搜索。当我只输入一个字母并输入 ShowMessage(wcslen(password))
时,输出是 50,对于一个以上的字符,它是 75,依此类推。我想我没有正确转换类型,但我就是想不通。
你需要使用wcslen()
而不是sizeof()
,喜欢这个:
extern "C" int __declspec(dllexport) calculateStrength(const wchar_t* password)
{
bool hasUpper = false;
bool hasLower = false;
bool hasDigit = false;
bool hasSymbol = false;
int PassScore = 50;
int len = wcslen(password);
for(int i = 0; i < len; ++i)
{
if (islower(password[i]))
hasLower = true;
...
}
return PassScore;
}
然后你可以这样称呼它:
void __fastcall TForm1::Button1Click(TObject *Sender)
{
UnicodeString password = EnterPass->Text;
int PassScore = calculateStrength(password.c_str());
// or simply:
// int PassScore = calculateStrength(EnterPass->Text.c_str());
...
}
相关文章:
- gtest_使用setargpointee在函数中赋值
- 复制构造函数、赋值运算符C++
- 为什么默认复制函数在按值发送参数时不调用?
- void 函数可以传递值参数吗?
- 复制包含C++所有元素的对象!(构造函数和赋值,最佳实践?
- 通过构造函数创建一些值并尝试添加到文档中使用 rapidjson 不起作用
- 局部变量保留函数中的值
- 将函数参数完美转发到函数指针:按值传递呢?
- c++ lambda:柯里和函数:使用按值捕获与按引用捕获返回不同的结果
- 移动构造函数和右值引用
- C++矢量复制构造函数和赋值运算符是否也复制保留空间?
- 使用成员函数和存储值定义书籍类
- C 字符串在显式构造函数中分配值C++?
- 构造函数将所有值设置为 0
- C++指针无法在函数外部传递值和分段错误(核心转储)错误
- 为什么我的虚函数不赋值?
- 当我使用 void 函数的返回值(通过强制转换函数指针)时,究竟会发生什么?
- 如何将“编辑文本值”传递给函数
- 从QT C 中动态创建的Qline编辑中获取文本值
- 将字符串文本传递给函数并赋值给成员变量