Jag har ett problem. Det är så att jag har gjort ett program som spar en egen datatyp i en array som sedan sparas ner till fil enligt följande: Hej, Som Johan skriver.Sen är det inget bra att bara tro att man kan skriva #1 alltid !Fråga, dynamisk array och fil
Public Sub Spara()
Dim i%
Open "FilNamn.txt" For Random As #1 Len = 89
For i% = 1 To MaxIndex ' Där MaxIndex är t.ex. 16
Put #1, i%, Array(i%)
Next i
Close 1
Och sedan hämtas:
Public Sub Hämta()
Dim i%
Open "FilNamn.txt" For Random As #1 Len = 89
For i = 1 To MaxIndex
Get #1, i%, Array(i%)
Next i
Close 1
End Sub
Problemet är att när jag deklarerar om arrayen till en dynamisk array då kan jag inte hämta längre. Spara går alldeles utmärkt, filen ser ut som den ska, men vid hämtning blir det stopp. Är det någon vänlig själ som kan hjälpa mig att få det att fungera så vore jag väldans tacksam.
/ Mvh T.P.Sv: Fråga, dynamisk array och fil
Om du menar att du enbart deklarerar så här:
<code>Dim Array() As Variant</code>
och inte mer så blir det fel. Du måste nämligen hela tiden låta din array växa, den gör den inte automatiskt. Använd därför inflr varje läsning:
<code>Redim Preserve Array( UBound( Array ) + 1 ) As Variant</code>
Redim används för att ändra storleken på en array, och preserve betyder att ingen data går förlorad när du utökar (utan preserve så töms hela arrayen).
// JohanSv:Fråga, dynamisk array och fil
Public Sub Spara()
Dim i%
Open "FilNamn.txt" For Random As #1 Len = 89
For i% = 1 To MaxIndex ' Där MaxIndex är t.ex. 16
Put #1, i%, Array(i%)
Next i
Så här ungefär skall det vara. <b>Array</b> är ett reserverat ord får du inte använda !
<code>
Dim MinArray() As String 'i Formens General
'*******************
Public Sub Spara()
Dim i As Long,Fnum As Long
Fnum = FreeFile
Redim MinArray(MaxIndex) ' Där MaxIndex är t.ex. 16
Open "C:\MinMapp\FilNamn.txt" For Random As #Fnum Len = 89
For i = 0 To Ubound(MinArray)
Put #Fnum,, MinArray(i)
Next 'i
.....
...
Close#Fnum
</code>
Du behöver inte Preserve om du läser in nya värde i Arrayen från 0 som du gör.