Avatar billede krismort Nybegynder
20. februar 2001 - 10:49 Der er 8 kommentarer

file access

Hej

hvordan læser/skriver jeg til en record opdelt tekstfil som ser sådan ud ?

1 per    34
2 allan  456
3 ole    34
4 tim    2255

mit problem har hidtil været at mine data blev skrevet sådan inde i filen:
1 per    342 allan  4563 ole    344 tim    2255

altså kom alle mine records efter hinanden hvor jeg osse gerne ville have mulighed for at læse filen fra fx. notepad.

Kristian out

Avatar billede cstern Nybegynder
20. februar 2001 - 10:58 #1
du kan måske prøve at udskrive en vbCrLf efter hver record.
Avatar billede krismort Nybegynder
20. februar 2001 - 11:03 #2
vbCrLf?
hvad er det :)
Avatar billede cstern Nybegynder
20. februar 2001 - 11:09 #3
det er en Visual Basic konstant der indeholder tegnene for VognRetur (carriage return) og NyLinie (linefeed).

Så hvis du skriver vbCrLf til en fil indsættes der et linieskift

put #1,, vbCrLf

Avatar billede cstern Nybegynder
20. februar 2001 - 11:10 #4
(det er det samme som:

put#1,, Chr$(13) & Chr$(10)
Avatar billede sjh Nybegynder
20. februar 2001 - 22:33 #5
\'lav 3 ListBox List1 , List2 , List3
\'lav 2 knapper sLoad , sSave

Private Sub sLoad_Click()
Dim a, b, c As String
    List1.Clear
    List2.Clear
    List3.Clear

Open \"test.txt\" For Input As #1
    Do Until EOF(1)
    Input #1, a, b, c
    List1.AddItem a
    List2.AddItem b
    List3.AddItem c
    Loop
Close #1
End Sub


Private Sub sSave_Click()
Open \"test.txt\" For Output As 1
    Dim i%
    For i = 0 To List1.ListCount - 1
    txt = Chr$(34) & List1.List(i) & Chr$(34) & \",\" & Chr$(34) & List2.List(i) & Chr$(34) & \",\" & Chr$(34) & List3.List(i) & Chr$(34)
    Print #1, txt
    Next
Close #1
End Sub
Avatar billede molbo Nybegynder
21. februar 2001 - 15:34 #6
Åben filen som Random file:
Opret et Modul (*.BAS)og en form med en TextBox

Declare en type i toppen af Modulet:
Type Rec
    Nr1 AS STRING*2
    Navn AS STRING*7
    Nr2 AS STRING*4
End Type

Private Sub ReadRandomFile()
Dim MinVar as Rec
Dim NumOfRec as Long
Dim I as Long

Open \"Filnavn\" For Random As #1 Len = Len(MinVar)
NumOfRec=Int(LOF(1) / Len(MinVar))
Text1.Text=\"\"
For I = 1 TO NumOfRec
    Get #1,I,MinVar
    Text1.Text = Text1.Text + MinVar.Nr1 + \" \" + _
                MinVar.Navn + \" \" + _
                MinVar.Nr2 + vbCrLf 
Next I
Close #1
End Sub   
   
Avatar billede cstern Nybegynder
21. februar 2001 - 15:44 #7
molbo: er det ikke nogenlunde det jeg foreslog? altså at tilføje en vbCrLf i enden af records?
Avatar billede molbo Nybegynder
21. februar 2001 - 15:51 #8
Nej - Det er kun for at vise indholdet, selve file access foregå via en type, med fixed længde.
Det smarte ved Random access er at der kan adresseres direkte til en bestemt record (I)
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