FUNCTION FReadLine( ptrHandle AS IntPtr, nMax AS DWORD ) AS STRING
public static string FReadLine( IntPtr ptrHandle, uint nMax )
The low level File IO functions in the X# runtime are using .Net filestreams in the background. |
That means that the file handles returned by FOpen() and FCreate() are not 'normal' file handles, but unique identifiers that are used to find the underlying stream object in a collection of streams in the runtime.
That also means that you can't use file handles for functions such as FRead() and FWrite() that were not created in the X# runtime.
If you want to access the underlying FileStream, then you should call the function FGetStream()
1ptrHandle := FOpen2("docs.txt", FO_READ) 2IF ptrHandle != F_ERROR 3 DO WHILE !FEOF(ptrHandle) 4 ? FReadLine(ptrHandle) 5 ENDDO 6ENDIF 7FClose(ptrHandle)
1FUNCTION Grep(cSearch, cFile AS STRING) ; 2 AS DWORD PASCAL 3 LOCAL handle AS PTR 4 LOCAL Count AS DWORD 5 LOCAL Line AS STRING 6 Line := " " 7 handle := FOpen2(file, FO_READ) 8 cSearch := Upper(cSearch) 9 DO WHILE !FEOF(handle) 10 line := Upper(FReadLine(handle)) 11 IF InStr(cSearch, line) 12 ? line 13 Count += 1 14 ENDIF 15 ENDDO 16 RETURN Count