07. november 2006 - 20:06Der er
5 kommentarer og 1 løsning
skrivning og henting af data fra tekstfil , til vb
jeg sidder i vs2005 og har følgende opgave som jeg ikke kan finde ud af, jeg er rimelig ny så skal bruge en lettere kodning og forklaring, så hvis kodning er meget uoverskueligt må der gerne være en forklaring, da jeg skal kunne forklare hvad jeg gør.
jeg skal fra et program,
gå ned i en txt fil, på en bestemt linie og hente en sti f.eks c:\test.txt op i en variabel.
jeg skal også kunne gå ned og skrive i en bestemt linie i en txt fil, replace det der står.
men især kodningen omkring finde en bestemt linie i en fil, og ændre eller læse er altså det vigtigeste.
så har jeg lige endnu en forespørgsel, kan man skrive kode som man går ned finder en fil i en mappe, tjekker størrelsen, om den stiger ? ... og hvis den ikke er blevet større i noget tid så skal den udførere en handling.
og ved der er nogle andre emner om dette, men ingen af dem har lige givet så meget mening for mig.
Støv, fibre og metalliske partikler kan påvirke både uptime, levetid og driftssikkerhed. Derfor arbejder flere datacentre systematisk med contamination control.
Nedenstående er lidt inspiration til dit problem vedr. læsning og skrivning.
Sub Eksempel() Const BestemtLinie As Long = 4 Dim iFilNr As Integer Dim lLineNo As Long Dim sIndStreng As String Dim aStrenge() As String Dim lLong As Long 'Finde bestemt linie. iFilNr = FreeFile Open "C:\Temp\Test.txt" For Input As #iFilNr lLineNo = 0 While Not EOF(iFilNr) Line Input #iFilNr, sIndStreng lLineNo = lLineNo + 1 Select Case lLineNo Case BestemtLinie MsgBox sIndStreng, vbOKOnly, "Dette er den bestemte linie" Case Else Debug.Print "Ignoreret: " & sIndStreng End Select Wend Close #iFilNr 'Erstatte ønsket linie '1) indlæs indholdet i filen. iFilNr = FreeFile Open "C:\Temp\Test.txt" For Input As #iFilNr ReDim aStrenge(0) While Not EOF(iFilNr) ReDim Preserve aStrenge(UBound(aStrenge) + 1) Line Input #iFilNr, aStrenge(UBound(aStrenge)) Wend Close #iFilNr '2) foretag erstatning, her er det linie 2 der erstattes. aStrenge(2) = "Davs" 'Check evt. om Ubound(aStrenge) er 'lig med/større end den du vil erstatte '3) skriv ny fil. iFilNr = FreeFile Open "C:\Temp\Test2.txt" For Output As #iFilNr For lLong = 1 To UBound(aStrenge) Print #iFilNr, aStrenge(lLong) Next lLong Close #iFilNr End Sub
I tekstfiler kan man ikke "bare lige" erstatte en linie, men er nødt til at indlæse hele filen og skrive den igen. Vær derfor opmærksom på at der bliver skrevet til en ny fil, dvs. der foregår ikke en reel erstatning. Du kan i din egen kode vælge at skrive til den samme fil (brug Kill-kommandoen til at fjerne filen) eller omdøbe den nye fil til den gamles navn (slet den gamle fil først :-) )
Ang. din anden forespørgsel, så er svaret ja. Du skal dog finde et sted/en måde hvor du gemmer størrelse+dato så du har noget at checke imod. Det kan være en .ini-fil eller et sted i registreringsdatabasen.
' åbner filen, og skriver data til variablerne Dim fs As FileStream = File.OpenRead("c:\test.txt") Dim sr As New StreamReader(fs) Dim text As String = sr.ReadToEnd() fs.Close()
' Splitter koden ind i en array Dim lines() As String = Split(text, vbCrLf)
' ændre linie 6 i filen til det vi siger den skal være lines(3) = "ændret tekst"
'ændre txtboksen til det nye TextBox1.Text = lines(6)
'ligger arrayen over i en string variabel igen text = Join(lines, vbCrLf)
'skyder de nye data ned i filen, overskriver. Dim sw As StreamWriter = File.CreateText("c:\test.txt") sw.Write(text) sw.Close()
håber koden giver lidt mening ellers må du bare spørger .
denne henter fra en fil ind i nogle variabler splitter den, og du kan herefter ændre den linie du vil, og det bare og sætte noget textbox.text = lines(0) & lines(1) for at få den ud i din txtbokx
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.