Sign in to follow this  
Followers 0
langlearnkorean

FileWrite problem...

7 posts in this topic

#1 ·  Posted (edited)

I made a simple leitner box type flash card system years ago and I recoded it today but I have a problem. When ever I write a string to a new text document it sometimes does not write with a new line. When I realized I had that problem I added a new line character before the string which fixed that problem. Then a new problem was it sometimes did two lines so then one was left empty. After that I went back to without the new line character. I am not sure if I am describing this very well so I will just show it like this..

BEFORE

level 1.txt

blah    apple
dino    car
pizza    place
taste    animal

level 2.txt

pear    help
zebra   cardinal

AFTER

level 1.txt << if you get the answer right first line is removed from level 1 and moved to the end of level 2

dino    car
pizza    place
taste    animal

level 2.txt << CORRECT << first line of level 1 is moved to the end of level 2 if you get it right.. 

pear    help
zebra   cardinal
blah    apple

level 2.txt << MY PROBLEM << sometimes it does it the correct way but sometimes it does this.

pear    help
zebra   cardinalblah    apple

I really have no idea how to fix this problem. I have tried FileWrite, FileWriteLine, FileOpen without 1, _FileWriteToLine with string length etc.

 

; I removed most of the stuff that has nothing to do with the problem

Local $FileOpen = FileOpen($Destination)
Local $wordLine = FileReadLine($FileOpen,1)
Local $array = StringSplit($wordLine,"  ")
Local $kor = $array[1]
Local $eng = $array[2]
if($level<5) Then
 _FileWriteToLine($Destination,1,"",1)
EndIf
FileClose($FileOpen)

Local $string = $kor&"  "&$eng


;change to new directory file after removing line from the lower level file

If ($level=1) Then
 $Destination="level 2.txt"
 $FileOpen = FileOpen($Destination,1)
 FileWrite($Destination, $string)
ElseIf ($level=2) Then
 $Destination="level 3.txt"
 $FileOpen = FileOpen($Destination,1)
 FileWrite($Destination, $string)
ElseIf ($level=3) Then
 $Destination="level 4.txt"
 $FileOpen = FileOpen($Destination,1)
 FileWrite($Destination, $string)
ElseIf ($level=4) Then
 $Destination="level 5.txt"
 $FileOpen = FileOpen($Destination,1)
 FileWrite($Destination, $string)
EndIf


FileClose($FileOpen)

 

Edited by langlearnkorean

Share this post


Link to post
Share on other sites



If you use append a @CRLF to the string before you write it, then it will write that to the file.


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

Share this post


Link to post
Share on other sites

#4 ·  Posted (edited)

Insert the @CRLF at the end of your string, like 

FileWrite($Destination, $string & @CRLF)

If unsure if you already have a @CRLF (@CR @LF) in string, you could remove all but one...

Obviously this is spaghetti code.

$sString = "1" & @CRLF & "2" & @LF & "3" & @CR & "4"

msgbox(0,'',$sString)

$sString = _RemoveALL_CR_LF_CRLF_ExceptOne($sString)

msgbox(0,'',$sString)



Func _RemoveALL_CR_LF_CRLF_ExceptOne($sTmp)
    If Not IsString($sTmp) Then Return Msgbox(0,'',"Hey man, you didn't input a string!")

    Do
        $sTmp = StringReplace($sTmp,@CRLF,"")
    Until StringInStr($sTmp,@CRLF) = 0

    Do
        $sTmp = StringReplace($sTmp,@CR,"")
    Until StringInStr($sTmp,@CR) = 0

    Do
        $sTmp = StringReplace($sTmp,@LF,"")
    Until StringInStr($sTmp,@LF) = 0

    Return $sTmp & @CRLF
EndFunc

 

And as brewman said, Appending a @CRLF is good code, prepending is typically bad.

 

If you use append a @CRLF to the string before you write it, then it will write that to the file.

 

Edited by kaisies

Share this post


Link to post
Share on other sites

@kaisies, why not use?

Local $sData = StringRegExpReplace($sSomeData, '\R', '') ; \R matches \r\n, \r or \n

 


_AdapterConnections()_AlwaysRun()_AppMon()_AppMonEx()_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: 04/09/2015

Share this post


Link to post
Share on other sites

Now you have somewhere to begin.


_AdapterConnections()_AlwaysRun()_AppMon()_AppMonEx()_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: 04/09/2015

Share this post


Link to post
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
Sign in to follow this  
Followers 0