函数PathMatchSpec()
和PathMatchSpecEx()
返回不正确的朝鲜语结果。
在下面的测试程序中,名称为"수납파일"
,掩码为"수납*"
。
如果Windows语言为英语或德语,则运行良好。
如果Windows语言为朝鲜语,则两个函数都返回不正确的结果。
我应该如何使用这些函数才能使它们在所有语言中正常工作?
我不懂韩语。在Windows 10和11上用 Delphi 10.4.2测试过。
C++控制台:
#include <iostream>
#include <shlwapi.h>
#pragma comment(lib, "Shlwapi.lib")
int main()
{
if (PathMatchSpec(L"수납파일", L"수납*"))
std::cout << "PathMatchSpec success!\n";
else
std::cout << "PathMatchSpec failed!\n";
if (PathMatchSpecEx(L"수납파일", L"수납*", PMSF_NORMAL)==S_OK)
std::cout << "PathMatchSpecEx success!\n";
else
std::cout << "PathMatchSpecEx failed!\n";
}
测试程序:
unit Unit1;
interface
uses
Winapi.Windows, Winapi.Messages,Winapi.ShLwApi,
System.SysUtils, System.Variants, System.Classes, Vcl.Graphics,
Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.StdCtrls;
type
TForm1 = class(TForm)
Edit1: TEdit;
Label1: TLabel;
Label2: TLabel;
Edit2: TEdit;
Button1: TButton;
Label3: TLabel;
Button2: TButton;
Label4: TLabel;
procedure FormCreate(Sender: TObject);
procedure Button1Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
function PathMatchSpecEx(pszFile, pszSpec: LPCWSTR; dwFlags: DWORD ): HRESULT; stdcall;
{$EXTERNALSYM PathMatchSpecEx}
var
Form1: TForm1;
implementation
{$R *.dfm}
function PathMatchSpecEx; external 'shlwapi.dll' name 'PathMatchSpecExW';
procedure TForm1.FormCreate(Sender: TObject);
var fileName, fileMask: string;
begin
fileName := '수납파일';
fileMask:= '수납*';
Edit1.Text := fileName;
Edit2.Text := fileMask;
end;
procedure TForm1.Button1Click(Sender: TObject);
var fileName, fileMask: string;
begin
fileName := Edit1.Text;
fileMask := Edit2.Text;
if PathMatchSpecEx(PChar(fileName), PChar(fileMask),0)=S_OK then
Label3.Caption := 'Success!'
else
Label3.Caption := 'PathMatchSpecEx failed!';
end;
procedure TForm1.Button2Click(Sender: TObject);
var fileName, fileMask: string;
begin
fileName := Edit1.Text;
fileMask := Edit2.Text;
if PathMatchSpec(PChar(fileName), PChar(fileMask)) then
Label4.Caption := 'Success!'
else
Label4.Caption := 'PathMatchSpec failed!';
end;
end.
1条答案
按热度按时间rfbsl7qr1#
正如您在注解中所说的,源文件的代码页会产生影响。下面的代码解释了所发生的事情。
以代码页50225保存源文件。
总体
轴
b
以Unicode代码页65001保存源文件。
总体
轴
b
c
基因
d
\