問題タブ [paramstr]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
delphi - Delphiでスペースを含むパラメータを処理するにはどうすればよいですか?
私のプログラムは、コマンドラインパラメーターとして、ドラッグアンドドロップ操作で、またはエクスプローラーで、プログラムに関連付けられている拡張子を持つファイル名をクリックして、入力ファイル名を受け入れます。
コマンドラインとドラッグアンドドロップは正常に機能しますが、エクスプローラーでファイル名をクリックすると、クリックしたファイルのファイルパスにスペースが含まれている場合に問題が発生します。例:
次に、ParamStr関数は私に次のことを返します。
これらを必要な3つのファイル名に再構成するにはどうすればよいですか?
delphi - ParamStr が間違ったファイル名を表示するのはなぜですか?
「.file_5」拡張子をアプリケーションに関連付け、Delphi で ParamStr(1) 関数を使用して、以下のコードを使用してエクスプローラーでファイルをダブルクリックしたときに、ファイルのパスとファイル名を含むメッセージ ボックスを表示しました。
これは機能しますが、ファイルを元の場所とは別の場所に移動すると、表示されるメッセージが正しくありません。
例: (test.file_5 を使用)
ファイルの元の場所は C:\ ドライブで、ダブルクリックするとアプリケーションが起動し、次のようなメッセージ ボックスが表示されます。
C:\test.file_5
正解です。たとえば、同じファイルをプログラム ファイル フォルダーなどのスペースを含むディレクトリに移動すると、表示される Messagbox は表示されません。
C:\Program Files\test.file_5
私が期待するように、むしろ
C:\PROGRA~1.FILE_
これは明らかに私が求めている情報ではないので、私の質問は、ParamStr() 関数を使用して、スペースを含むディレクトリを考慮する方法、またはスペースを含むディレクトリで動作するより良い関数を使用することです。彼ら。
delphi - コマンド ライン パラメータの定義方法に関する提案
私の Delphi アプリケーションでは、コマンド ライン パラメータを追加して、ログイン画面でいくつかのパラメータを自動的に設定したいと考えています。
現在、ユーザーがいくつかの情報 (サーバー、データベース、ユーザー、パスワード、AuthenticationType、AUtoLogin など) を設定するログイン画面があります。
MRU を使用してフィールドに入力します。とにかく、大規模な組織では、ユーザーに情報を選択させないようにする必要があります。このために、私のシナリオで実行できる最も簡単な方法は、コマンド ライン パラメーターを使用することです。
私の質問は、コマンド ライン パラメーターの選択方法を教えてください。つまり、「位置」アプローチまたは「タグ」アプローチを使用する必要があります。たとえば、次のようになります。
また
最初のケースでは、すべてのパラメーターを使用してループしParamStr
、それらが何であるかを「デコード」する必要があります。「-s:」で始まる場合、その後に続くのがサーバー名であることがわかります。2 番目の方法はより迅速で汚れていますが、より効果的です。
「スペース」を含むパラメータを管理するには? それらを ParamStr で自動的にインターセプトすることは可能ですか、それともすべて手動で処理する必要がありますか? (つまり、パラメーターにスペースが含まれていることを ParamStr に自動的に伝える方法があります(中かっこなどを使用するなど)。
ベストプラクティスは何ですか?
delphi - 異なる区切り記号で ParamStr の値を読み取る方法は?
を読むParamStr()
と、各パラメーターの間はスペースで区切られます。ただし、パラメーター名とそのペアの値の間にスペースを受け入れる一方で、等号を受け入れ、=
区切り記号 (パラメーター名のプレフィックスが付いているだけ) または値を受け入れない多くのコマンドライン引数を見てきました。
可能なパラメータ文字列の例を次に示します。
...等。
私がやりたいことは、両方が関連している 2 つのことです...パラメーター名が存在するかどうかを確認し、パラメーターの値を読み取ります。例えば...
これを行うことができる Delphi の何かがありますか? そうでない場合、どうすればよいですか?これを検索するときに見つけたものはすべて、同じ基本的な例につながります。
また、大文字と小文字を区別する必要があります。OSQL
特に、「-s」が「-S」とは異なる可能性がある場所で使用する類似のコマンドラインツールを探しています。
問題は、区切り記号としてスペースを使用する場合、それが前のパラメーターの一部であることを認識する方法がわからないことです。これは、それらがスペースで分割されるためです。どうすればこれを回避できますか?
これには標準的な用語もあると思いますが、それはコマンドライン引数の一般的なフォーマットです。しかし、単に を使用してそれらを適切に読み取る方法がわかりませんParamStr
。ParamStr
通常の使用目的には及ばないようです。
明確にするために、上記のすべての例を必ずしもサポートする必要はありません。これらは、以前に見た例にすぎません。