問題タブ [open-array-parameters]
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 - パラメータの型が Char のオープン配列の場合、Char の動的配列は許可されますか?
私はDelphi: array of Char and TCharArray "Incompatible Types"を見ていて、実験を始めました。私が発見したことは、かなり興味深いものです。
この簡単な例は、Open Array パラメータを使用して動的配列をプロシージャに渡す方法を示しています。期待どおりにコンパイルして実行します。
これはほぼ同じコードですが、唯一の違いはChar
ではなくの配列を使用していることですInteger
。コンパイルされません。代わりに、コンパイラは次のように吐き出します。
これはなぜでしょうか?
しばらく検索した後、このQC レポートを見つけました。Delphi 2009 を実行していますが、まだ発生しています。
delphi - オブジェクトのグループを関数に渡して作成するにはどうすればよいですか?
私は Delphi 2007 で作業しており、コードをクリーンアップしています。非常に多くの手続きで、同じ型のさまざまな変数を宣言していることに気づきました。
たとえば、私が今見ている 1 つのプロシージャでは、4 つの異なる文字列リストを宣言しvar1 := TStringList.Create
、それぞれに入力する必要があります。
私は、変数のオープン配列、4 つの変数のリストを取り、それらすべてを作成する手順を作成するという考えを持っていました。呼び出しは次のようになります
しかし、私の知る限り、参照によってオープン配列を渡すことはできないため、私が望んでいたことはできません。誰もこれについて面白いアイデアを持っていますか?
string - TVarRec で文字列 (または AnsiString) 定数を設定する方法は?
Args
フォーマット引数をFormat関数に渡したいと思います。その例をいくつか見つけましたが、 TVarRecメンバーに文字列定数を割り当てる方法がわかりません。次のコードは、 でのコンパイルに失敗しますE2089 Invalid typecast
。
文字列 (または AnsiString) 定数を TVarRec メンバーに設定する方法を教えてもらえますか? Delphi 2009 を使用しています。
どうもありがとう
arrays - Oracle ストアド プロシージャは、必要なパッケージの例で配列 (テーブル) パラメーターを受け入れます
この質問は、 ado パラメータ オブジェクトによって javascript 配列を Oracle ストア プロシージャに渡す方法に関する私の質問の一部です。
3つに分けた方が早く答えが出ると思います。
この質問のために。
テーブル型を宣言して使用できることはわかっています
しかし、これを含む手順を含む新しいパッケージの作成から常にエラーが発生します。そして、sql と pl/slq が同じエンジンを使用していないため、sql(in schema) 型を宣言する必要があるというスレッドを読みました。spl*plus でスキーマに型を作成しようとしましたが、それでも同じエラーが発生するため、最初にこれを実行するパッケージの例が必要です。
delphi - X 型の var をその型のオープン配列パラメーターに渡すことができるのはなぜですか?
Delphi XE-2 を使用する (すべての更新が適用されます)。
次のコードでは、DoSomething および DoInteger の呼び出しでコンパイル エラーが生成されると思いますが、そうではありません。
FData/FInteger を渡すことができる理由を誰かが説明できますか[]
?
インターフェイスの配列、または関連するジェネリックに関係している可能性があると思いましたが、コンパイラは整数のオープン配列に渡された整数も受け入れます。
arrays - 静的配列をキャストして、異なる要素タイプの配列を開く
(私はすでにCodeReviewでこれを尋ねましたが、トピック外として閉じられました。うまくいけば、ここでトピックになります。)
派生型の静的配列 (LabelsA: array[0..3] of TLabel;
次のサンプル コードのように) と、基本型のオープン配列を受け入れるルーチン ( など) があり、それらの静的配列procedure DoSomethingWithControls(const AControls: array of TControl);
を呼び出したいと考えています。DoSomethingWithControls
私のサンプルを見てください:
の呼び出しにはいくつかのバリエーションがありますDoSomethingWithControls
。
TArray1
バリアント 1 は非常に単純ですが、TLabel 配列のすべてのサイズのように「アダプター」型が必要です。もっと柔軟にしてほしい。バリアント 2 はより柔軟で統一されていますが、見苦しく、エラーが発生しやすくなっています。
バリアント 3 ( TOndrej 提供) はバリアント 1 に似ています - 明示的なキャストは必要ありませんが、バリアント 1 は、何かを台無しにした場合 (たとえば、コピーと貼り付け中に配列の境界が間違っている場合) に、コンパイラのセキュリティを少し強化します。
これらの欠点なしで (配列の要素型を変更せずに) これらの呼び出しを定式化する方法はありますか? D2007 および XE6 で動作するはずです。
delphi - 型付きの char 配列を渡して char の配列を開くことはできませんか?
Delphi 7 または Delphi XE でコンパイルすると、以下のコードで問題が発生します。
ルディの記事によると、型付き配列をオープン配列に渡すことを許可する必要がありますか?
さらに、'array of Boolean' と 'TABoolean' に対して不平を言わないのはなぜですか?
助けてくれてありがとう!
c++ - C++で配列を関数に渡すときにスタックオーバーフローを回避する方法は?
最初の場所へのポインターを渡すことによって、配列が関数に渡されるコードに取り組んでいます。関数では、配列の一部が使用されます。呼び出し元の関数が配列の最大サイズを正しく推測しない場合、呼び出し先の関数が配列サイズを超えて書き込み、スタック オーバーフローが発生する可能性があるため、これは危険な状況を生み出します。これに対する解決策を考えていたので、この例に示すように、関数テンプレートを使用して配列を参照として渡すことを考えました。
変更配列.h
変更配列.cpp
main.cpp
既存のコードへの侵襲を最小限に抑えるソリューションを探しています。ここでは、テンプレート ステートメントを追加し、引数を double* から参照に変更し、if ステートメントを挿入してサイズを確認するだけです。大幅な書き直しはしたくありません。また、主にパフォーマンス上の理由から、動的割り当て、ベクトル、または std::array を使用したくありません。これは、数値シミュレーション コードの低レベル関数であり、パフォーマンスが非常に重要です。より良い解決策はありますか?私がしていることに落とし穴はありますか?
delphi - レコードのオープン配列である関数パラメーターに定数を渡す
次のように定義されたレコードがあります。
このレコード型の定数を次のように初期化できます。
これで、このレコード タイプのオープン配列を取る関数ができました。
定数宣言と同様の構文を使用してこの関数を呼び出すことはできますか?
これは動作しません。他のものを使用する必要がありますか?