Avatar billede Slettet bruger
28. juli 2006 - 21:12 Der er 17 kommentarer og
1 løsning

Læs/skriv til fil igen igen

Hejsa.
Jeg er begynder i VB og vil gerne lave et program der kan læse og skrive nye data til en text fil. Jeg er klar over at det er beskrevet mange gange før, men jeg kan ikke finde et sted hvor det er skrevet sort på hvidt til en begynder. Anyway...

Min fil indholder, for hvert punkt, et navn (title$) og en adresse (file$).
Sådan ser filen ud med tre punkter:

[database]
file1=mms://radioitalia.wm.p1.str3.com/vditalia
Title1=[Italia][Italian]Solo Musica Italiana
Length=-1
file2=http://www.rtl.it/mediaplayer/rtlTV.asx
Title2=[Italia][Italian]Italy Music
Length=-1
file3=http://media.kataweb.it/MIBGetPointer.aspx?LIVE=2
Title3=[Italia][Italian]Deejay TV
Length=-1
NumberOfEntries=3
Version=2

Hvordan læser jeg hvert "title$" til en combobox og loader "file$" til textbox???
Jeg vil gerne have mulighed for at ændre/slette/tilføje.
Er dette alt for svært for en begynder?
(Bruger VB6)
Avatar billede joern Nybegynder
28. juli 2006 - 21:58 #1
Hej.

Jeg kan godt svare dig på det, men det bliver først i morgen.  Point betyder ikke noget, kommer en anden først får du blot et svar hurtigere.
Avatar billede Slettet bruger
28. juli 2006 - 22:00 #2
Fedt! Har lavet en CommonDialog til at vælge filen med i mellemtiden.

Dim FileName As String
CommonDialog1.Action = 1
FileName = CommonDialog1.FileName
Avatar billede mvhansen Nybegynder
29. juli 2006 - 12:57 #3
Hej madsrh123

Hent fra textfil

Private Sub Command1_Click()
Dim FilNummer As Integer
Dim FilNavn As String
Dim Linje As String

'Unikt filnummer findes
FilNummer = FreeFile
FilNavn = "E:\din plasering\test.txt"

Open FilNavn For Input As #FilNummer
  Do
    'Henter en linje ad gangen
  Line Input #FilNummer, Linje
    Text1.Text = Text1.Text & Linje & vbCrLf
 
Loop Until EOF(FilNummer)
Close #FilNummer
End Sub

skriv til textfil

Private Sub Command1_Click()
Dim FilNummer As Integer
Dim FilNavn As String
Dim Linje As String


FilNummer = FreeFile
FilNavn = "E:\din plasering\test.txt"

Open FilNavn For Output As #FilNummer
  Linje = Text1.Text
  Print #FilNummer, Linje
  Text1.Text = ""
Close #FilNummer

End Sub

mvh

mvhansen
Avatar billede Slettet bruger
29. juli 2006 - 14:36 #4
Jeg kan ikke få det til at virke! Nu kommer alle data til text1. Jeg vil jo gerne have dem som "sæt"
Avatar billede Slettet bruger
29. juli 2006 - 15:11 #5
Jeg vil gerne have "Title" ind i comboboxen og når man skifter så "file" i textbox1
Måske er det lidt dårligt forklaret, men det minder vel lidt om at hente bestemte data fra en .xml eller .ini fil?
Avatar billede Slettet bruger
29. juli 2006 - 20:59 #6
Er der nogne der kan hjælpe?
Avatar billede Slettet bruger
29. juli 2006 - 21:25 #7
Jeg har forsøgt at sætte brugerfladen op som jeg gerne vil have den: http://img57.imageshack.us/img57/5519/untitled1ex9.jpg
Avatar billede rynke10 Novice
30. juli 2006 - 06:53 #8
Har desvaerre ikke tid lige nu, men proev lige foelgende.
Filen bliver indlaest i en variabel, altsaa hele filen. Derfra kan du bearbejde din streng og hente de informationer du vil.
Hvis du har indlaest din fil i text1.text kan du splitte den op, linie for linie.

indarr = Split(Text1.Text, vbCrLf)

Nu er hver linie i din txt-fil laest ind i dit array. Altsaa
indarr(0) ="file1=mms://radioitalia.wm.p1.str3.com/vditalia"
indarr(1) ="Title1=[Italia][Italian]Solo Musica Italiana"
o.s.v.
med left kan du evt finde starten paa din string.
text2.text = left (indarr(0), 5)
text2.text vil saa vaere lig med "file1"
Avatar billede Slettet bruger
30. juli 2006 - 11:54 #9
Fedt, tusinde tak. Nu kan jeg hente hver linje ind enkelvis, men kan man ikke lave en løkke der stopper ved 3. sidste linje??

Lige nu bruger jeg:
Combo1.AddItem indarr(2), 0
Combo1.AddItem indarr(4), 0
Combo1.AddItem indarr(6), 0
Avatar billede Slettet bruger
30. juli 2006 - 12:04 #10
ØØhh, den skriver jo også file1= kan man fjerne det så kun linket står tilbage?
Avatar billede rynke10 Novice
30. juli 2006 - 12:17 #11
I det tilfaelde kan du fjerne de foerste 5 tegn.
Text2.Text = Right(Text1.Text, Len(Text1.Text) - 5)
Nu er det ikke altid 5 tegn du skal fjerne, saa bliver du noedt til at soege efter = og se hvillken plads det staar paa.
Eller du kan bruge split igen og splitte teksten ved = og saa smide det foerste vaek.
Avatar billede rynke10 Novice
30. juli 2006 - 12:23 #12
For at finde den foerste forekomst af = kan du bruge
Text2.Text = InStr(1, Text1.Text, "=")
1 betyder hvor den starter med at soege. text1.text er teksten du soeger i og = er den tekst du soeger efter.
Skulle man lige samle det lidt saa ;-)
Text2.Text = Right(Text1.Text, Len(Text1.Text) - InStr(1, Text1.Text, "="))
Saa kommer alt efter foerste = med
Avatar billede Slettet bruger
30. juli 2006 - 12:32 #13
Du skriver text1.text? Det kan jeg ikke få til at virke! Den er jo faktisk tom endnu (skal senere blive = combo1.text så man kan rette kanal navnet)
Avatar billede Slettet bruger
30. juli 2006 - 12:33 #14
HURRA, Fandt svaret!
Text2.Text = Right(indarr(1), Len(indarr(1)) - InStr(1, indarr(1), "="))
Avatar billede Slettet bruger
30. juli 2006 - 13:01 #15
Jeg kan slet ikke overskue det længere. Hvad skal jeg gøre for at få alle linjer læst ind?

Er der en der gider smide en mail adresse, så kan i lige se om det er helt sort det jeg har lavet?
Avatar billede rynke10 Novice
30. juli 2006 - 14:34 #16
hvis du kan vente til i morgen tidlig, saa skal jeg se paa det.
Jeg bor paa den anden side af kloden og her er det snart sent ;-)
123.ab@c.dk
Avatar billede Slettet bruger
04. august 2006 - 16:27 #17
vil du lige ligge et svar rynke10!!
Avatar billede rynke10 Novice
04. august 2006 - 16:56 #18
Haaber du er kommet lidt videre med det :-)
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