2011-10-26 4 views
4

何年も悩まされていた古いVB6アプリケーションを変換していますが、サーバー名がハードコードされています。私はそれをC#アプリケーションに変換したいと思っています。VB6コードの大部分を読んでもOKです。ただし、基本的なファイルIO操作についてはコードを読んでいることを100%確信しているわけではありません。VB6ファイルIOの質問(FreeFile、File Number、およびDirコマンド)

いくつかのコード行がFreeFile関数を呼び出します。 VB.NETには関数があることがわかりましたが、私はread the documentationでしたが、まだそれは意味がありません。まだ使用されていないファイル番号を供給する

備考

使用FreeFile。

質問1:私の検索では、「ファイル番号」が何であるか、どのようなものが使用されているかはわかりません。これはファイルを参照する何らかの方法ですが、ファイル名ではありませんか?

質問2:Dir機能についてもわかりません。私にはSystem.IO.File.Exists()と同等のようですが、そうですか?

コード例:それは完全に離れて抽象化されているので、

If Not Dir(My.Application.Info.DirectoryPath & "\path.txt") = "path.txt" Then 
    End 
Else 
    iFile = FreeFile 
    FileOpen(iFile, My.Application.Info.DirectoryPath & "\path.txt", OpenMode.Input) 
    Input(iFile, lsDataIn) 
    FileClose() 
End If 

答えて

5

FreeFileは、C#で必要とされていません。標準のファイルI/Oを使用してC#でファイルを開くだけです。

これまでのところ、Dirという関数が実行されていて、VB6では非常に汎用性があり、さまざまなことを行っていました。この文脈では、はい、正しいです、それはFile.Existsと取り替えることができます。

だから、C#で、あなたのコードは次のようになります。

if (System.IO.File.Exists("path.txt")) 
    Application.Exit(); 
else 
    string txt = System.IO.File.ReadAllText("path.txt"); 
+0

はありがとうと+1は...私は、ファイルに定期的にI/O操作を使用することができます理解しています。私はあなたの質問を少し修正し、私が求めていることを明確にし、あなたは2番目の質問に完全に答えました。あなたは*ファイル番号*が何であり、それが何のために使われたのか説明できますか?私は.NETでファイルを処理することに非常に慣れていますが、古いコードを理解していると仮定するともう少し緊張しています。以前のコードを誤って読み込み、新しいコードで全く同じことをやって、同じ作業を行っていると思ってしまうのは、はるかに簡単です。 – David

+0

待って...決して気にしないでください。分かった!ダー。ありがとうございました! – David

+0

(古代の)BASICプログラミングでは、ファイルを開いたときに複数のファイルを同時に開くことができるように番号(1,2,3など)を指定し、番号で参照しました。 FreeFileは、あなたが次のファイルを開くために安全に使用できる番号をあなたに与えました。 –

関連する問題