Apologies, that's "fmOpenRead" and "fmShareDenyNone" which is defined in the same unit as TFileStream, so it must be available once spelt correctly. The code for the Values thing would actually be of the form "ValueFromIndex[n]" or "Values['name']" but the stuff you posted already answered that question. The only important (fixed) code to still run is: ``` try with TFileStream.Create(sqlconnection1.params.Values['Database'], fmOpenRead or fmShareDenyNone) do begin SetLength(a,15); ReadBuffer(a,15); Free; end; except on Ex:Exception do a:='Exception: '+Ex.Message; end; Memo1.Lines.Add('SQLite Mark: '+String(a)); ``` This time I did syntax check it on my side, so the copy paste should work directly. This just reads the first 15 bytes from the file and will tell us if we see the correct file, if it is accessible, if it can be opened by you/your program, and if it is indeed a valid SQLite file. If so, it should say something like "sqlite format 3", or else, give a telling error.