4

.ディレクトリ編集ボックスに入力されたパスの最後にユーザーが入力できないようにする必要があります。

たとえば、パスを次のようにすることはできません。

C:\Program Files\InnoSetup.

ディレクトリ編集ボックスの入力を検証するにはどうすればよいですか、またはユーザーが.パスの最後まで入力できないようにするにはどうすればよいですか?

4

1 に答える 1

1

ターゲットディレクトリの最後からすべてのドットを自動的に削除するには、このスクリプトを使用できます。パスの最後にドットが見つかったときに何をしたいのか、私の質問に答えていないので、この方法を選択して表示しました。これにより、フォルダ文字列の末尾からすべてのドットが削除されるため、次のようなパスから削除されることに注意してください。

C:\Program Files (x86)\My Program.....

このスクリプトは次のようになります。

C:\Program Files (x86)\My Program

スクリプトは次のとおりです。

[Setup]
AppName=My Program
AppVersion=1.5
DefaultDirName={pf}\My Program

[code]
procedure OnDirEditChange(Sender: TObject);
var
  S: string;
begin
  S := WizardDirValue;
  if (Length(S) > 0) and (S[Length(S)] = '.') then
  begin
    MsgBox('Last char(s) of the entered target folder is "."' + #13#10 +
      'All "." chars from the end will be deleted!', mbInformation, MB_OK);
    while (Length(S) > 0) and (S[Length(S)] = '.') do
      Delete(S, Length(S), 1);
    WizardForm.DirEdit.Text := S;
  end;
end;

procedure InitializeWizard;
begin  
  WizardForm.DirEdit.OnChange := @OnDirEditChange;
end;

procedure CurPageChanged(CurPageID: Integer);
begin
  // this is just a paranoid event trigger, in case the DefaultDirName
  // would be able to contain dots at the end, what can't at this time
  if CurPageID = wpSelectDir then
    OnDirEditChange(nil);
end;

もちろん、パスを検証する別の方法もあります。たとえば、ユーザーに最後にドットを付けてパスを入力させ、ウィザードの次のステップに進むときに検証することができます。ただし、何を指定しなかっただけです。検証の質問を書く方法を意味します。

于 2012-10-17T10:17:13.190 に答える