PROCESS_INFO pi;
INT argc;
WCHAR **argv;
DWORD i;
DWORD dwBufferSize = lstrlen(lpCmdLine)+MAX_PATH+1024;
LPSTR szShowBuffer = (LPSTR)MyAlloc(dwBufferSize);GetProcessInfo(&pi);
argv = CommandLineToArgvW(pi.szwCommandLine, &argc);
*szShowBuffer = NULL;
for (i=0; i<argc; i++)
{
DWORD dwBufferSize = lstrlenW(*argv) + 1;
LPSTR szMBArgv = MyAlloc(dwBufferSize);
WideCharToMultByte(CP_ACP, NULL, *argv, -1, szMBArgv, dwBufferSize, NULL, NULL);
argv++;
lstrcat(szShowBuffer, "\n");
lstrcat(szShowBuffer, szMBArgv);
MyFree(szMBArgv);
}某本VC++书的例子代码,不懂C,盲目大致翻译如下,很明显是有问题的~ =_=||var
pi: PROCESS_INFO;
Argc: Integer;
argv: PPWideChar;
i: DWORD;
dwBufferSize: DWORD;
szShowBuffer: PChar;
szMBArgv: PChar;
begin
dwBufferSize := lstrlen(GetCommandLine()) + MAX_PATH + 1024;
szShowBuffer := PAnsiChar(MyAlloc(dwBufferSize)); GetProcessInfo(@pi);
Argv := CommandLineToArgvW(pi.szwCommandline, Argc);
szShowBuffer := nil;
for i:=0 to Argc-1 do
begin
dwBufferSize := lstrlenW(@Argv^) + 1;
szMBArgv := MyAlloc(dwBufferSize);
WideCharToMultiByte(CP_ACP, 0, Argv^, -1, szMBArgv, dwBufferSize, nil, nil);
Inc(Argv, lstrlenW(@Argv^) + 1);
lstrcat(szShowBuffer, #10);
lstrcat(szShowBuffer, szMBArgv);
// MessageBox(0, szShowBuffer, '参数', MB_OK);
MyFree(szMBArgv);
end;
end;求调教,求指出指针错误~
INT argc;
WCHAR **argv;
DWORD i;
DWORD dwBufferSize = lstrlen(lpCmdLine)+MAX_PATH+1024;
LPSTR szShowBuffer = (LPSTR)MyAlloc(dwBufferSize);GetProcessInfo(&pi);
argv = CommandLineToArgvW(pi.szwCommandLine, &argc);
*szShowBuffer = NULL;
for (i=0; i<argc; i++)
{
DWORD dwBufferSize = lstrlenW(*argv) + 1;
LPSTR szMBArgv = MyAlloc(dwBufferSize);
WideCharToMultByte(CP_ACP, NULL, *argv, -1, szMBArgv, dwBufferSize, NULL, NULL);
argv++;
lstrcat(szShowBuffer, "\n");
lstrcat(szShowBuffer, szMBArgv);
MyFree(szMBArgv);
}某本VC++书的例子代码,不懂C,盲目大致翻译如下,很明显是有问题的~ =_=||var
pi: PROCESS_INFO;
Argc: Integer;
argv: PPWideChar;
i: DWORD;
dwBufferSize: DWORD;
szShowBuffer: PChar;
szMBArgv: PChar;
begin
dwBufferSize := lstrlen(GetCommandLine()) + MAX_PATH + 1024;
szShowBuffer := PAnsiChar(MyAlloc(dwBufferSize)); GetProcessInfo(@pi);
Argv := CommandLineToArgvW(pi.szwCommandline, Argc);
szShowBuffer := nil;
for i:=0 to Argc-1 do
begin
dwBufferSize := lstrlenW(@Argv^) + 1;
szMBArgv := MyAlloc(dwBufferSize);
WideCharToMultiByte(CP_ACP, 0, Argv^, -1, szMBArgv, dwBufferSize, nil, nil);
Inc(Argv, lstrlenW(@Argv^) + 1);
lstrcat(szShowBuffer, #10);
lstrcat(szShowBuffer, szMBArgv);
// MessageBox(0, szShowBuffer, '参数', MB_OK);
MyFree(szMBArgv);
end;
end;求调教,求指出指针错误~
pi: PROCESS_INFO;
Argc: Integer;
argv: PPWideChar;
begin
GetProcessInfo(@pi);
Argv := CommandLineToArgvW(pi.szwCommandline, Argc);
for i:=0 to Argc-1 do
begin
dwBufferSize := lstrlenW(@Argv^) + 1;
szMBArgv := MyAlloc(dwBufferSize);
WideCharToMultiByte(CP_ACP, 0, Argv^, -1, szMBArgv, dwBufferSize, nil, nil);
Inc(Argv, lstrlenW(@Argv^) + 1);
lstrcat(szShowBuffer, #10);
lstrcat(szShowBuffer, szMBArgv);
// MessageBox(0, szShowBuffer, '参数', MB_OK);
MyFree(szMBArgv);
end;
end.我想问的是,关于这几处使用指针的地方是否正确?
用WideCharToMultiByte第一次是可以成功取值的,但里面有乱码,循环执行第二次的时候就取值失败了.应该是我指针引用的地方写错了.