Trouble Writing Multiple Lines
Blitz3D Forums/Blitz3D Beginners Area/Trouble Writing Multiple Lines
| ||
| 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. |
| ||
| We'll need to take a looky at your code... :) |
| ||
| 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. |
| ||
| 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: |
| ||
| 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 |
| ||
| Now I'm getting "Memory Acess Violations". I haven't changed anything... |
| ||
| 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? |
| ||
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$. |
| ||
| @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? |
| ||
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
|
| ||
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. :) |
| ||
This bit looks like an error to me:Until mainfile$ = "Close" WriteLine (rcon,mainfile$) CloseFile rcon WaitKey look at big10p's code |
| ||
| No, that part works fine for me. It's just in the Open File part that I'm getting errors. |
| ||
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
|
| ||
| 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. |
| ||
| 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. |
| ||
| 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. |
| ||
| It seems to work ok here with a couple of changes. |
| ||
| That's amazing! Wow!! Thank you so much, it works perfectly! |