在delphi中修剪是否可以绕过?

Vla*_*pin -2 delphi delphi-10-seattle

我试图通过执行以下操作来检查字符串是否为空

if trim(somestring) = '' then
begin
//that an empty string
end
Run Code Online (Sandbox Code Playgroud)

我正在我的客户端应用程序中执行此空检查,但我注意到一些客户端即使应用此检查也会插入空字符串.

在我的Linux服务器端那些显示为正方形的空字符,当我复制这些字符时,我可以绕过空字符串检查,如下面的示例

 ??? 
Run Code Online (Sandbox Code Playgroud)

如果你复制这个空的字符,检查将不会受影响我怎么能避免这种情况?

Dav*_*nan 5

您的代码工作正常,字符串不为空.空字符串是长度为零的字符串,它没有字符.你指的是空字符,但没有这样的东西.什么时候.系统显示一个小的空方块,表示所选字体没有该字符的字形.

我们假设这些字符串无效.在这种情况下,您遇到的真正问题是您还没有完全理解字符串有效所需的属性.如果字符串包含至少一个序数值大于32的字符,则假定字符串有效,则编写代码.显然,该测试不正确.您需要退后一步,制定出有效的准确规则.只有当这些在您的脑海中清楚时,您才能纠正您的程序并正确检查其有效性.

另一方面,也许这些字符串是有效的,错误只是您在检查数据时错误地确定了.只有你知道这一点,我们没有这方面的信息.

所有这一切中有用的技术是检查字符串的序数值.循环打印每个字符的序数值.这可以让你看到真正存在的东西,而不是非打印字符,没有字形的字符,无效的编码等等.