VB6にて作成された固定長ファイルをC#で読み込み、保存を行いたいです。
いろいろとサイトを回ってみて、FilePutのサンプルを見つけました。
そちらを元にFilePutをFileGetに変更すればいいのではないかと思ったのですがエラーとなってしまいます。
開発環境 windowsXP SP3 VisualStudio2010
<VB6ソース>
-------標準モジュール------------
Type typStrc
SaveLong1 As Long
SaveInt1 As Integer
SaveInt2 As Integer
SaveInt3 As Integer
End Type
Public ABC As typStrc
--------------------------------
------フォーム内-----------------
Private Sub Command1_Click()
Dim intFNo As Integer
Dim RLn_ABC As Integer
intFNo = FreeFile(0)
RLn_ABC = Len(ABC)
Open App.Path & "\Save.dat" For Random As #intFNo Len = RLn_ABC
ABC.SaveLong1 = 5000
ABC.SaveInt1 = 100
ABC.SaveInt2 = 200
ABC.SaveInt3 = 300
Put #intFNo, 1, ABC
Close #intFNo
End Sub
----------------------------------
<C#ソース>
参照設定で「Microsoft.VisualBasic」を追加。
----------------------------------
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using Microsoft.VisualBasic;
namespace WindowsFormsApplication1
{
public partial class Form1 : Form
{
struct Strc
{
int SaveLong1;
short SaveInt1;
short SaveInt2;
short SaveInt3;
}
public Form1()
{
InitializeComponent();
}
private void button1_Click(object sender, EventArgs e)
{
int FNo = FileSystem.FreeFile();
Strc ABC = new Strc();
FileSystem.FileOpen(FNo, @"C:\\Save.dat", OpenMode.Random, OpenAccess.Default,
OpenShare.Default, Strings.Len(ABC));
FileSystem.FileGet(FNo, ABC, 1);
FileSystem.FileClose(FNo);
}
}
}
----------------------------------
「FileGet」のところで実行前のVisualStudio上でエラーとなってしまいます。
固定長データの読み込み方法についてお教え頂けませんでしょうか。
No.1ベストアンサー
- 回答日時:
FileGetのどのオーバーロード使うかを明示しないといけないでしょう
今回の場合
FileGet(Int32, ValueType, Int64 )
を使うようにしないといけませんので
// ValueTypeとstruct Strucを関連付ける
ValueType val = ABC;
FileSystem.FileOpen(FNo, @"C:\\Save.dat", OpenMode.Random, OpenAccess.Default, OpenShare.Default, Strings.Len(ABC));
FileSystem.FileGet( FNo, ref val, 1 );
FileSystem.Close( FNo );
// 読み込んだデータを実体変数にコピー
ABC = (Struc)val;
といった具合でしょう
ご回答頂きありがとうございます。
なるほど、どのオーバーロードを使うかはこのように指定するのですね。
大変勉強になりました。
ValueTypeというのがちょっとまだ理解できていないので勉強してみます。
すごく勉強になりました。ありがとうございます。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- C言語・C++・C# Windows Formアプリからコンソールを呼び出して文字を出力させたい 8 2023/05/09 10:53
- C言語・C++・C# PC画面を録画するプログラムでdllの読み込みエラー 1 2023/04/22 08:31
- C言語・C++・C# C# DatagridviewにExcelシートを反映するとエラーが出る 2 2023/05/06 17:12
- Visual Basic(VBA) ①ExcelVBAでカレンダーを作り、別のユザーフォームで日付を入力したいのですがエラーになります。 1 2023/02/17 18:39
- Visual Basic(VBA) エクセルのマクロについて教えてください。 2 2023/07/15 15:48
- Visual Basic(VBA) 九九の答えの計算 3 2022/12/20 22:13
- Excel(エクセル) 2つのVBAを一緒にしたら機能しなくなりました(エクセル) 7 2022/06/02 12:41
- Visual Basic(VBA) excel vbaでvlooupの変数がわかりません。 7 2022/05/30 09:35
- Excel(エクセル) VBA フォルダ見える化のコードについて 2 2023/06/19 15:04
- Excel(エクセル) マクロでテキストファイルを読み込んだ際の最終セルにデータと改行が含まれる問題の改善方法 2 2022/03/25 16:50
このQ&Aを見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
python エラー
-
エクセルのエラーメッセージ「4...
-
コンパイルできません。
-
バッチからsqlplusの接続エラー...
-
Excelのエラーで困ってます。
-
適切な変換関数が存在しない???
-
BC30002: 型 'ListItem' が定義...
-
VB2008で定数に色の設定をした...
-
PC画面を録画するプログラムでd...
-
HEWを使用しているのですが、こ...
-
fortranでプログラムを実行する...
-
ビルドが失敗してしまいます
-
Arduinoに関する質問
-
Visual Studioのstrcpy_sについて
-
WindowsからLinuxへの移植
-
デバッグ中のエラーのことで教...
-
VC++でboolがエラーになる
-
混合モードでのデバッグ
-
multiple definitionというエラー
-
ERROR C2660について
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
python エラー
-
エクセルのエラーメッセージ「4...
-
バッチからsqlplusの接続エラー...
-
Excelのエラーで困ってます。
-
HEWを使用しているのですが、こ...
-
適切な変換関数が存在しない???
-
VB2008で定数に色の設定をした...
-
fortranでプログラムを実行する...
-
BC30002: 型 'ListItem' が定義...
-
VBAでファイルを開くプログラム...
-
sys/time.hのインクルードがで...
-
error C3867 関数呼び出しには...
-
デバッグ中のエラーのことで教...
-
visual C++ でビルドの中止がで...
-
LPCWSTRとchar
-
RightとLeft関数のライブ...
-
Handlesについて
-
multiple definitionというエラー
-
ACCESSのDate関数のエラー表示...
-
WindowsからLinuxへの移植
おすすめ情報