お世話になります。よろしくお願い致します。
動的配列のユーザー定義型変数をファイル保存読み込みする時に
エラーが生じてしまいます。
同様な操作で通常の動的配列変数はうまく行っていました。
以下のようです。
ここで、
Input #FileNum, Para(i)のPara や
Write #FileNum, Para(i)のPara で
「型が一致しません」とエラーになってしまいます。
どうしたらよろしいでしょうか。
どうか、よろしくお願い致します。
標準モジュールで
Public Type ParaMeter
Name As String
Kata As Integer
X1 As Single
X2 As Single
X3 As Single
End Type
Public Para() As ParaMeter
Public ParaMemNum As Integer
フォームで
Option Base 1
Private Sub Form_Load()
Dim FileNum As Integer
Dim MyPath As String
FileNum = FreeFile
FileName = MyPath & "ParaData.txt"
If Dir(FileName) = "" Then
Open FileName For Output As #FileNum
Close #FileNum
End If
i = 1
Open FileName For Input As #FileNum
Do While Not EOF(FileNum)
ReDim Preserve Para(i)
Input #FileNum, Para(i)
i = i + 1
Loop
ParaMemNum = i - 1
Close #FileNum
End Sub
Private Sub Form_QueryUnload(Cancel As Integer, UnloadMode As Integer)
Dim FileNum As Integer
Dim MyPath As String
FileNum = FreeFile
MyPath = App.Path
If Right(MyPath, 1) <> "\" Then
MyPath = MyPath & "\"
End If
FileName = MyPath & "ParaData.txt"
Open FileName For Output As #FileNum
For i = 1 To ParaMemNum
Write #FileNum, Para(i)
Next i
Close #FileNum
End Sub
Private Sub Command1_Click()
ParaMemNum = ParaMemNum + 1
ReDim Preserve Para(ParaMemNum)
Para(ParaMemNum).Name = Text1.Text
Para(ParaMemNum).Kata = Text2.Text
Para(ParaMemNum).X1 = Text3.Text
Para(ParaMemNum).X2 = Text4.Text
Para(ParaMemNum).X3 = Text5.Text
End Sub
これでいけるかも。(ランダムアクセスと混同されましたか?)
Private Sub Form_Load()
Dim FileNum As Integer
Dim FileName As String
Dim MyPath As String
Dim i As Integer
FileNum = FreeFile
MyPath = App.Path
If Right(MyPath, 1) <> "\" Then
MyPath = MyPath & "\"
End If
FileName = MyPath & "ParaData.txt"
If Dir(FileName) = "" Then
Open FileName For Output As #FileNum
Close #FileNum
End If
i = 1
Open FileName For Input As #FileNum
Do While Not EOF(FileNum)
ReDim Preserve Para(i)
Input #FileNum, Para(i).Name, Para(i).Kata, Para(i).X1, Para(i).X2, Para(i).X3
i = i + 1
Loop
ParaMemNum = i - 1
Close #FileNum
End Sub
Private Sub Form_QueryUnload(Cancel As Integer, UnloadMode As Integer)
Dim FileNum As Integer
Dim MyPath As String
Dim FileName As String
Dim i As Integer
FileNum = FreeFile
MyPath = App.Path
If Right(MyPath, 1) <> "\" Then
MyPath = MyPath & "\"
End If
FileName = MyPath & "ParaData.txt"
Open FileName For Output As #FileNum
For i = 1 To ParaMemNum
Write #FileNum, Para(i).Name, Para(i).Kata, Para(i).X1, Para(i).X2, Para(i).X3
Next i
Close #FileNum
End Sub
くりちゃんさん、本当にありがとうございます。
行き詰まって、暗くなっていたところなので、とても助かりました。
シーケンシャルではメンバをそれぞれ記述しないと行けないのですね。
ランダムファイルの場合と同じような設定でいいのかと思っていました。
うまくいきました。
本当に助かりました。これでまた前に進めます。
またよろしくお願い致します。
解決とさせて頂きます。
ツイート | ![]() |