問題タブ [vb6-migration]
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.
c# - C(C ++ではない)をC#に変換する
OracleのProCプリコンパイラライブラリ(proc.exe)を使用して100個ほどのsproc /func呼び出しをさらに古いVB6GUIに公開する古いC32ビットDLLがいくつかあります。これは、次のような明示的なDeclareステートメントを通じてこれらの関数を参照します。
Cヘッダーファイルのすべての構造は、VB6フロントエンドで入念に複製されます。少なくともSQLはプリコンパイルされています。
私の質問は、.Netインターフェイスを(アセンブリに変換して)Cコードに適用してVB6をC#にアップグレードする価値があるのか、それともすべてを放棄して最初からやり直すべきだと思いますか。いつものように、時間が重要であるため、以前の経験に対する私の魅力です。宣言を.Netに保持する場合、避けたい複雑なマーシャリング装飾をたくさん追加する必要があることを私は知っています。
私はこれまでCを.Netに変換する必要がなかったので、他のすべてが無視された場合の私の主な質問は、これをお勧めできない移植の制限はありますか?
vb.net - VB6 を VB.net Variant に変換する質問
私は、VB6 プログラムを VB.NET に変換する任務を負っています。私のオンライン調査では、コードを調べて、持っているバリアントを取り除く必要があると誰もが言っているようです。これまでのところかなり幸運でしたが、これを交換する際に問題が発生しています。
私はまだVB(6または.netのいずれか)にかなり慣れていないため、これに代わるものを見つけるのに苦労しています。VB.net の変換ツールはこれをうまく処理できますか? または、これを変更する必要がありますか? もしそうなら、これに代わるより良い方法はありますか?私の愚かさを許してください。
前もって感謝します。
c# - VB6 から C# への CDate(long) の移植
私は、古い VB6 プログラムを C# に変換する任務を負っています。移植に苦労している関数の 1 つは、バイナリ ファイルから読み取られたファイルから生年月日を計算することです。
私が見つけることができた、リモートで類似している唯一の機能は次のとおりです。
ただしToDateTime(long)
、InvalidCastException
.
これで文字列を手動で作成できますが、VB6 のどこにもドキュメントが見つかりませんCDate(long)
。
私は何を間違っていますか?
vb.net - VB.NET で変数アドレスにアクセスするにはどうすればよいでしょうか。
従来の VB6 アプリを VB.NET にアップグレードする必要があります。このアプリは、メモリ アドレスをパラメーターの 1 つとして受け取る .dll からの関数呼び出しを使用します。VB6 アプリは VarPtr() 関数を使用してこれを行いますが、この関数は .NET には存在しません。.NET で変数のメモリ位置を取得するにはどうすればよいですか?
-編集1
例えば
-編集2
正確な関数呼び出しは FTD2XX.DLL と呼ばれる DLL にあり、正確な呼び出しは次のとおりです。
c# - vb6 から c# 3.5 への dllimport の変換
DLL から関数をインポートする VB6 のコードがあり、byVal および byRef キーワードを使用しています。そのコードを C# 3.5 に変換したいと考えています。
文字列の Unicode エンコーディングに問題はありますか?
vb6 の「byRef」である変数を C# コードの「ref」変数に宣言する必要がありますか?
関数が文字列を編集できるようにしたい場合は、戻り値がVB6コードによって送信される文字列に「byVal」パラメーターとして入力されることが継ぎ目です。 ? この概念は私の C# コードでも機能しますか?
VB6 の関数宣言をコピーしてみました。パラメーターの型は int、long、string のみです。「byVal」キーワードがあった場所を空のままにし、「byRef」キーワードを C# の「ref」キーワードに置き換えただけで、コードが機能しません。
VB6 コード:
私のC#3.5翻訳:
助けてください、私はすでにこれに丸一日を費やしました:p ....
最後に、自動プロジェクト コンバーター (VB6 から VB.NET 2008 へ) を使用して関数呼び出しを VB.NET ライブラリに変換し、C# リファレンスを使用して呼び出しました。
ありがとう。
.net - 従来の VB6 関数呼び出しを .NET に変換するユーティリティ
従来の VB6 関数の呼び出しを .NET に相当するものに変換するためのユーティリティ/ツールを探しています。
たとえば、これを変換します...
これに...
誰か知っていますか、それとも自分でロールバックする必要がありますか?
excel - vbaをvb6に変換し、.dllを作成します-方法-ヒント、ヒント、リスク
VBA(Excel)で記述された膨大な量のコードをVB6に変換する必要があります。しかし、私は自分が何をしなければならないのか、どこから始めればよいのか本当にわかりません。したがって、ここでVB6の専門家からいくつかのヒントを得るのは素晴らしいことです。
すでにMSVisualStudioをインストールして、少し遊んでみました。しかし、私はVB6の専門家ではなく、自分が何をしなければならないのか本当にわかりません。
最終的な目標は、現在1つのexcel vbaマクロに配置されているすべてのVBAコードをVB6プロジェクトに入れ、そこから.dllを作成することです。この.dllはExcelによって参照され、Excelは現在と同じように実行される必要があります:-)
たとえば、このvbaコードをVB6に変換するにはどうすればよいですか。
編集:はい。vbaコードを.dllに変換できる場合は、これでも問題ありません。そうすれば、コードを変換する必要はありません。しかし、vb6コードから.dllを作成することしかできないと思います。
vb.net - プリンターの HDC を取得するにはどうすればよいですか
Print 関数を持つ C++ で記述された COM コンポーネントがあります。この印刷関数は、印刷に使用するすべての設定を含むパラメーターとして、プリンターの hDC を取ります。以前は、これは VB6 コードから呼び出され、オブジェクトPrinter.hdc
にすべてを設定した後にここで機能していました。Printer
コードは VB6 から VB.NET に変換され、やらなければならないことのほとんどがわかりました。古い Printer オブジェクトはMicrosoft.VisualBasic.PowerPacks.Printing.Compability.VB6.Printer
クラスを通じて利用できますが、古いhdc
プロパティはここではサポートされていません。
この hdc を入手する方法を誰か教えてもらえますか? GetHdevmode()
この hdcはSystem.Drawing.Printing.PrinterSettings
オブジェクトと同じですか?
.net - ドキュメント化されていない見苦しい VB6 コードを .NET に移行する方法
VB6 の移行に関する質問が既にあることは承知していますが、私のプロジェクトのコード ベースはここでいくつかの新しい質問をもたらします。
コードの品質、構造、およびアーキテクチャは悪夢に過ぎないと言わざるを得ません。2 つの大きなプロジェクトがあります。Nr.1 には 40 のフォーム、40 のモジュール、およびいくつかのクラス ファイルがあります。この EXE は一種の「ベース システム」です。Nr.2 には 80 個のフォーム、20 個のモジュール、およびいくつかのクラス ファイルがあり、この EXE は「ベース システム」から関数を呼び出します。次に、GUI を使用する約 10 個のプロジェクト (それぞれ 1 ~ 3 個のフォーム) と、別の 90 個の非 GUI プロジェクトがあり、そのほとんどが EXE ファイルであり、いくつかの DLL です。DLL は、C、C++、および VB6 で記述されています。
コードは 10 年間進化してきており、ほとんどの場合、一度に 1 人の (悪い) 開発者によって書かれています。
- 500 行 (およびそれ以上) の関数は非常に一般的です。
- GUI コンポーネントの 90% は、text1、command2(1)、… という名前です。
- たとえば、5000 行のコードを含む EXE プロジェクト (GUI なし) がコピーされ、コピーの唯一の変更点は、FTP ではなくメールごとにファイルを送信することでした (同じプロジェクトのさらに 2 つのコピーもあります)。 )。
- 以前は小さなフォーム (15 フィールド) があり、小さな問題 (通常は最大 30 分) を解決する必要がありました。何かを変更するたびに、フォームが機能しないか、新しいエラーが発生しました。2 日後、フォームを完全に書き直すことにしました。古いフォームの 20 個までの SQL ステートメントから、新しいフォームで生き残ったのは 2 個だけでした。
- コード内のコメントについても質問しないでください …</li>
私は数ヶ月前にプロジェクトを引き継ぎ、私は唯一のメンテナーです。変更要求とエラーの一定の (しかし低い) フローがあり、法的要件の観点から、ソフトウェアを実行し、「最新」に保つために、顧客から保守予算を受け取ります。
私のオプション
1) ゼロから書き直す - その場合、移植性のために Java で書くことができます。ここでの問題は、一部の (古い) ユーザー ヘルプ以外にドキュメントがないことです。したがって、醜いコードは「ドキュメント」です。ソフトウェアが何をすべきかを高いレベルで知っている人物が 1 人います。また、長期的には大幅なコスト削減があったとしても、経営陣にそうするよう説得するのは困難です。政治的な問題があります。また、データベース構造はコードよりも優れているわけではないため、一度に 1 つの (vb) プロジェクトを実行することもできません。つまり、最初から行う必要もあります。そのため、一度にソフトウェア全体を変更することしかできません。
2) コードを VB.NET / C# に移行する 最初にメイン プロジェクトの移行を行いました。既にテスト済みで、Project Nr.1 から約 2000 のアップグレード コメントを受け取りました。すぐ。ここでの私の考えは、変換後、DB 抽象化用のクラスを作成し、これらのクラスを使用するようにコードを変更してリファクタリングを行い、他のプロジェクトも移行および変更し、すべてのコードが DB クラスを使用するときに DB 構造を変更することです。
3)とにかく何かを変更する必要があるときはいつでもVB6のコードをリファクタリングし(すでに部分的にこれを行っています)、ある時点で残りもリファクタリングします。そうすれば、元のコードが元のコードであり、エラーがある場合、それらが移行の結果ではないことが明らかであるため、元の機能をより簡単に確認できます。コードがリファクタリングされると (さらに 50 ~ 75% 小さくなると思います)、.NET への移行が容易になります。次に、DB 構造を変更します (そして、もう一度リファクタリングを行います…)。
将来的に行うべきいくつかの大きな変更 (Win7 との互換性を持たせること、およびコードの大部分に影響を与える別の大きな CR) があるので、これらの変更を行う良い機会があるでしょう。とにかくたくさんのコード。
私の質問は、悪い、醜いコードを移行するための経験/ヒントを持っているのは誰ですか? どのオプションを提案しますか?
.net - VB6 フォーマット関数: .NET のアナログ
ドキュメントで VB6String.Format
のアナログ for 関数と呼ばれる関数があります。互換性のために提供され、基本的に と同じ機能を持つ名前空間の関数Format
もあります。Format
VisualBasic
String.Format
確かに、これらの 2 つの形式は日付と数値です。
しかし、VB6 の関数は文字列をフォーマットすることもできました。
String.Format
私に関する限り、それはできませんし、新しいFormat
. また、VB6 機能の特定の部分が失われているという互換性ドキュメントの言及も見つかりませんでしたFormat
。この機能は「黙って」廃止されたようです。
このタイプのフォーマットを実行できるフレームワークはありますか?