Avatar billede mansoor Nybegynder
25. november 2000 - 20:00 Der er 7 kommentarer og
1 løsning

Gemme og læse i filer

Hej

Jeg har en samsat type:


  Type KanoType
    KanoNr As Integer
    TeltPlads As String
    SlutTid As String
    Status As Boolean
  End Type

  Public Kanoer(1 To AntalKanoer) As KanoType

Mit spørgsmål er, hvordan lægger jeg oplysninger ned i en fil samt hvordan læser jeg fra en fil, jeg har prøvet følgende, men det virker ikke:

Læse:

Do While EOF(1) = False
        i = i + 1
        Line Input #1, Kanoer(i).KanoNr
        Line Input #1, Kanoer(i).TeltPlads
        Line Input #1, Kanoer(i).SlutTid
        Line Input #1, Kanoer(i).Status
      Loop
      Close #1

Skrive:

    For i = 1 To 10
        Print #1, Kanoer(i).KanoNr
        Print #1, Kanoer(i).TeltPlads
        Print #1, Kanoer(i).SlutTid
        Print #1, Kanoer(i).Status
      Next i
      Close #1
 
Jeg får en fejl som hedder: Type mismatch

Når jeg sletter selve de linier som læser i
filen virker selve skrive rutinen, men eller melder den også fejl her.

Er der nogen som har en løsning.

Avatar billede nerøs Nybegynder
25. november 2000 - 22:22 #1
Du skal bruge \"Put\" 0g \"Get\" til at gemme og hente brugerdefinerede typer. Så kan du gemme en hel record af gangen.

VH nerøs
Avatar billede sjh Nybegynder
25. november 2000 - 22:52 #2
Hvordan for du det til at virke.
vil du læse/skrive 4 linjer af gangen, eller hvad.
Avatar billede nerøs Nybegynder
26. november 2000 - 00:23 #3
Følgende er hentet fra excels hjælpefil:

This example uses the Put statement to write data to a file. Five records of the user-defined type Record are written to the file.

Type Record    \' Define user-defined type.
    ID As Integer
    Name As String * 20
End Type

Dim MyRecord As Record, RecordNumber    \' Declare variables.
\' Open file for random access.
Open \"TESTFILE\" For Random As #1 Len = Len(MyRecord)
For RecordNumber = 1 To 5    \' Loop 5 times.
    MyRecord.ID = RecordNumber    \' Define ID.
    MyRecord.Name = \"My Name\" & RecordNumber    \' Create a string.
    Put #1, RecordNumber, MyRecord    \' Write record to file.
Next RecordNumber
Close #1    \' Close file.


This example uses the Get statement to read data from a file into a variable. This example assumes that TESTFILE is a file containing five records of the user-defined type Record.

Type Record    \' Define user-defined type.
    ID As Integer
    Name As String * 20
End Type

Dim MyRecord As Record, Position    \' Declare variables.
\' Open sample file for random access.
Open \"TESTFILE\" For Random As #1 Len = Len(MyRecord)
\' Read the sample file using the Get statement.
Position = 3    \' Define record number.
Get #1, Position, MyRecord    \' Read third record.
Close #1    \' Close file.


Avatar billede eiland Nybegynder
26. november 2000 - 02:09 #4
Skrive til fil:

wFileNo = freefile
open \"c:\\fil.txt\" for output as wfileno
    for i = 0 to ubound(kanoer)
        print wfileno, kanoer.TeltPlads                                  print wfileno, kanoer.SlutTid
print wfileno, kanoer.Status 
    next i

close #wfileno

Læse til fil:
wFileNo = freefile
open \"c:\\fil.txt\" for input as wfileno
i = 0
do until eof wfileno
  i = i + 1
  line input wfileno, wKanoer(i).teltplads
  line input wfileno, wkanoer(i).sluttid
  ........

loop
   

close #wfileno


Avatar billede mansoor Nybegynder
26. november 2000 - 10:32 #5
Hej eiland

Vedr. Læse til fil, går det godt indtil jeg kommer til
  line input wfileno, wkanoer(i).status
her siger den type mismatch

wFileNo = freefile
open \"c:\\fil.txt\" for input as wfileno
i = 0
do until eof wfileno
  i = i + 1
  line input wfileno, wKanoer(i).teltplads
  line input wfileno, wkanoer(i).sluttid
  ........

loop
   

close #wfileno




Avatar billede eiland Nybegynder
26. november 2000 - 11:21 #6
Dim Tmp As String


  line input wfileno, wkanoer(i).sluttid
  ........
  line input wfileno, Tmp
  wkanoer(i).status = Tmp
 
Avatar billede truti Nybegynder
28. november 2000 - 12:15 #7
Det var dog nogle laterlige eksempler, dette kan man lave på en linie og så kan det måske køre hurtigere (VB 5-6 = Slow)
Avatar billede mix Nybegynder
19. december 2000 - 08:48 #8
Hej mansoor
Hmm  du kan godt bruge det du har .. det skal bare rettet en smule ;o)

Oki du har typen.

Type KanoType
    KanoNr As Integer
    TeltPlads As String
    SlutTid As String
    Status As Boolean
  End Type

Så gør du bare sådan her.
Din Type må ike være Public eller Global

Dim Kanoer(1 To AntalKanoer) As KanoType

\'sådan her henter du alle sammen.
open \"filnavn.dat\" for binary as 1
get#1,, Kanoner()
close#1

\'Sådan her gemmer du

open \"filnavn.dat\" for binary as 1
put#1,, Kanoner()
close#1


Hilsen
M.I.X
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester

IT-JOB

Forsvarsministeriets Materiel- og Indkøbsstyrelse

Driftsstærk IT-profil til Forsvarsministeriets Materiel- og Indkøbsstyrelse

Capgemini Danmark A/S

Microsoft AI Solution Architect

Riskpoint A/S (Riskpoint Solutions Limited)

Senior Developer