問題タブ [pascalscript]
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.
installation - Inno Setup の関数ポインタ
関数ポインターは Inno Setup でサポートされていますか? ドキュメントには何も見つかりません。Delphi/Pascal がそれらをサポートしていることは知っています。Inno Setup スクリプト エンジンはそれをベースにしているので、サポートされることを願っています。
delphi - ブロックから飛び出すときにスタックベースのコードをクリーンアップする安全な方法はありますか?
私はPascalScriptスクリプトエンジンのIssue14に取り組んでいます。この場合、Gotoコマンドを使用してCaseブロックからジャンプすると、完全に有効な(醜い場合)Object Pascalコードであっても、コンパイラエラーが発生します。
コンパイラのProcessCaseルーチンがHasInvalidJumpsを呼び出していることがわかります。これは、Caseブロックの外側につながるすべてのGotoをスキャンし、見つかった場合はコンパイラエラーを返します。そのチェックアウトについてコメントすると、コンパイルは問題なく実行されますが、実行時にクラッシュすることになります。バイトコードを逆アセンブルすると、その理由がわかります。元のスクリプトコードで注釈を付けました。
「gotoL1;」103のステートメントは、113と114のクリーンアップポップをスキップし、スタックを無効な状態のままにします。
Delphiは計算スタックを使用しないため、これに問題はありません。ただし、PascalScriptはそれほど幸運ではありません。このパターンは、PascalScriptに変換した制御構造がほとんどなく、サポートできる必要がある、はるかに単純なシステムの一部のレガシースクリプトで非常に一般的であるため、これを機能させる方法が必要です。
スタックを適切にクリーンアップするためにcodegenにパッチを適用する方法を知っている人はいますか?
delphi - Pascal Script と SynEdit を使用して IDE を作成する
RemObjects (素晴らしい) の PascalScript と SynEdit エディターを使用して、組み込みのスクリプト エンジンを作成しています。PascalScript に同梱されている IDE サンプルと SynEdit の IDE サンプルの使用はほぼ完了していますが、番号付きのソース行が「実行可能」かどうかを PascalScript に問い合わせる方法がわかりません。(これを使用して、SynEdit のガターを「Delphi の青い点」でマークすることができます)。ROPS の出力を逆アセンブルする必要があるのではないでしょうか?
ここに PascalScript の専門家はいますか? ありがとう。ブライアン。
hyperlink - Inno Setup でハイパーリンクを表示するには?
Inno Setup インストーラーで検証を行って、Microsoft の更新プログラムがマシンにインストールされているかどうかを確認しています。インストールされていない場合は、更新プログラムが必要であることをユーザーに伝える簡単なメッセージ ボックスを表示しています。これがメッセージ コードです。 :
URL を Web ページへのハイパーリンクにしたいのですが、方法がわかりません。Inno Setup でテキストをハイパーリンクとして追加できますか?
ありがとう。
delphi - カスタム クラスをインポートするときに、Pascal Script に「create」関数と「free」関数を認識させるにはどうすればよいですか?
この記事の例に問題があります。この記事では、独自のクラスをインポートして Pascal スクリプトから呼び出せるようにする方法について説明します。カスタム クラスをインポートしていますが、Pascal Script に「Create」関数と「Free」関数を認識させることができません。
私のプラグイン:
私のアプリ:
私のスクリプト:
エラー メッセージ:
delphi - ユニットインポーターなしのPascalスクリプティング
UnitImportプログラムは、cajScript / PascalScriptの開発に何らかの形で取り入れられたようであり、PascalScriptアプリケーションの実装方法を理解するのに役立つ詳細の一部を隠している可能性があります。その場合、またはインポーターを使用せずにPascalScriptアプリケーションを作成したい場合、このようなクラスをスクリプト環境にどのように組み込みますか?:
2つの説明文書とニュースグループによって残されたギャップのいくつかを埋める可能性のあるPascalScriptの使用に関するいくつかの基本的なメモをまとめたいと思っています。
助けてくれてありがとう。
installation - InnoSetup: [Code] セクションで AppName を取得する
InnoSetupを使用してインストーラーを作成し、セクションにいくつかのカスタム ハンドラーを記述しています[Code]
。AppName
ハンドラーの 1 つで、セクションで定義されている値 (または、場合によっては他のパラメーターの値)を取得できるようにしたいと考えています[Setup]
。これを行う方法はありますか?ドキュメントを調べましたが、これを可能にするものは見つかりませんでした。私たちの InnoSetup ファイルは実際にはビルド プロセスによって生成されます。ビルド プロセスは、すべてのプログラムに共通でプログラム固有のフラグメントをつなぎ合わせます。そのため、各プログラムのコードで定数を定義する必要があるのは不便です。これを行う便利な方法はありますか?
私は次のようなものを探しています
例外{AppName}
は、定義された定数ではありません。セクションで定義されたパラメーターを照会する方法はあります[Setup]
か?
inno-setup - Inno Setupスクリプト内の基本的な電子メール検証
文字列が電子メールアドレスであることを比較的確実にするために、Inno Setupスクリプト内で基本的な文字列検証を行いたいと考えています。「@」文字の後に「.」が続くことを確認したいだけです。文字であり、これらの両側に少なくとも 1 つの文字があること。この正規表現に似たもの:
object pascal で使用できる正規表現の欠如と制限された文字列関数は、私を悲しませています。文字列を逆にして、最初の「.」を見つけるのは簡単です。と '@' を入力して比較を行いますが、使用できる Reverse(string) 関数はありません。
私が作成したヘルパー DLL からエクスポートされた関数を呼び出すことができることはわかっていますが、この解決策を避けたいと思っていました。
他の提案はありますか?
delphi - このメソッドを PascalScript コンパイラに登録できないのはなぜですか?
私の質問は以下です。
これが私のセットアップです:
スクリプトをコンパイルしようとすると、次のエラーが発生するのはなぜですか。
NewItem メソッドを PS コンパイラにインポートしようとしたことが関係していることはわかっていますが、TStringList を受け入れない理由がわかりません。TStringList パラメーターを取り出して、次のシグネチャを持つメソッドを使用するだけですべてが機能するため、それが TStringList であることはわかっています。
コンパイラ/スクリプトと Delphi コードの間でオブジェクトをやり取りできないという参照は見つかりませんが、まさにこのタイプのことを行うには制限があるのではないかと考え始めています。
TStringList の代わりに文字列の配列を渡そうとした方が理にかなっているでしょうか?