Jag ska läsa ut alla rader i en textfil för att sedan ta bort innehållet i filen..
Jag har två problem.
Dels behöver den skrivskyddas så ingen annan applikation kan skriva till den samtidigt..
Samt hur jag gör snyggast för att radera innehållet??
Jag Använder följande kod för att läsa ut raderna:
strTextFil = "C:mintextfil.txt"
f = FreeFile
Open strTextFil For Input As #f
Close f
Sen är frågan hur jag ska tömma filen, typ nedan. Ett krux är ju om någon skulle skriva till filen mellan dessa två steg?:
f = FreeFile
Open strTextFil For Output As #f
Close f
Kan man med excel kolla om filen används innan den öppnas, vad jag förstått med den tekniken man använder i excel så är det en kopia av originalet man använder?
Blev osäker på vilket språk du använder, är det VB6 till Excel macros eller VB.NET? I vilket fall, du ska inte behöva göra din fil skrivskyddad för att hindra andra applikationer att skriva till den. Om du öppnar filen med Read/Write så kommer filen vara låst till din applikation ända tills du kör File.Close(); Detta har du säkert märkt om du försökt spara en fil, men Windows har sagt "Denna filen används redan av en annan process.. etc. etc.".
Dock, om en annan applikation har din fil öppen med skrivrättigheter kommer det dyka upp fina felmeddelanden. Du kan inte, vad jag vet, säga att din applikation har "exklusivt" skrivrättigheter till filen. Kanske om man gör det väldigt komplicerat och kör applikationen under annan användare och säger att ingen annan utom den nya användaren har skrivrättigheter till filen i fråga, men det är en dryg omväg.
Kan inte garantera att koden är rätt VB.NET syntax, men så här hade jag gjort:
Dim path As String = "C:mintextfil.txt"
If File.Exists(path) = False Then
Try
File.WriteAllText(path, String.Empty)
Catch ex As Exception
Throw ex
End Try
End If
Om det är VB6 så är det väldigt enkelt (dock så kan jag inte Try/Catch i VB6):
Jag kanske borde varit lite tydligare, språket är VB6..
att använda
f = FreeFile
Open strTextFil For Output As #f
Close f
Ger igentligen inget skrivskydd men jag har löst det med
f = FreeFile
Open strTextfil For Input Access Read Lock Read As #f
Problemet är hur jag tar bort innehållet ur filen också utan att det fnnns möjlighet för någon annan att skriva till filen under tiden..
Nu använder jag följande kod för att läsa ut raderna från filen samt att tömma den på innehållet.
Sub ReadAsciiFile()
Dim strTextfil As String
Dim strText As String
Dim f As Integer
Dim i As Integer
Dim OrderLines() As String ' declares a dynamic array variable
'Namn och sökväg till textfilen
strTextfil = "y:test.txt"
If Not IsFileOpen(strTextfil) Then
'vi öppnar textfilen för att kunna läsa från den
f = FreeFile
Open strTextfil For Input Access Read Lock Read As #f
'vi läser in textfilsdatan till en array
i = 1
While Not EOF(f)
Line Input #f, strText
ReDim Preserve OrderLines(1 To i)
OrderLines(fCount) = strText
i = i + 1
Wend
Close f 'importen är klar och vi stänger ned kopplingen till textfilen
Open strTextfil For Output As #f 'Tömmer txt fil
Close f
End If
End Sub
306 ms totalt · 4 externa anrop · v20260731065814-full.a51de22e