Jump to content

Deleting single line of txt file


Recommended Posts

I want to delete single line of text from a .txt file and cannot get it to work.

First I use

$lineDelete = FileOpen("test.txt", 1)

And than

_FileWriteToLine($lineDelete, 2,"", 1)

This does nothing, and if I change 2nd flag in FileOpen to 2 than it erase entire text from file. Any ideas or suggestions?

Link to comment
Share on other sites

Did you search? I did >>

UDF List:

 
_AdapterConnections()_AlwaysRun()_AppMon()_AppMonEx()_ArrayFilter/_ArrayReduce_BinaryBin()_CheckMsgBox()_CmdLineRaw()_ContextMenu()_ConvertLHWebColor()/_ConvertSHWebColor()_DesktopDimensions()_DisplayPassword()_DotNet_Load()/_DotNet_Unload()_Fibonacci()_FileCompare()_FileCompareContents()_FileNameByHandle()_FilePrefix/SRE()_FindInFile()_GetBackgroundColor()/_SetBackgroundColor()_GetConrolID()_GetCtrlClass()_GetDirectoryFormat()_GetDriveMediaType()_GetFilename()/_GetFilenameExt()_GetHardwareID()_GetIP()_GetIP_Country()_GetOSLanguage()_GetSavedSource()_GetStringSize()_GetSystemPaths()_GetURLImage()_GIFImage()_GoogleWeather()_GUICtrlCreateGroup()_GUICtrlListBox_CreateArray()_GUICtrlListView_CreateArray()_GUICtrlListView_SaveCSV()_GUICtrlListView_SaveHTML()_GUICtrlListView_SaveTxt()_GUICtrlListView_SaveXML()_GUICtrlMenu_Recent()_GUICtrlMenu_SetItemImage()_GUICtrlTreeView_CreateArray()_GUIDisable()_GUIImageList_SetIconFromHandle()_GUIRegisterMsg()_GUISetIcon()_Icon_Clear()/_Icon_Set()_IdleTime()_InetGet()_InetGetGUI()_InetGetProgress()_IPDetails()_IsFileOlder()_IsGUID()_IsHex()_IsPalindrome()_IsRegKey()_IsStringRegExp()_IsSystemDrive()_IsUPX()_IsValidType()_IsWebColor()_Language()_Log()_MicrosoftInternetConnectivity()_MSDNDataType()_PathFull/GetRelative/Split()_PathSplitEx()_PrintFromArray()_ProgressSetMarquee()_ReDim()_RockPaperScissors()/_RockPaperScissorsLizardSpock()_ScrollingCredits_SelfDelete()_SelfRename()_SelfUpdate()_SendTo()_ShellAll()_ShellFile()_ShellFolder()_SingletonHWID()_SingletonPID()_Startup()_StringCompact()_StringIsValid()_StringRegExpMetaCharacters()_StringReplaceWholeWord()_StringStripChars()_Temperature()_TrialPeriod()_UKToUSDate()/_USToUKDate()_WinAPI_Create_CTL_CODE()_WinAPI_CreateGUID()_WMIDateStringToDate()/_DateToWMIDateString()Au3 script parsingAutoIt SearchAutoIt3 PortableAutoIt3WrapperToPragmaAutoItWinGetTitle()/AutoItWinSetTitle()CodingDirToHTML5FileInstallrFileReadLastChars()GeoIP databaseGUI - Only Close ButtonGUI ExamplesGUICtrlDeleteImage()GUICtrlGetBkColor()GUICtrlGetStyle()GUIEventsGUIGetBkColor()Int_Parse() & Int_TryParse()IsISBN()LockFile()Mapping CtrlIDsOOP in AutoItParseHeadersToSciTE()PasswordValidPasteBinPosts Per DayPreExpandProtect GlobalsQueue()Resource UpdateResourcesExSciTE JumpSettings INISHELLHOOKShunting-YardSignature CreatorStack()Stopwatch()StringAddLF()/StringStripLF()StringEOLToCRLF()VSCROLLWM_COPYDATAMore Examples...

Updated: 22/04/2018

Link to comment
Share on other sites

  • Developers

Use the filename in _FileWriteToLine() and forget the Fileopen() as it serves no purpose here other than keeping the file locked.

Edited by Jos
updated explanation

SciTE4AutoIt3 Full installer Download page   - Beta files       Read before posting     How to post scriptsource   Forum etiquette  Forum Rules 
 
Live for the present,
Dream of the future,
Learn from the past.
  :)

Link to comment
Share on other sites

Did you even read my question you would see that I already found topic you are refering to and that my code is exactly same like solution one.

I did, no mention of that topic I'm afraid nor of searching. Did you read Jos' response?

UDF List:

 
_AdapterConnections()_AlwaysRun()_AppMon()_AppMonEx()_ArrayFilter/_ArrayReduce_BinaryBin()_CheckMsgBox()_CmdLineRaw()_ContextMenu()_ConvertLHWebColor()/_ConvertSHWebColor()_DesktopDimensions()_DisplayPassword()_DotNet_Load()/_DotNet_Unload()_Fibonacci()_FileCompare()_FileCompareContents()_FileNameByHandle()_FilePrefix/SRE()_FindInFile()_GetBackgroundColor()/_SetBackgroundColor()_GetConrolID()_GetCtrlClass()_GetDirectoryFormat()_GetDriveMediaType()_GetFilename()/_GetFilenameExt()_GetHardwareID()_GetIP()_GetIP_Country()_GetOSLanguage()_GetSavedSource()_GetStringSize()_GetSystemPaths()_GetURLImage()_GIFImage()_GoogleWeather()_GUICtrlCreateGroup()_GUICtrlListBox_CreateArray()_GUICtrlListView_CreateArray()_GUICtrlListView_SaveCSV()_GUICtrlListView_SaveHTML()_GUICtrlListView_SaveTxt()_GUICtrlListView_SaveXML()_GUICtrlMenu_Recent()_GUICtrlMenu_SetItemImage()_GUICtrlTreeView_CreateArray()_GUIDisable()_GUIImageList_SetIconFromHandle()_GUIRegisterMsg()_GUISetIcon()_Icon_Clear()/_Icon_Set()_IdleTime()_InetGet()_InetGetGUI()_InetGetProgress()_IPDetails()_IsFileOlder()_IsGUID()_IsHex()_IsPalindrome()_IsRegKey()_IsStringRegExp()_IsSystemDrive()_IsUPX()_IsValidType()_IsWebColor()_Language()_Log()_MicrosoftInternetConnectivity()_MSDNDataType()_PathFull/GetRelative/Split()_PathSplitEx()_PrintFromArray()_ProgressSetMarquee()_ReDim()_RockPaperScissors()/_RockPaperScissorsLizardSpock()_ScrollingCredits_SelfDelete()_SelfRename()_SelfUpdate()_SendTo()_ShellAll()_ShellFile()_ShellFolder()_SingletonHWID()_SingletonPID()_Startup()_StringCompact()_StringIsValid()_StringRegExpMetaCharacters()_StringReplaceWholeWord()_StringStripChars()_Temperature()_TrialPeriod()_UKToUSDate()/_USToUKDate()_WinAPI_Create_CTL_CODE()_WinAPI_CreateGUID()_WMIDateStringToDate()/_DateToWMIDateString()Au3 script parsingAutoIt SearchAutoIt3 PortableAutoIt3WrapperToPragmaAutoItWinGetTitle()/AutoItWinSetTitle()CodingDirToHTML5FileInstallrFileReadLastChars()GeoIP databaseGUI - Only Close ButtonGUI ExamplesGUICtrlDeleteImage()GUICtrlGetBkColor()GUICtrlGetStyle()GUIEventsGUIGetBkColor()Int_Parse() & Int_TryParse()IsISBN()LockFile()Mapping CtrlIDsOOP in AutoItParseHeadersToSciTE()PasswordValidPasteBinPosts Per DayPreExpandProtect GlobalsQueue()Resource UpdateResourcesExSciTE JumpSettings INISHELLHOOKShunting-YardSignature CreatorStack()Stopwatch()StringAddLF()/StringStripLF()StringEOLToCRLF()VSCROLLWM_COPYDATAMore Examples...

Updated: 22/04/2018

Link to comment
Share on other sites

I did, no mention of that topic I'm afraid nor of searching. Did you read Jos' response?

Yes and using it was he posted entire text get deleted.

_FileWriteToLine("test.txt", 2,"", 1)

And I always try to find solutions online before opening topics or posting questions.

Any more ideas why my entire file get deleted instead of just line number 2?

Link to comment
Share on other sites

  • Developers

Yes and using it was he posted entire text get deleted.

_FileWriteToLine("test.txt", 2,"", 1)

And I always try to find solutions online before opening topics or posting questions.

Any more ideas why my entire file get deleted instead of just line number 2?

This statement will only delete line 2 ... not the whole file!

You must have done something wrong somewhere.

Jos

SciTE4AutoIt3 Full installer Download page   - Beta files       Read before posting     How to post scriptsource   Forum etiquette  Forum Rules 
 
Live for the present,
Dream of the future,
Learn from the past.
  :)

Link to comment
Share on other sites

  • Developers

run this for testing:

#include<file.au3>
; fill file
$Filename = "testfile.txt"
$hF = FileOpen($Filename,2)
FileWriteLine($hF,"line 1")
FileWriteLine($hF,"line 2")
FileWriteLine($hF,"line 3")
FileWriteLine($hF,"line 4")
FileWriteLine($hF,"line 5")
FileClose($hF)
;remove line 2
_FileWriteToLine($Filename, 2,"", 1)
ShellExecute($Filename)

Jos

SciTE4AutoIt3 Full installer Download page   - Beta files       Read before posting     How to post scriptsource   Forum etiquette  Forum Rules 
 
Live for the present,
Dream of the future,
Learn from the past.
  :)

Link to comment
Share on other sites

run this for testing:

#include<file.au3>
; fill file
$Filename = "testfile.txt"
$hF = FileOpen($Filename,2)
FileWriteLine($hF,"line 1")
FileWriteLine($hF,"line 2")
FileWriteLine($hF,"line 3")
FileWriteLine($hF,"line 4")
FileWriteLine($hF,"line 5")
FileClose($hF)
;remove line 2
_FileWriteToLine($Filename, 2,"", 1)
ShellExecute($Filename)

Jos

Well I manage to make it work in single form of what you posted but in my code which is quite big I couldn't get it to work via function. Because I had to delete 2nd line on multiple occasions during script conditions. However if I use this with function it will delete entire text which is really strange, and if I use it directly it's works. Anyway thanks for your quick responses and ideas.
Link to comment
Share on other sites

  • Developers

However if I use this with function it will delete entire text which is really strange, and if I use it directly it's works.

Don't think so. ;)

SciTE4AutoIt3 Full installer Download page   - Beta files       Read before posting     How to post scriptsource   Forum etiquette  Forum Rules 
 
Live for the present,
Dream of the future,
Learn from the past.
  :)

Link to comment
Share on other sites

Don't think so. ;)

Well I know that error must lie somwhere inside my code but it's less effort just doing hacky way since it would take unnecessary much amount of time to debug it.(~7k lines of code) Edited by Centrally
Link to comment
Share on other sites

Is there such a thing as unnecessary debugging time?

EDIT: I meant unecessary debugging time when there's an error in the script causing unwanted actions being performed. In case that wasn't clear what I wrote.

Edited by BrewManNH

If I posted any code, assume that code was written using the latest release version unless stated otherwise. Also, if it doesn't work on XP I can't help with that because I don't have access to XP, and I'm not going to.
Give a programmer the correct code and he can do his work for a day. Teach a programmer to debug and he can do his work for a lifetime - by Chirag Gude
How to ask questions the smart way!

I hereby grant any person the right to use any code I post, that I am the original author of, on the autoitscript.com forums, unless I've specifically stated otherwise in the code or the thread post. If you do use my code all I ask, as a courtesy, is to make note of where you got it from.

Back up and restore Windows user files _Array.au3 - Modified array functions that include support for 2D arrays.  -  ColorChooser - An add-on for SciTE that pops up a color dialog so you can select and paste a color code into a script.  -  Customizable Splashscreen GUI w/Progress Bar - Create a custom "splash screen" GUI with a progress bar and custom label.  -  _FileGetProperty - Retrieve the properties of a file  -  SciTE Toolbar - A toolbar demo for use with the SciTE editor  -  GUIRegisterMsg demo - Demo script to show how to use the Windows messages to interact with controls and your GUI.  -   Latin Square password generator

Link to comment
Share on other sites

  • 3 months later...

I get an error with this method:

Here is my code:

#include <File.au3>
_FileWriteToLine("C:\temp\" & "Test.txt",1,"",1) ; overwrite the first line with nothing

Here is my original Test.txt data:

1 Line to delete

2 Do not delete

3 Do not delete

3 Do not delete

4 Do not delete

5 Do not delete

6 Do not delete

Obviously I just want to delete the first line, but the code deletes the first two lines. See output file data:

3 Do not delete

3 Do not delete

4 Do not delete

5 Do not delete

6 Do not delete

Link to comment
Share on other sites

  • Developers

Works fine here with your input lines and script.

Anything special with the input file like CR/LF/CRLF mixing or something?

Jos

SciTE4AutoIt3 Full installer Download page   - Beta files       Read before posting     How to post scriptsource   Forum etiquette  Forum Rules 
 
Live for the present,
Dream of the future,
Learn from the past.
  :)

Link to comment
Share on other sites

Interesting...this works:

#include <File.au3>
$sFile = @DesktopDir & "/test.txt"
_FileCreate($sFile)
$sFileText ="1 Line to delete" & @CRLF & _
"2 Do not delete" & @CRLF & _
"3 Do not delete" & @CRLF & _
"3 Do not delete" & @CRLF & _
"4 Do not delete" & @CRLF & _
"5 Do not delete" & @CRLF & _
"6 Do not delete"
FileWrite($sFile, $sFileText)
_FileWriteToLine($sFile,1,"",1)
ConsoleWrite(FileRead($sFile) & @CRLF)

2 Do not delete

3 Do not delete

3 Do not delete

4 Do not delete

5 Do not delete

6 Do not delete

mixing cr/lf's does not:

#include <File.au3>
$sFile = @DesktopDir & "/test.txt"
_FileCreate($sFile)
$sFileText ="1 Line to delete" & @CR & _
"2 Do not delete" & @LF & _
"3 Do not delete" & @CRLF & _
"3 Do not delete" & @CRLF & _
"4 Do not delete" & @CRLF & _
"5 Do not delete" & @CRLF & _
"6 Do not delete"
FileWrite($sFile, $sFileText)
_FileWriteToLine($sFile,1,"",1)
ConsoleWrite(FileRead($sFile) & @CRLF)

3 Do not delete

3 Do not delete

4 Do not delete

5 Do not delete

6 Do not delete

fixed:

#include <File.au3>
$sFile = @DesktopDir & "/test.txt"
_FileCreate($sFile)
$sFileText ="1 Line to delete" & @CR & _
"2 Do not delete" & @LF & _
"3 Do not delete" & @CRLF & _
"3 Do not delete" & @CRLF & _
"4 Do not delete" & @CRLF & _
"5 Do not delete" & @CRLF & _
"6 Do not delete"
$sFileText = StringRegExpReplace($sFileText, "[\r\n]+", @CRLF)
FileWrite($sFile, $sFileText)
_FileWriteToLine($sFile,1,"",1)
ConsoleWrite(FileRead($sFile) & @CRLF)

2 Do not delete

3 Do not delete

3 Do not delete

4 Do not delete

5 Do not delete

6 Do not delete

"Issue" is with this line in _fileWriteToLine:

Local $aSplit_File = StringSplit(StringStripCR($sRead_File), @LF)

If using @cr, those "lines" are killed

Edited by jdelaney
IEbyXPATH-Grab IE DOM objects by XPATH IEscriptRecord-Makings of an IE script recorder ExcelFromXML-Create Excel docs without excel installed GetAllWindowControls-Output all control data on a given window.
Link to comment
Share on other sites

  • Developers

Isn't that surprising when looking at the UDF code where it is assumes that there is always a LF at the end of each records:

Local $aSplit_File = StringSplit(StringStripCR($sRead_File), @LF)

Jos :)

SciTE4AutoIt3 Full installer Download page   - Beta files       Read before posting     How to post scriptsource   Forum etiquette  Forum Rules 
 
Live for the present,
Dream of the future,
Learn from the past.
  :)

Link to comment
Share on other sites

This works well, and preserves blank lines:

#include <File.au3>
$sFile = @DesktopDir & "/test.txt"
_FileCreate($sFile)
$sFileText ="1 Line to delete" & @CR & @LF & @CR & @CR & @LF & _
 "2 Do not delete" & @LF & @CRLF & _
 "3 Do not delete" & @CRLF & @CRLF & _
 "3 Do not delete" & @CRLF & _
 "4 Do not delete" & @CRLF & _
 "5 Do not delete" & @CRLF & _
 "6 Do not delete"
 $sFileText = StringRegExpReplace($sFileText, "\r+?[\n+?]?", @CRLF)
 FileWrite($sFile, $sFileText)
 _FileWriteToLine($sFile,1,"",1)
 ConsoleWrite(FileRead($sFile) & @CRLF)
Edited by jdelaney
IEbyXPATH-Grab IE DOM objects by XPATH IEscriptRecord-Makings of an IE script recorder ExcelFromXML-Create Excel docs without excel installed GetAllWindowControls-Output all control data on a given window.
Link to comment
Share on other sites

  • Developers

But my lines end with @CRLF

When that is the case it should work fine.

How do I fix this.

Should I open the UDF and change the LF to CRLF?

Nope, there must be something wrong with the file. ZIP it and attach it to a post or PM so I can have a look.

Jos

SciTE4AutoIt3 Full installer Download page   - Beta files       Read before posting     How to post scriptsource   Forum etiquette  Forum Rules 
 
Live for the present,
Dream of the future,
Learn from the past.
  :)

Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
 Share

  • Recently Browsing   0 members

    • No registered users viewing this page.
×
×
  • Create New...