Thanks for the code snippet. I think the extra "open" you mention is that the CreateFile did not create and open the file if it did not exist (using 4096). I keep trying different things trying to figure out how the functions actually work. Seems to me the doc is not completely clear and explicit. Your code is very informative.
Thanks George _____ From: [email protected] [mailto:[email protected]] On Behalf Of michiman56 Sent: Tuesday, March 02, 2010 10:34 AM To: [email protected] Subject: [nsbasic-ce] Re: file system help Ok, it looks like you are using the newObjects SFMain to do this. I'm not a fan of using magic numbers, even if they do save space in NSB/CE programs. I always have to look them up, so I prefer to declare constants using the names in the library's typelib where possible. You seem to be opening the same file twice for some reason. Once as outFile and again as file2. That might be why you're seeing the results you experience. Here's an example that works for me: Option Explicit 'newObjects SFMain flags/values ---------------------- 'Open/create mode flags. Const cSFRead = &H0 Const cSFWrite = &H1 Const cSFReadWrite = &H2 'Sharing. Const cSFShareExclusive = &H10 Const cSFShareDenyWrite = &H20 Const cSFShareDenyRead = &H30 Const cSFShareDenyNone = &H40 'Creation specific (these apply to CreateXXX methods). Const cSFFailIfThere = &H0 Const cSFCreate = &H1000 'Create/overwrite. 'WriteText options. Const cOptChars = 0 Const cOptLine = 1 'Seek origins. Const cStreamBegin = 0 Const cStreamCurrent = 1 Const cStreamEnd = 2 Dim SFM, stmTextFile Const FILENAME = "\Documents and Settings\TestText.txt" Set SFM = CreateObject("newObjects.utilctls.SFMain") 'Or use AddObject. Set stmTextFile = _ SFM.CreateFile(FILENAME, cSFWrite Or cSFShareExclusive Or cSFCreate) With stmTextFile .WriteText "Line 1", cOptLine .WriteText "Line 2", cOptLine .WriteText "Line 3", cOptLine .Close End With MsgBox "New file 3 lines", vbOKOnly, "TextFileProg" Set stmTextFile = SFM.OpenFile(FILENAME, cSFReadWrite Or cSFShareExclusive) With stmTextFile .Seek 0, cStreamEnd .WriteText "Line 4", cOptLine .WriteText "Line 5", cOptLine .WriteText "Line 6", cOptLine .Close End With MsgBox "Added 3 more lines", vbOKOnly, "TextFileProg" Set stmTextFile = _ SFM.CreateFile(FILENAME, cSFWrite Or cSFShareExclusive Or cSFCreate) With stmTextFile .WriteText "New Line A", cOptLine .WriteText "New Line B", cOptLine .Close End With MsgBox "New new file 2 lines" & vbNewLine & "Done!", vbOKOnly, "TextFileProg" Bye --- In [email protected], "georgeewalters" <gwalt...@...> wrote: > > Here is the code: > > outName = "\Documents and Settings\AcuTrack\StockCount.txt" > > Set outFile = fs.CreateFile(outName, 4096)'--Create and open and > Set file2 = fs.OpenFile(outName) > For i = 1 To count > tmp = list(i,0) & list(i,1) & list(i,2) & list(i,3) > MsgBox tmp > file2.WriteText tmp > Next > > file2.Close > > MsgBox("File saved") > > My understanding is the CreateFile with 4096 will delete the file if it exists and create a new empty file. I then write one record to the file and when I look at the file with fileExplorer (on PDA i'm talking) it has the record I wrote but at end of all the other records. So the createfile did not delete the file. Can someone explain? I must be understanding something wrong or a mistake in the code above. > > Flags are: > > 0 - Fail if file already exists (default) > 4096 - If file exists, delete and recreate > -- You received this message because you are subscribed to the Google Groups "nsb-ce" group. To post to this group, send email to [email protected]. To unsubscribe from this group, send email to [email protected]. For more options, visit this group at http://groups.google.com/group/nsb-ce?hl=en.
