0

次のコードを使用して、WBTRV32.dll に基づいて BTrieve 6.15 データベース ファイルからデータを収集します。エラー コード 22 が、次のデータ行を読み取る位置に常に返されます。BTrieve ファイルの列幅が固定されていないのは問題ですか?

// Open file
RecordBuffer dataBuffer = new RecordBuffer();
int bufferLength = System.Runtime.InteropServices.Marshal.SizeOf(dataBuffer);
short status = (short)BTRCALL(0, positionBlock, ref dataBuffer, ref bufferLength, fileNameArray, 0, 0);

        if (status == 0) <== Here Status = 0
        {
            // Get first record
            dataBuffer = new RecordBuffer();
            status = (short)BTRCALL(12, positionBlock, ref dataBuffer, ref bufferLength, fileNameArray, 0, 0); //BGETFIRST

            if (status == 0) <== Here Status = 0
            {
                ...                
            }

            // Get subsequent records
            while (status == 0) // BReturnCodes.END_OF_FILE or an error will occur
            {
                dataBuffer = new RecordBuffer();
                status = (short)BTRCALL(6, positionBlock, ref dataBuffer, ref bufferLength, fileNameArray, 0, 0); //BGETNEXT

                if (status == 0) <=== Here Status = 22 data buffer length overrun
                {

                }
            }

}

4

1 に答える 1