BLUF: この関数では、\' はエラー メッセージを表示しますが、\? は表示しません。
char key[] = "\a\b\f\n\r\t\v\\\'\"#%&*;:<>\?/{|}~";
if (strpbrk(*local_str, key) != NULL )
{
vico_param_out->out_valid = false;
AfxMessageBox("L'identifiant de numérisation est invalide. Vous avez saisi des caractères qui ne peuvent pas faire partie d'un nom de fichier windows (\"#%&*;:<>\?\\/{|}~). Veuillez faire les corrections nécessaires.");
}
このコード スニペットは、無効な文字の 1 つが入力文字列 (*local_str) に含まれているかどうかを確認することになっています。それらのいくつかでうまく機能しますが、一部の文字が \? *local_str にあります。それを受け入れ、エラー メッセージを表示しません。私はt understand what
起こっていません。
例: ABC は有効です
AB' は有効ではありません。修正を促すメッセージが表示されます
AB? は有効ではありませんが、
A' を通過しますか? は有効ではありませんが、失敗します。
助けてください。私はこのコミュニティに深く関わっています。
編集:問題は解決しました。この関数は機能しているように見えますが、私が知らなかった別のプロセスが、関数を呼び出す前に local_str のキーをショートカットとしてキャッチしていたため、奇妙な動作が発生しました。各キーストロークが入力されたときに評価されるように関数を移動しました。
ご迷惑をおかけしましたことを深くお詫び申し上げます。ありがとうございます。