Jag har en fil där inledningen är av typen recInitMaster och resten är av typen recMaster. Hej Problemet är att om jag fösrt kör "Get #1, , myrecord2" så hamnar allt fel sedan när jag kör "Get #1, , MyRecord" Hej Ja, men hur får jag bort myrecord2 delen sedan när jag ska loopa igenom MyRecord. Gör det enkelt för dig istället. Håller med Andreas, men om du skall ha lösningen på det första problemet ändå skall du helt enkelt öppna filen före du läser. Niklas, jag testade det men fick det inte riktigt att fungera. Jag löste problemet på ett annat sätt istället. Get och Type
<br><br>
Type recInitMaster<br>
Type recMaster
<br><br>
Går det på något smidigt sätt att loopa igenom alla poster enligt den principen nedan? Det som förstör nu är ju den inledande texten recInitMaster. <br>
Alltså jag vill att inledning (recInitMaster) först ska läsas och att sedan resten (recMaster) loopas igenom
<code>
Dim MyRecord As recMaster
Open "FilNamn" For Random As #1 Len = Len(MyRecord)
Do While Not EOF(1)
Get #1, , MyRecord
Loop
Close #1
</code>Sv: Get och Type
Förstår problemmet men ändå inte.
Varför har du två Typ Deklarationer ? I så fall får du köra två loopar.
kom igen låt oss kolla Typ deklarationen.
mvh
SvenSv: Get och Type
<code>
Type recMaster
Id As String * 5
Reserved As String * 2
Rec_Len As String * 1
Num_Fields As String * 1
Reserved1 As String * 2
File_Name As String * 18
Reserved2 As String * 1
Flag As String * 1
Init_Date As Single
Fin_Date As Single
Time As String * 1
Intr_Time As String * 1
Reserved3 As String * 2
Symbol As String * 15
Reserved4 As String * 1
Autorun_Flag As String * 1
Reserved5 As String * 1
End Type
Type recInitMaster
Trec_Num As String * 1
Hrec_Used As String * 1
Zeros As String * 40
End Type
Dim MyRecord As recMaster, myrecord2 as recInitMaster
Get #1, , myrecord2
Open "FilNamn" For Random As #1 Len = Len(MyRecord)
Do While Not EOF(1)
Get #1, , MyRecord
Loop
Close #1
</code>Sv: Get och Type
Givetvis .Du skall aldrig använda As #1 som filnummer. Så här skall
du skriva enl denna princip.
Dim FileNum As Long
FileNum = FreeFile
Open "FilNamn" For Random As #FileNum Len = Len(MyRecord)
Do While Not EOF(FileNum)
Get #FileNum, , MyRecord
Loop
Close #FileNum
myrecord2 och myrecord kan inte ha samma filnummer
Obs du måste se till att FileNum uppdateras just innan du börjar loopen
mvh
SvenSv: Get och Type
myrecord2 har ju bara en post och ska enbart läsas en gång.
<br><br>
För om jag först läser "Get #1, , myrecord2" och sedan "Get #1, , MyRecord" så hamnar ju MyRecord på fel plats.<br>
Båda ligger ju i samma fil. Sv: Get och Type
<code>
Private Sub cmdSave_Click()
Dim FileNo As Long
Dim FileName As String
Dim MyMaster As recInitMaster
Dim MyRecords() As recMaster
Dim Size As Long
'Skapar testdata
Dim Index As Long
ReDim MyRecords(10)
For Index = 0 To 10
With MyRecords(Index)
.Id = Index
End With
Next
'Testdata skapat
FileNo = FreeFile()
FileName = "c:\Test.tmp"
Open FileName For Binary Access Write Shared As #FileNo
Put #FileNo, , MyMaster
Size = UBound(MyRecords)
Put #FileNo, , Size
Put #FileNo, , MyRecords
Close #FileNo
End Sub
Private Sub cmdLoad_Click()
Dim FileNo As Long
Dim FileName As String
Dim MyMaster As recInitMaster
Dim MyRecords() As recMaster
Dim Size As Long
FileNo = FreeFile()
FileName = "c:\Test.tmp"
Open FileName For Binary Access Read Shared As #FileNo
Get #FileNo, , MyMaster
Get #FileNo, , Size
ReDim MyRecords(Size)
Get #FileNo, , MyRecords
Close #FileNo
End Sub
</code>Sv: Get och Type
open ...
Get #1, detförsta
do
Get #1, resten
loop until eof(1)
/Niklas JanssonSv: Get och Type
Tacka för alla svar!