C# と VB.NET の質問掲示板
ASP.NET、C++/CLI、Java 何でもどうぞ
掲示板トップ
C# と VB.NET 入門
新規作成
利用方法
ツリー表示
トピック表示
ランキング
記事検索
過去ログ
ログ内検索
キーワードを複数指定する場合は 半角スペース で区切ってください。
検索条件は、(AND)=[A かつ B] (OR)=[A または B] となっています。
[返信]をクリックすると返信ページへ移動します。
キーワード
/
検索条件
/
(AND)
(OR)
検索範囲
/
(現在のログ)
(全過去ログ)
(過去ログ1)
(過去ログ2)
(過去ログ3)
(過去ログ4)
(過去ログ5)
(過去ログ6)
(過去ログ7)
(過去ログ8)
(過去ログ9)
(過去ログ10)
(過去ログ11)
(過去ログ12)
(過去ログ13)
(過去ログ14)
(過去ログ15)
(過去ログ16)
(過去ログ17)
(過去ログ18)
(過去ログ19)
(過去ログ20)
(過去ログ21)
(過去ログ22)
(過去ログ23)
(過去ログ24)
(過去ログ25)
(過去ログ26)
(過去ログ27)
(過去ログ28)
(過去ログ29)
(過去ログ30)
(過去ログ31)
(過去ログ32)
(過去ログ33)
(過去ログ34)
(過去ログ35)
(過去ログ36)
(過去ログ37)
(過去ログ38)
(過去ログ39)
(過去ログ40)
(過去ログ41)
(過去ログ42)
(過去ログ43)
(過去ログ44)
(過去ログ45)
(過去ログ46)
(過去ログ47)
(過去ログ48)
(過去ログ49)
(過去ログ50)
(過去ログ51)
(過去ログ52)
(過去ログ53)
(過去ログ54)
(過去ログ55)
(過去ログ56)
(過去ログ57)
(過去ログ58)
(過去ログ59)
(過去ログ60)
(過去ログ61)
(過去ログ62)
(過去ログ63)
(過去ログ64)
(過去ログ65)
(過去ログ66)
(過去ログ67)
(過去ログ68)
(過去ログ69)
(過去ログ70)
(過去ログ71)
(過去ログ72)
(過去ログ73)
(過去ログ74)
(過去ログ75)
(過去ログ76)
(過去ログ77)
(過去ログ78)
(過去ログ79)
(過去ログ80)
(過去ログ81)
(過去ログ82)
(過去ログ83)
(過去ログ84)
(過去ログ85)
(過去ログ86)
(過去ログ87)
(過去ログ88)
(過去ログ89)
(過去ログ90)
(過去ログ91)
(過去ログ92)
(過去ログ93)
(過去ログ94)
(過去ログ95)
(過去ログ96)
(過去ログ97)
(過去ログ98)
(過去ログ99)
(過去ログ100)
(過去ログ101)
(過去ログ102)
(過去ログ103)
(過去ログ104)
(過去ログ105)
(過去ログ106)
(過去ログ107)
(過去ログ108)
(過去ログ109)
(過去ログ110)
(過去ログ111)
(過去ログ112)
(過去ログ113)
(過去ログ114)
(過去ログ115)
(過去ログ116)
(過去ログ117)
(過去ログ118)
(過去ログ119)
(過去ログ120)
(過去ログ121)
(過去ログ122)
(過去ログ123)
(過去ログ124)
(過去ログ125)
(過去ログ126)
(過去ログ127)
(過去ログ128)
(過去ログ129)
(過去ログ130)
(過去ログ131)
(過去ログ132)
(過去ログ133)
(過去ログ134)
(過去ログ135)
(過去ログ136)
(過去ログ137)
(過去ログ138)
(過去ログ139)
(過去ログ140)
(過去ログ141)
(過去ログ142)
(過去ログ143)
(過去ログ144)
(過去ログ145)
(過去ログ146)
(過去ログ147)
(過去ログ148)
(過去ログ149)
(過去ログ150)
(過去ログ151)
(過去ログ152)
(過去ログ153)
(過去ログ154)
(過去ログ155)
(過去ログ156)
(過去ログ157)
(過去ログ158)
(過去ログ159)
(過去ログ160)
(過去ログ161)
(過去ログ162)
(過去ログ163)
(過去ログ164)
(過去ログ165)
(過去ログ166)
(過去ログ167)
(過去ログ168)
(過去ログ169)
(過去ログ170)
(過去ログ171)
(過去ログ172)
(過去ログ173)
(過去ログ174)
(過去ログ175)
(過去ログ176)
(過去ログ177)
(過去ログ178)
(過去ログ179)
強調表示
/
ON
(自動リンクOFF)
結果表示件数
/
20件
30件
40件
50件
100件
記事No検索
/
ON
大文字と小文字を区別する
No.75362 の関連記事表示
ヒット / 1件
(1-1 を表示)
<<
0
>>
■75362
Re[9]: VB.netからVC++6.0のへの構造体配列
□投稿者/ Azulean -
(2015/03/18(Wed) 22:14:29)
2015/03/19(Thu) 07:19:40 編集(投稿者)
■
No75357
(とら さん) に返信
> 前述した通り、当方にはVC++に関する知識が殆ど御座いませんので、VC++のお勉強をして下さいというご指摘でしたら
> 大変申し上げ難いのですが、今回はあまり時間的な余裕が御座いませんのでまた別の機会にしたく考えております。
ビジネスですか?趣味ですか?学術的なものですか?
趣味や研究、学問の範囲であればその判断に異議を唱えるつもりはありません。
しかし、ビジネスであるのであれば、再考を提案します。
C/C++ は VB6/VB.NET に比べるとかなり難しい領域です。
いかようにも書けてしまうため、サンプルコード単独では正しくとも、周囲のソースコードと組み合わせたらまずいケースもあり得ます。
ソースコードを理解し、適切な対応をとるための準備ができないのであれば、C/C++ を修正するという考えは捨てた方がいいと断言できるぐらいです。
私が選択肢を考えるとすれば…
(1)C/C++ 経験のある熟練した開発者を助っ人に頼む
(2)リスクを説明し、「VB6 を捨てる」という方針を緩和してもらい、問題の部分だけ VB6 でラップする。
(3)リスクを説明し、十分な学習時間・検証時間をとる
(4)リスクを説明し、リーダーや上長に責任を持ってもらう(責任転嫁)
でしょうか。
「第三者がそんな強権的な発言するな」と思われるかもしれません。
ソフトウェア開発業界で仕事している立場からすると、今のまま進めたら、後で悲惨な未来が待っているかもしれないことを危惧しております。
納期ばかり気にするのではなく、修正したソースコードで不具合が出たら誰が責任を負うのか、提供先で不具合が出たときの損害額はいかほどか、そのとき自分はどんな立場に立たされるのか、責任追及されるのか、それらの発生確率・影響をご考慮いただければ幸いです。
------
> TestSub_API int __stdcall FuncTestSub (void *Type1);
SafeArrayAccessData で得た構造体配列の先頭ポインタを渡しているだけであれば、SafeArray の要素数が変わることはないと思っています。
予想できる振る舞いとしては、内容の書き換えぐらいまでですかね。
いずれにせよ、どのように修正するべきかは、FuncTestSub の実装とその呼び出し側のロジック次第です。
全体を見通せない第三者では、正解を示せない可能性があることをご了承ください。
(手元にソースコードがあっても、レガシーコードを触るのに十数時間から数十時間の調査・検討を重ねてやっと修正できるようなことも現実的にある世界です。。。)
----
以下推測(まったく保障のない、私の勝手な予想に過ぎません)
"TestSub_API int __stdcall FuncTestSub (void *Type1)" なら、渡した先で構造体のポインタにキャストしていると予想される。
呼び出し元で事前にキャストしていないことから、先頭ポインタを渡すことを前提としているはず。
であれば、要素数を渡さないこの関数のシグネチャからは要素数は一定以上、事実上固定のサイズと想定していそう。
そうであれば、固定長の C 形式配列を渡すように関数を書き換え、不要となった SafeArray 系のコードを整理し、P/Invoke 側も書き換えればいけそうではある。
予想もつかない突飛な実装をしていない限り…。
記事No.75306 のレス /過去ログ127より /
関連記事表示
削除チェック/
<<
0
>>
パスワード/
-
Child Tree
-