Trouble Writing Multiple Lines

Blitz3D Forums/Blitz3D Beginners Area/Trouble Writing Multiple Lines

Mr.Bob94(Posted 2006) [#1]
Hi all,
I'm trying to create a program that writes multiple lines of input to a file. However, for some reason, so far I've only been able to write the last line (which is "Close", because that's what stops the loop) to a file. How can I set this up so that that dosen't happen without using hundreds of thousands of variables?
Sorry... I thought I posted it. Here you go:

Thanks for you help.


Jams(Posted 2006) [#2]
We'll need to take a looky at your code... :)


octothorpe(Posted 2006) [#3]
Open the file (WriteFile()) before your loop starts - you only want to open it once. Write each line (WriteLine()) inside your loop.

P.S. Indent each line in a block (e.g. inside a loop) with a Tab character to improve readability.


Mr.Bob94(Posted 2006) [#4]
Thank you all! This really helps!

*Edit*
Hello again,
I finished with the creation part of my program, but now I'm having trouble with the part for opening files. I'm getting the error "Stream Does Not Exist". Here's my code:



_PJ_(Posted 2006) [#5]
hmm I would use local-folder addresses rather than start at the top of the tree drive letters.


Try just reading and writing to a file within the same folder as the .bb first


Mr.Bob94(Posted 2006) [#6]
Now I'm getting "Memory Acess Violations". I haven't changed anything...


_PJ_(Posted 2006) [#7]
Maybe it's the Stream Does Not Exist error, but it's referred to as Memory Access Violation due to the Debugger being turned off?


big10p(Posted 2006) [#8]
Well, this bit's wrong, for starters:
fopen = OpenFile ("C:\temp\Test Docs\"+open$+".rcn")
filetext= ReadFile (fopen)

That opens the specified file and assigns the file handle to fopen; you then use this file handle as the name to open another file for reading (ReadFile).

And the OpenFile line should be using the string variable openf$, not open$.


Mr.Bob94(Posted 2006) [#9]
@Malice: Yeah, you were right about the debug thing. It's giving me the stream error now.
@big10p: I fixed the open$ error, thanks. But what should I use instead of ReadFile?


big10p(Posted 2006) [#10]
Try this, Mr.Bob94:
Graphics 1024,768

.start
open$ = Input ("Would you like to open or create a file? O = Open, C = Create, Q = Quit.")
If open$ = "O" Then Goto openscript 
If open$ = "C" Then Goto createscript
If open$ = "Q" Then End 

.openscript
openf$ = Input ("Please type the file you wish to open.")
fopen = OpenFile ("C:\temp\Test Docs\"+openf$+".rcn")

While Not Eof(fopen)
	Print ReadLine (fopen)
Wend

readf$ = Input ("Ready.")

Repeat
	mainfile2$ = Input ("")
	WriteLine (fopen,mainfile2$)
Until mainfile2$ = "Close"

CloseFile fopen
WaitKey
Goto start

.createscript
save$ = Input ("Under what name do you want this log saved?")
rcon = WriteFile("C:\temp\Test Docs\"+save$+".rcn")

Writef$ = Input ("Ready.")

Repeat
	mainfile$ = Input ("")
	WriteLine (rcon,mainfile$)
Until mainfile$ = "Close"

CloseFile rcon
WaitKey 
Goto start



Mr.Bob94(Posted 2006) [#11]
Ok, I changed my sript to that, but I'm still getting the error. Here's my code now:
.start
Graphics 1024,768
open$ = Input ("Would you like to open or create a console session? O = Open, C = Create, Q = Quit.")
If open$ = "O" Then Goto openscript 
If open$ = "C" Then Goto createscript
If open$ = "Q" Then End 
.openscript
openf$ = Input ("Please type the file you wish to open.")
fopen = OpenFile ("\Documents\"+openf$+".rcn")
While Not Eof(fopen)
	Print ReadLine (fopen)
Wend
readf$ = Input ("Ready.")
Repeat
	mainfile2$ = Input ("")
	WriteLine (fopen,mainfile2$)
Until mainfile2$ = "Close"

CloseFile fopen
WaitKey
Goto start
.createscript
save$ = Input ("Under what name do you want this log saved?")
Writef$ = Input ("Rynet Console Loaded.")
rcon = WriteFile("C:\Documents and Settings\Max Zimon\My Documents\IDL Files\Programs\Documents\"+save$+".rcn")
Repeat
WriteLine (rcon,mainfile$)
mainfile$ = Input ("")
Until mainfile$ = "Close"
	WriteLine (rcon,mainfile$)
	CloseFile rcon
WaitKey 
Goto start


Thanks again for all your help. :)


Luke.H(Posted 2006) [#12]
This bit looks like an error to me:


Until mainfile$ = "Close"
	WriteLine (rcon,mainfile$)
	CloseFile rcon
WaitKey



look at big10p's code


Mr.Bob94(Posted 2006) [#13]
No, that part works fine for me. It's just in the Open File part that I'm getting errors.


DJWoodgate(Posted 2006) [#14]
Try...

fopen = OpenFile ("C:\Documents and Settings\Max Zimon\My Documents\IDL Files\Programs\Documents\"+openf$+".rcn")
If fopen=0 Then 
	Print "Unable to open logfile"
 	Goto openscript
EndIf

To see why the change to an abolute path might be relevant:
Print SystemProperty("appdir")
Relative paths from your program will work when you create an executable.
rcon = WriteFile("C:\Documents and Settings\Max Zimon\My Documents\IDL Files\Programs\Documents\"+save$+".rcn")
If rcon=0 Then
	Print "Unable to create logfile"
	Goto createscript
EndIf



Mr.Bob94(Posted 2006) [#15]
I can't use the "Print SytemProperty("appdir")" command, it gives me a "Function Not Found" error.
As for your suggestion, that does stop the error, but I still can't read and then write to the file, and that's what I'm trying to do.

Thanks for the help.


DJWoodgate(Posted 2006) [#16]
Sorry, typo - corrected. It is SystemProperty().

If you want to append to a file check out the Filesize() and Seekfile() functions. They might be helpful.


Mr.Bob94(Posted 2006) [#17]
Thanks. This is interesting, but I really could use some help with getting the files to open. I don't mean to push, it's just that I need to get this working soon.


DJWoodgate(Posted 2006) [#18]
It seems to work ok here with a couple of changes.




Mr.Bob94(Posted 2006) [#19]
That's amazing! Wow!! Thank you so much, it works perfectly!