|
-
Jun 28th, 2000, 06:03 PM
#1
Thread Starter
Junior Member
Does anyone know the how to DELETE a line of strings in a
txt file. And do you use the OUTPUT mode or APPEND mode.
Thanyou heaps!!!
-
Jun 28th, 2000, 06:28 PM
#2
_______
....try this out...
don't have time to test this...off the top of
the block..give it a try..I'll check the q & a
when I get to work..gotta go...bye.
I would read this into a list box just for show
until you know it's doing what you want.
then you would open your file and load the array
back into it using output as that would
overwrite the original file.
'the results are what you want.
Option Explicit
Option Compare Text
Dim filesys, txtStream As Object
Private Sub Form_Load()
Dim myArr() As Variant
Dim i As Integer
Dim myInput, myVar as string
Set filesys = CreateObject("Scripting.FileSystemObject")
Set txtStream = filesys.openTextFile("C:\my documents\x.txt")
myInput = inputbox("Enter the line your are searching for."),"Search File For"
Do Until txtStream.atendofstream
myVar = txtStream.readline
myVar = Trim(myArr(i))
If myVar <> myInput
Then
i = i + 1
ReDim Preserve myArr(1 To i) As Variant
myArr(i) = myVar
End If
Loop
for i = 1 to i
list1.additem myArr(i)
next
'leave this commented out till you are happy it works..
'here you should have all lines except the one you don't want
'open "yourfilepath\yourfile.ext" for output as #1
'for i = 1 to i
'write #1, myArr(i)
'next
'Close #1
End Sub
"A myth is not the succession of individual images,
but an integerated meaningful entity,
reflecting a distinct aspect of the real world."
___ Adolf Jensen
-
Jun 28th, 2000, 06:33 PM
#3
Lively Member
To do that, you don't use APPEND. APPEND is for add line at the end of the file.
To delete a line in a file, you must to make a temporary where you copy all the lines, but not these you want to delete.
You kill the old file and you rename de temporary file with the good name.
It's hard but I don't kown another way to make it.
-
Jun 28th, 2000, 06:42 PM
#4
Fanatic Member
No, i don't know an easy way either.
Open the file for binary.
Read the file into a byte array using "Get"
Close the file
Convert the byte array to a string usign "StrConv()"
Delete the unwanted bit from the string.
Open the file for output, (this automatically deletes the content)
Write the string back to the file using Print #1, text
Iain, thats with an i by the way!
-
Jun 28th, 2000, 07:29 PM
#5
transcendental analytic
a bit more detailed than Iains
Open the file in binary
set lof spaces in a string and read it with get
close the file
a)
use instr to search for vbcrlf and cut of the unwanted line using mid
b) split it into array of strings, remove the unvanted string, join them
open in output to erase content
and the put it back into the file in binary
Use  
writing software in C++ is like driving rivets into steel beam with a toothpick.
writing haskell makes your life easier:
reverse (p (6*9)) where p x|x==0=""|True=chr (48+z): p y where (y,z)=divMod x 13
To throw away OOP for low level languages is myopia, to keep OOP is hyperopia. To throw away OOP for a high level language is insight.
-
Jul 5th, 2000, 09:09 PM
#6
Thread Starter
Junior Member
Thanks
Thanks for helping me out, I've now got an idea for what I have to do now!
-
Jul 6th, 2000, 01:25 AM
#7
Delete lines in a textbox:
Code:
Option Explicit
Private Declare Function GetTempPath Lib "kernel32" Alias "GetTempPathA" (ByVal
nBufferLength As Long, ByVal lpBuffer As String) As Long
Private Declare Function GetTempFileName Lib "kernel32" Alias "GetTempFileNameA"
(ByVal lpszPath As String, ByVal lpPrefixString As String, ByVal wUnique As
Long, ByVal lpTempFileName As String) As Long
Private Sub CmdDeleteLine_Click()
Const MAX_PATH = 260
Const NAME_LEN = MAX_PATH + 80
Dim inname As String
Dim strlen As Integer
Dim outpath As String
Dim outname As String
Dim infile As Integer
Dim outfile As Integer
Dim one_line As String
Dim target As String
Dim deleted As Integer
On Error GoTo DeleteLineError
' Open the input file.
inname = FileText.Text
infile = FreeFile
Open inname For Input As infile
' Open the output file.
outpath = Space$(NAME_LEN)
strlen = GetTempPath(NAME_LEN, outpath)
If strlen = 0 Then
MsgBox "Error getting temporary file path."
Exit Sub
Else
outpath = Left$(outpath, strlen)
End If
outname = Space$(NAME_LEN)
If GetTempFileName(outpath, "tmp", _
0, outname) = 0 _
Then
MsgBox "Error getting temporary file name."
Exit Sub
End If
strlen = InStr(outname, vbNullChar) - 1
If strlen > 0 Then _
outname = Left$(outname, strlen)
outfile = FreeFile
Open outname For Output As outfile
MousePointer = vbHourglass
DoEvents
' Copy the file skipping lines containing the
' target.
deleted = 0
target = TargetText.Text
Do While Not EOF(infile)
Line Input #infile, one_line
If InStr(one_line, target) = 0 Then
Print #outfile, one_line
Else
deleted = deleted + 1
End If
Loop
' Close the files.
Close infile
Close outfile
' Delete the original file.
Kill inname
' Give the new file the old name.
Name outname As inname
MsgBox Format$(deleted) & " lines deleted."
DeleteLineError:
MousePointer = vbDefault
Exit Sub
End Sub
Posting Permissions
- You may not post new threads
- You may not post replies
- You may not post attachments
- You may not edit your posts
-
Forum Rules
|
Click Here to Expand Forum to Full Width
|