gpt4 book ai didi

c++ - 如何将编辑文本值传递给函数

转载 作者:太空宇宙 更新时间:2023-11-04 13:00:10 25 4
gpt4 key购买 nike

我正在尝试制作一个测试密码强度的简单函数。密码被输入到一个编辑框中,然后调用返回密码强度分数的函数。我不确定如何将值从编辑框传递给函数,因为该值是 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());

...
}

关于c++ - 如何将编辑文本值传递给函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44478997/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com