Ich bin gerade dabei eine FTS Abfrage unter SQLite zu konstruieren und diese auszuwerten.
Das Erzeugen der FTS Tabelle ist kein Problem
Die FTS Abfrage selbst ist kein Problem
Die Auswertung der FTS Abfrage mittels matchinfo() allerdings schon. SQLite gibt einen BLOB von 80 Byte zurück. Diesen kann ich in einen *Buffer schreiben. Das Problem ist, wie kann ich die 80 Byte Byteweise auslesen?
Hier mal mein Ansatz
Code: Alles auswählen
EnableExplicit
UseSQLiteDatabase()
Define *blobresult
CreateFile(0,"fts_test.sql")
CloseFile(0)
OpenDatabase(0,"fts_test.sql","","",#PB_Database_SQLite)
DatabaseUpdate(0,"CREATE VIRTUAL TABLE t1 USING fts4(a, b)")
DatabaseUpdate(0,"INSERT INTO t1 VALUES('transaction default models default', 'Non transaction reads')")
DatabaseUpdate(0,"INSERT INTO t1 VALUES('the default transaction', 'these semantics present')")
DatabaseUpdate(0,"INSERT INTO t1 VALUES('single request', 'default data')")
DatabaseQuery(0,"SELECT matchinfo(t1) FROM t1 WHERE t1 MATCH 'default transaction " + Chr(34) + "these semantics" + Chr(34) + "'")
While NextDatabaseRow(0)
Debug "***"
Debug GetDatabaseBlob(0,0,@*blobresult,DatabaseColumnSize(0,0)) ;1 wenn erfolgreich gelesen werden konnte
Debug DatabaseColumnSize(0,0) ;BLOB Größe in Byte
Debug @*blobresult ;Beginn der Speicheradresse
Debug "Wie bringe ich die 80 Byte zu Papier?"
Wend
CloseDatabase(0) ;Warum erscheint hier ein Speicherfehler?
End
(nähere Info und das Ergebnis der 80 Byte dieses Beispiels findet Ihr unter: http://sqlite.org/fts3.html#matchinfo)
Vielen Dank schon mal für die Hilfe
mm