4

C# でランダム アクセス ファイルを読み取ることができるかどうかは誰にもわかりませんか?

C#で(古いVB6アプリケーションから)次の関数を複製しようとしています-

Open File For Random Shared As #100 Len = Len(Record)
    Get #100, DM, Record
Close #100

Public DM As Long
Public Record As DMrecord

Public Type DMrecord
column1 As Long
column2 As Integer
column3 As Integer
column4 As Integer
column5 As String * 4
End Type

編集 -

以下に示すように VisualBasic DLL を使用してみましたが、FileGetObject 行で次のエラーが表示されます -

「Microsoft.VisualBasic.FileSystem.FileGetObject(int, ref object, long) に最適なオーバーロードされたメソッドの一致には、無効な引数があります」

私が使用しているコードは -

        public class Record 
    {
        public int DMtype;
        public long ecn;


        public Record(int DMtype, long ecn) 
        {
            this.DMtype = DMtype;
            this.ecn = ecn;
        }

        public Record()
        {
        }
    }


string fileName = @"C:\RandomAccess.dat";
        string returnString = string.Empty;
        int row = 1;
        int maxRow = 1000;

        Record aFileRecord = new Record();

        FileSystem.FileOpen(1, fileName, OpenMode.Random, OpenAccess.Read, OpenShare.LockRead);

        while (row < maxRow)
        {
            //Get record 2 1st.>>
            FileSystem.FileGetObject(1, aFileRecord, row);
            returnString += aFileRecord.DMtype.ToString() + "$" + aFileRecord.ecn.ToString();
            row++;
        }

        FileSystem.FileClose(1);

「レコード」を構造体とクラスの両方として設定しようとしましたが、同じエラーが発生します。

EDIT 22/08/13 - 私はこれを理解することはできませんでした.VB6でランダムアクセスデータをカンマ区切りのテキストファイルにエクスポートし、SSISでファイルを消費しました。

4

1 に答える 1

1

参照を追加して、オープンモードとメソッドを指定しMicrosoft.VisualBasic.dllて使用するだけです。これは、VB6 のステートメントおよびキーワードと同じように動作します。FileSystem.FileOpenRandomFileSystem.FileGetObjectOpenGet

于 2013-05-01T11:09:13.080 に答える