Ignore this as I know what the problem was.
I was passing a pointer to the Unicode string, but should be pointer to
8bit ASCII string.

RBS

On Thu, Oct 8, 2015 at 9:58 AM, Bart Smissaert <bart.smissaert at gmail.com>
wrote:

> OK, thanks, at least I know that the function works fine then in
> sqlite3.dll.
> Problem must be on my side then.
>
> This is the code in the Std_Call dll:
>
> SQLITE3_STDCALL_API const char * __stdcall sqlite3_stdcall_db_filename(sqlite3
> *pDb, const char *zDbName)
> {
>     return sqlite3_db_filename(pDb, zDbName);
> }
>
> And this is the Declare in VBA:
>
> Public Declare Function sqlite3_stdcall_db_filename Lib "SQLite3_StdCall"
> Alias "_sqlite3_stdcall_db_filename at 8" (ByVal hDBHandle As Long, ByVal
> lPtrAttachedDBName As Long) As Long
>
> Anything wrong with either of these?
>
>
> RBS
>
>
>
>
> On Thu, Oct 8, 2015 at 9:40 AM, Dan Kennedy <danielk1977 at gmail.com> wrote:
>
>> On 10/08/2015 03:51 AM, Bart Smissaert wrote:
>>
>>> As I understand it this should produce a filepointer to the filepath of
>>> the
>>> attached database, given the database handle of file the other database
>>> was
>>> attached to and the database name of the attached database. I checked all
>>> the return values and also did a select involving tables in both
>>> databases and all goes fine, so I can be sure that the other database is
>>> attached OK.
>>> All I get from sqlite3_db_filename is zero, so no valid file pointer. No
>>> error messages though.
>>>
>>> I am accessing sqlite3.dll (Windows 7) via a std_call dll as I am working
>>> in VBA here.
>>>
>>> Any suggestions what could be the problem?
>>>
>>> I am running 3.8.11.1
>>>
>>>
>> The program below works here.
>>
>> I'm seeing full paths for databases "main" and "aux", and a zero-length
>> nul-terminated string for "next" (the in-memory database).
>>
>> Dan
>>
>> -----------------------------------------------------
>>
>>
>>
>> #include <sqlite3.h>
>> #include <stdio.h>
>> #include <stdlib.h>
>>
>> int main(int argc, char **argv){
>>   int rc;
>>   sqlite3 *db;
>>
>>   rc = sqlite3_open("test.db", &db);
>>   if( rc!=SQLITE_OK ){
>>     fprintf(stderr, "sqlite3_open: %s\n", sqlite3_errmsg(db));
>>     exit(1);
>>   }
>>
>>   rc = sqlite3_exec(db, "ATTACH 'other.db' AS 'aux'", 0, 0, 0);
>>   if( rc!=SQLITE_OK ){
>>     fprintf(stderr, "sqlite3_exec: %s\n", sqlite3_errmsg(db));
>>     exit(1);
>>   }
>>
>>   rc = sqlite3_exec(db, "ATTACH ':memory:' AS 'next'", 0, 0, 0);
>>   if( rc!=SQLITE_OK ){
>>     fprintf(stderr, "sqlite3_exec: %s\n", sqlite3_errmsg(db));
>>     exit(1);
>>   }
>>
>>   printf("main  db is: %s\n", sqlite3_db_filename(db, "main"));
>>   printf("aux   db is: %s\n", sqlite3_db_filename(db, "aux"));
>>   printf("next  db is: %s\n", sqlite3_db_filename(db, "next"));
>>
>>   return 0;
>> }
>>
>> _______________________________________________
>> sqlite-users mailing list
>> sqlite-users at mailinglists.sqlite.org
>> http://mailinglists.sqlite.org/cgi-bin/mailman/listinfo/sqlite-users
>>
>
>

Reply via email to