Author |
Topic: handle variable with files (Read 435 times) |
|
wscbill
New Member
member is offline
Posts: 2
|
|
handle variable with files
« Thread started on: May 17th, 2017, 5:32pm » |
|
Getting the "handle used for incompatible devices" error in LBB when using a handle variable for files. Works successfully in LB.
The situation involves opening an unknown number of files, some of which may need to be open concurrently.
The troubleshooting write-up indicates this error occurs when the same handle is used for file and window, etc. Only files used here.
Some example code that generates the error.
Code:
fn = fn+1
hvar$ = "#B" + str$(fn)
print hvar$
open "errors1.txt" for input as #hvar$
line input #hvar$, s$
print s$
close #hvar$
fn = fn+1
hvar$ = "#B" + str$(fn)
print hvar$
open "errors2.txt" for input as #hvar$
line input #hvar$, s$
print s$
close #hvar$
end
|
|
Logged
|
|
|
|
Richard Russell
Administrator
member is offline
Posts: 1348
|
|
Re: handle variable with files
« Reply #1 on: May 17th, 2017, 6:58pm » |
|
on May 17th, 2017, 5:32pm, wscbill wrote:Getting the "handle used for incompatible devices" error in LBB when using a handle variable for files. Works successfully in LB. |
|
If it works successfully in LB4 I think that's an anomaly, since my understanding is that handle variables can't be used in an OPEN statement. The correct method is surely to use MAPHANDLE as follows:
Code: fn = fn+1
hvar$ = "#B" + str$(fn)
print hvar$
open "\temp\errors.txt" for input as #hvar
maphandle #hvar, hvar$
line input #hvar$, s$
print s$
close #hvar$ Richard.
|
|
|
|
Richard Russell
Administrator
member is offline
Posts: 1348
|
|
Re: handle variable with files
« Reply #2 on: May 19th, 2017, 3:45pm » |
|
on May 17th, 2017, 6:58pm, Richard Russell wrote:If it works successfully in LB4 I think that's an anomaly, since my understanding is that handle variables can't be used in an OPEN statement. |
|
Just to confirm that I've checked the LB4 documentation and nowhere is there any suggestion that a handle variable can be used in an OPEN statement: none of the examples show that and the description of the statement only mentions the use of a regular handle.
If the OP's report is correct and you can, at least in some circumstances, use a handle variable this is another example of LB working differently from what the documentation states. I would not consider the usage to be safe, and it does not work in LBB.
The correct, documented, method is to use MAPHANDLE as I showed in my example, which works in both LB 4 and LBB.
Richard.
|
|
Logged
|
|
|
|
Richard Russell
Administrator
member is offline
Posts: 1348
|
|
Re: handle variable with files
« Reply #3 on: May 25th, 2017, 4:42pm » |
|
on May 19th, 2017, 3:45pm, Richard Russell wrote:If the OP's report is correct and you can, at least in some circumstances, use a handle variable... |
|
The report is not correct. The listed code which purports to demonstrate it working does nothing of the kind, as can be shown by running this example in LB 4.04:
Code: fn = fn+1
hvar$ = "#B" + str$(fn)
print hvar$
open "\temp\errors.txt" for input as #hvar$
print hvar$
line input #B1, s$
print s$
close #hvar$ Printing hvar$ after the file has been opened shows that rather than the OPEN statement having opened the file with the handle #B1 as the OP claimed, it has in fact been opened with the handle #hvar1, so a subsequent attempt to read from the file with the expected handle given as a literal fails.
Richard.
|
|
Logged
|
|
|
|
|