Could another user/process have the file open for exclusive read/
write or write-only access?
However, the 'can't-copy-to-an-Integer' sounds like a bug - I'd
report it.
On Aug 12, 2006, at 3:40 PM, Dennis Birch wrote:
I've run into some problems with a chunk of code that seems like it
should work without any issues. I'm hoping somebody can look at it and
tell me what's I'm doing wrong.
One thing I'm experiencing is an inability to copy a
FolderItem.LastErrorCode to a local Integer variable. You'll see in
the code below several places where I try to do that, but the value of
n is always 0, even though showing the contents of "f" reveals an
error code of 102 after the line "bs.Write s".
The error code 102 indicates "Access denied" according to the online
reference. I have checked in the Finder's Get Info box, and I have
Read and Write permissions for both the folder containing the files
I'm looping over, and the folder that contains them. So that error
makes no sense to me.
I have added a couple of comments to the code below in case anybody
wants to plug it into a project and test it. (You'll need to provide
the function a FolderItem for a folder you want to work on.) The
comments are warnings that as written, this code will truncate the
contents of your files, so don't use it on anything that matters to
you.
But please do let me know if you can see anything I'm doing wrong
here.
By the way, this is in RB 2006R3 with Mac OS X 10.4.7.
Private Sub Work(SrcFolder As FolderItem)
dim i, u As Integer
dim n As Integer
dim s As String
dim bs As BinaryStream
dim f As FolderItem
dim errors As Integer
// WARNING: RUN THIS CODE ONLY ON A COPY OF A FOLDER --
// IT WILL ALTER THE CONTENTS OF THE FILES IN THE FOLDER
u = SrcFolder.Count
for i = 1 to u
f = SrcFolder.Item(i)
bs = f.OpenAsBinaryFile(True)
n = f.LastErrorCode
if bs <> nil Then
n = f.LastErrorCode
s = bs.Read(bs.Length, Encodings.UTF8)
n = f.LastErrorCode
// the value of "s" may be changed in the actual code
s = "This is a test, this is a test."
// WARNING: LEAVING THE ABOVE LINE INTACT WILL TRUNCATE THE
CONTENTS OF EVERY FILE IN YOUR
// FOLDER TO THE LENGTH OF THE ABOVE STRING
bs.Write s
n = f.LastErrorCode
if n <> 0 Then errors = errors + 1
bs.Length = lenb(s)
end if
next
MsgBox "Errors: " + str(errors)
End Sub
_______________________________________________
Unsubscribe or switch delivery mode:
<http://www.realsoftware.com/support/listmanager/>
Search the archives of this list here:
<http://support.realsoftware.com/listarchives/lists.html>
_______________________________________________
Unsubscribe or switch delivery mode:
<http://www.realsoftware.com/support/listmanager/>
Search the archives of this list here:
<http://support.realsoftware.com/listarchives/lists.html>