Converting from PowerBasic ...

Converting from PowerBasic ...

Postby Rimantas » Sun Sep 04, 2011 5:59 pm

Hi,

At this moment I returned to one project to work with SqLite . Exist a good solution to work with this good embedded database in a network enviroment . This solution is SqLitening : http://www.sqlitening.com/support/index.php .

It have main exe , that works with SqLite3.dll and clients programs only must attach one dll - sqlitening.dll .

Sorry , but I don't have a good knowledge about types in C and have problem to call dll functions .

Here is original of powerbasic include :
Code: Select all  Expand view

'  | SQLitening Include                                               |
'
  This include file is intended to be used by PowerBASIC programs
'   that use the SQLitening.Dll (also any other language that fully
'
  supports OLE string parameter passing). See SQLitening.Txt or
'   SQLitening.Chm for information on each command.
'

' ==========>>> SQLitening return codes
%SQLitening_NoOpenDatabase          =  -7
%SQLitening_AccessDenied            =  -8
%SQLitening_FileDoesNotExist        =  -9
%SQLitening_FileOpenGetPutError     = -10
%SQLitening_LockTimeout             = -11
%SQLitening_NochangedRows           = -12
%SQLitening_InvalidColumnNameNumber = -13
%SQLitening_InvalidSetNumber        = -14  
%SQLitening_AttachIsInvalid         = -15
%SQLitening_CanNotConnect           = -16
%SQLitening_InvalidKeyOrNotFound    = -17
%SQLitening_SendOrReceiveError      = -18
%SQLitening_InvalidStringOrRequest  = -19
%SQLitening_ErrorAtServer           = -20

'
==========>>> SQLite return codes
%SQLite_OK        = 0         'Successful result
%SQLite_Busy      = 5         '
Database is locked
%SQLite_Dups      = 19        'Constraint violation.  Normally caused by
                              '
trying to add a non unique key to an index
                              'during an Insert or Update.

'
============================<[ Declares ]>============================
Declare Function slAttach lib "SQLitening.Dll" alias "slAttach" (byref rsFileName as String, byref rsAsDatabaseName as String, optional byval rsModChars as String) as Long
Declare Function slBuildBindDat lib "SQLitening.Dll" alias "slBuildBindDat" (byref rsData as String, optional byval rsModChars as String) as String
Declare Function slBuildInsertOrUpdate lib "SQLitening.Dll" alias "slBuildInsertOrUpdate" (byref rsTable as String, byref rsValues as String, optional byval rsColumns as String, optional byval rsWhere as String) as String
Declare Sub      slClose lib "SQLitening.Dll" alias "slClose"
Declare Sub      slCloseSet lib "SQLitening.Dll" alias "slCloseSet" (optional byval rlSetNumber as Long)
Declare Function slConnect lib "SQLitening.Dll" alias "slConnect" (optional byval rsServer as String, optional byval rlPort as Long, optional byval rsModChars as String, optional wsOutData as String)as Long
Declare Function slConvertDat lib "SQLitening.Dll" alias "slConvertDat" (rsData as String, optional byval rsModChars as String) as String
Declare Function slCopyDatabase lib "SQLitening.Dll" alias "slCopyDatabase" (rsDestinationFileName as String, optional byval rsModChars as String, optional byval rsDatabaseName as String) as Long
Declare Sub      slDisconnect lib "SQLitening.Dll" alias "slDisconnect"
Declare Function slExe lib "SQLitening.Dll" alias "slExe" (byref rsStatement as String, optional byval rsModChars as String) as Long
Declare Function slExeBind lib "SQLitening.Dll" alias "slExeBind" (byref rsStatement as String, byref rsData as String, optional byval rsModChars as String) as Long
Declare Function slF lib "SQLitening.Dll" alias "slF" (byval rlColumnNumber as Long, optional byval rlSetNumber as Long) as String
Declare Function slFN lib "SQLitening.Dll" alias "slFN" (byref rsColumnName as String, optional byval rlSetNumber as Long) as String
Declare Function slFNX lib "SQLitening.Dll" alias "slFNX" (byref rsColumnName as String, optional byval rsModChars as String, optional byval rlSetNumber as Long) as String
Declare Function slFX lib "SQLitening.Dll" alias "slFX" (byval rlColumnNumber as Long, optional byval rsModChars as String, optional byval rlSetNumber as Long) as String
Declare Function slGetChangeCount lib "SQLitening.Dll" alias "slGetChangeCount" (optional byval rsModChars as String) as Long
Declare Function slGetColumnCount lib "SQLitening.Dll" alias "slGetColumnCount" (optional byval rlSetNumber as Long) as Long
Declare Function slGetColumnName lib "SQLitening.Dll" alias "slGetColumnName" (optional byval rlColumnNumber as Long, optional byval rlSetNumber as Long) as String
Declare Function slGetColumnNumber lib "SQLitening.Dll" alias "slGetColumnNumber" (byref rsColumnName as String, optional byval rlSetNumber as Long) as Long
Declare Function slGetDatabaseAndFileNames  lib "SQLitening.Dll" alias "slGetDatabaseAndFileNames" as String
Declare Function slGetError lib "SQLitening.Dll" alias "slGetError" () as String
Declare Function slGetErrorNumber lib "SQLitening.Dll" alias "slGetErrorNumber" () as Long
Declare Function slGetFieldDataTypes lib "SQLitening.Dll" alias "slGetFieldDataTypes" (byref rsStatement as String) as String
Declare Function slGetFile lib "SQLitening.Dll" alias "slGetFile" (byref rsFileName as String, byref wsFileData as String, optional byval rsModChars as String) as Long
Declare Function slGetHandle lib "SQLitening.Dll" alias "slGetHandle" (optional byval rsModChars as String, optional byval rlSetNumber as Long) as Dword
Declare Function slGetInsertID lib "SQLitening.Dll" alias "slGetInsertID" () as Quad
Declare Function slGetRow lib "SQLitening.Dll" alias "slGetRow" (optional byval rlSetNumber as Long, optional byval rsModChars as String) as Long
Declare Function slGetStatus lib "SQLitening.Dll" alias "slGetStatus" (byval rlRequest as Long) as String
Declare Function slGetTableColumnNames lib "SQLitening.Dll" alias "slGetTableColumnNames" (byref rsTable as String) as String
Declare Function slGetTableNames lib "SQLitening.Dll" alias "slGetTableNames" (optional byval rsDataBase as String) as String
Declare Function slGetUnusedSetNumber lib "SQLitening.Dll" alias "slGetUnusedSetNumber" as Long
Declare Function slIsColumnNameValid lib "SQLitening.Dll" alias "slIsColumnNameValid" (byref rsColumnName as String, optional byval rlSetNumber as Long) as Long
Declare Function slIsColumnNumberValid lib "SQLitening.Dll" alias "slIsColumnNumberValid" (byval rlColumnNumber as Long, optional byval rlSetNumber as Long) as Long
Declare Function slIsFieldNull lib "SQLitening.Dll" alias "slIsFieldNull" (byval rlColumnNumber as Long, optional byval rlSetNumber as Long) as Long
Declare Function slIsOpen lib "SQLitening.Dll" alias "slIsOpen" () as Long
Declare Function slIsSetNumberValid lib "SQLitening.Dll" alias "slIsSetNumberValid"(optional byval rlSetNumber as Long) as Long
Declare Function slOpen lib "SQLitening.Dll" alias "slOpen" (optional byval rsFileName as String, optional byval rsModChars as String) as Long
Declare Sub      slPopDatabase lib "SQLitening.Dll" alias "slPopDatabase" (optional rsSave as String)
Declare Sub      slPopSet lib "SQLitening.Dll" alias "slPopSet" (optional byval rlSetNumber as Long, optional rsSave as String)
Declare Sub      slPushDatabase lib "SQLitening.Dll" alias "slPushDatabase" (optional wsSave as String)
Declare Sub      slPushSet lib "SQLitening.Dll" alias "slPushSet" (optional byval rlSetNumber as Long, optional wsSave as String)
Declare Function slPutFile lib "SQLitening.Dll" alias "slPutFile" (byref rsFileName as String, byref rsFileData as String, optional byval rsModChars as String) as Long
Declare Function slRunProc lib "SQLitening.Dll" alias "slRunProc" (rsProcName as String, blParm1 as Long, blParm2 as Long, bsParm3 as String, bsParm4 as String, optional byval rsModChars as String) as Long
Declare Function slSel lib "SQLitening.Dll" alias "slSel" (byref rsStatement as String, optional byval rlSetNumber as Long, optional byval rsModChars as String) as Long
Declare Function slSelBind lib "SQLitening.Dll" alias "slSelBind" (byref rsStatement as String, byref rsData as String, optional byval rlSetNumber as Long, optional byval rsModChars as String) as Long
Declare Function slSelAry lib "SQLitening.Dll" alias "slSelAry" (byref rsStatement as String, byref wsaColsAndRows() as String, optional byval rsModChars as String) as Long
Declare Function slSelStr lib "SQLitening.Dll" alias "slSelStr" (byref rsStatement as String, optional byval rsModChars as String) as String
Declare Sub      slSetProcessMods lib "SQLitening.Dll" alias "slSetProcessMods" (byref rsModChars as String)
Declare Function slSetRelNamedLocks lib "SQLitening.Dll" alias "slSetRelNamedLocks"(byref rsLockNames as String, optional byval rsModChars as String, _
                                                                                    optional byval rsSelStatement as String, optional byval rsSelSetNumber as Long, optional byval rlSelModChars as String) as Long
 


I did owns madifications :
Code: Select all  Expand view

DLL32 FUNCTION slAttach( rsFileName as Long, rsAsDatabaseName as Long, rsModChars as Long ) AS LONG PASCAL LIB "SQLitening.Dll"
//Declare Function slAttach lib "SQLitening.Dll" alias "slAttach" (byref rsFileName as String, byref rsAsDatabaseName as String, optional byval rsModChars as String) as Long
DLL32 FUNCTION slBuildBindDat( rsData as Long, rsModChars as Long ) AS VOID PASCAL LIB "SQLitening.Dll"
//Declare Function slBuildBindDat lib "SQLitening.Dll" alias "slBuildBindDat" (byref rsData as String, optional byval rsModChars as String) as String
DLL32 FUNCTION slBuildInsertOrUpdate( rsTable as Long, rsValues as Long, rsColumns as Long, rsWhere as Long ) AS VOID PASCAL LIB "SQLitening.Dll"
//Declare Function slBuildInsertOrUpdate lib "SQLitening.Dll" alias "slBuildInsertOrUpdate" (byref rsTable as String, byref rsValues as String, optional byval rsColumns as String, optional byval rsWhere as String) as String
DLL32 FUNCTION slClose() AS VOID PASCAL LIB "SQLitening.Dll"
//Declare Sub      slClose lib "SQLitening.Dll" alias "slClose"
DLL32 FUNCTION slCloseSet( rlSetNumber as Long ) AS VOID PASCAL LIB "SQLitening.Dll"
//Declare Sub      slCloseSet lib "SQLitening.Dll" alias "slCloseSet" (optional byval rlSetNumber as Long)
DLL32 FUNCTION slConnect( rsServer as Long, rlPort as Long, rsModChars as Long, wsOutData as Long ) AS LONG PASCAL LIB "SQLitening.Dll"
//Declare Function slConnect lib "SQLitening.Dll" alias "slConnect" (optional byval rsServer as String, optional byval rlPort as Long, optional byval rsModChars as String, optional wsOutData as String)as Long
DLL32 FUNCTION slConvertDat( rsData as Long, rsModChars as Long ) AS VOID PASCAL LIB "SQLitening.Dll"
//Declare Function slConvertDat lib "SQLitening.Dll" alias "slConvertDat" (rsData as String, optional byval rsModChars as String) as String
DLL32 FUNCTION slCopyDatabase( rsDestinationFileName as Long, rsModChars as Long, rsDatabaseName as Long ) AS LONG PASCAL LIB "SQLitening.Dll"
//Declare Function slCopyDatabase lib "SQLitening.Dll" alias "slCopyDatabase" (rsDestinationFileName as String, optional byval rsModChars as String, optional byval rsDatabaseName as String) as Long
DLL32 FUNCTION slDisconnect() AS VOID PASCAL LIB "SQLitening.Dll"
//Declare Sub      slDisconnect lib "SQLitening.Dll" alias "slDisconnect"
DLL32 FUNCTION slExe( rsStatement as Long, rsModChars as Long ) AS LONG PASCAL LIB "SQLitening.Dll"
//Declare Function slExe lib "SQLitening.Dll" alias "slExe" (byref rsStatement as String, optional byval rsModChars as String) as Long
DLL32 FUNCTION slExeBind( rsStatement as Long, rsData as Long, rsModChars as Long ) AS LONG PASCAL LIB "SQLitening.Dll"
//Declare Function slExeBind lib "SQLitening.Dll" alias "slExeBind" (byref rsStatement as String, byref rsData as String, optional byval rsModChars as String) as Long
DLL32 FUNCTION slF( rlColumnNumber as Long, rlSetNumber as Long ) AS VOID PASCAL LIB "SQLitening.Dll"
//Declare Function slF lib "SQLitening.Dll" alias "slF" (byval rlColumnNumber as Long, optional byval rlSetNumber as Long) as String
DLL32 FUNCTION slFX( rlColumnNumber as Long, rlSetNumber as Long, rsModChars as Long ) AS VOID PASCAL LIB "SQLitening.Dll"
//Declare Function slFX lib "SQLitening.Dll" alias "slFX" (byval rlColumnNumber as Long, optional byval rsModChars as String, optional byval rlSetNumber as Long) as String
DLL32 FUNCTION slFN( rsColumnName as Long, rlSetNumber as Long ) AS VOID PASCAL LIB "SQLitening.Dll"
//Declare Function slFN lib "SQLitening.Dll" alias "slFN" (byref rsColumnName as String, optional byval rlSetNumber as Long) as String
DLL32 FUNCTION slFNX( rsColumnName as Long, rlSetNumber as Long, rsModChars as Long ) AS VOID PASCAL LIB "SQLitening.Dll"
//Declare Function slFNX lib "SQLitening.Dll" alias "slFNX" (byref rsColumnName as String, optional byval rsModChars as String, optional byval rlSetNumber as Long) as String
DLL32 FUNCTION slGetChangeCount( rsModChars as Long ) AS LONG PASCAL LIB "SQLitening.Dll"
//Declare Function slGetChangeCount lib "SQLitening.Dll" alias "slGetChangeCount" (optional byval rsModChars as String) as Long
DLL32 FUNCTION slGetColumnCount( rlSetNumber as Long ) AS LONG PASCAL LIB "SQLitening.Dll"
//Declare Function slGetColumnCount lib "SQLitening.Dll" alias "slGetColumnCount" (optional byval rlSetNumber as Long) as Long
DLL32 FUNCTION slGetColumnName( rlColumnNumber as Long, rlSetNumber as Long ) AS VOID PASCAL LIB "SQLitening.Dll"
//Declare Function slGetColumnName lib "SQLitening.Dll" alias "slGetColumnName" (optional byval rlColumnNumber as Long, optional byval rlSetNumber as Long) as String
DLL32 FUNCTION slGetColumnNumber( rsColumnName as Long, rlSetNumber as Long ) AS LONG PASCAL LIB "SQLitening.Dll"
//Declare Function slGetColumnNumber lib "SQLitening.Dll" alias "slGetColumnNumber" (byref rsColumnName as String, optional byval rlSetNumber as Long) as Long
DLL32 FUNCTION slGetErrorNumber() AS LONG PASCAL LIB "SQLitening.Dll"
//Declare Function slGetErrorNumber lib "SQLitening.Dll" alias "slGetErrorNumber" () as Long
DLL32 FUNCTION slGetFile( rsFileName as Long, wsFileData as Long, rsModChars as Long ) AS LONG PASCAL LIB "SQLitening.Dll"
//Declare Function slGetFile lib "SQLitening.Dll" alias "slGetFile" (byref rsFileName as String, byref wsFileData as String, optional byval rsModChars as String) as Long
DLL32 FUNCTION slGetHandle( rsModChars as Long, rlSetNumber as Long ) AS LONG PASCAL LIB "SQLitening.Dll"
//Declare Function slGetHandle lib "SQLitening.Dll" alias "slGetHandle" (optional byval rsModChars as String, optional byval rlSetNumber as Long) as Dword
DLL32 FUNCTION slGetInsertID() AS QUAD PASCAL LIB "SQLitening.Dll"
//Declare Function slGetInsertID lib "SQLitening.Dll" alias "slGetInsertID" () as Quad
DLL32 FUNCTION slGetRow( rlSetNumber as Long, rsModChars as Long ) AS LONG PASCAL LIB "SQLitening.Dll"
//Declare Function slGetRow lib "SQLitening.Dll" alias "slGetRow" (optional byval rlSetNumber as Long, optional byval rsModChars as String) as Long
DLL32 FUNCTION slGetStatus ( rlRequest as Long, Status as Long ) AS VOID PASCAL LIB "SQLitening.Dll"
//Declare Function slGetStatus lib "SQLitening.Dll" alias "slGetStatus" (byval rlRequest as Long) as String
DLL32 FUNCTION slGetTableColumnNames( rsTableName as Long ) AS VOID PASCAL LIB "SQLitening.Dll"
//Declare Function slGetTableColumnNames lib "SQLitening.Dll" alias "slGetTableColumnNames" (byref rsTable as String) as String
DLL32 FUNCTION slGetTableNames( rsDataBase as Long ) AS VOID PASCAL LIB "SQLitening.Dll"
//Declare Function slGetTableNames lib "SQLitening.Dll" alias "slGetTableNames" (optional byval rsDataBase as String) as String
DLL32 FUNCTION slGetUnusedSetNumber() AS LONG PASCAL LIB "SQLitening.Dll"
//Declare Function slGetUnusedSetNumber lib "SQLitening.Dll" alias "slGetUnusedSetNumber" as Long
DLL32 FUNCTION slIsColumnNameValid( rsColumnName as Long, rlSetNumber as Long ) AS LONG PASCAL LIB "SQLitening.Dll"
//Declare Function slIsColumnNameValid lib "SQLitening.Dll" alias "slIsColumnNameValid" (byref rsColumnName as String, optional byval rlSetNumber as Long) as Long
DLL32 FUNCTION slIsColumnNumberValid( rlColumnNumber as Long, rlSetNumber as Long ) AS LONG PASCAL LIB "SQLitening.Dll"
//Declare Function slIsColumnNumberValid lib "SQLitening.Dll" alias "slIsColumnNumberValid" (byval rlColumnNumber as Long, optional byval rlSetNumber as Long) as Long
DLL32 FUNCTION slIsOpen() AS LONG PASCAL LIB "SQLitening.Dll"
//Declare Function slIsOpen lib "SQLitening.Dll" alias "slIsOpen" () as Long
DLL32 FUNCTION slIsFieldNull( rlColumnNumber as Long, rlSetNumber as Long ) AS LONG PASCAL LIB "SQLitening.Dll"
//Declare Function slIsFieldNull lib "SQLitening.Dll" alias "slIsFieldNull" (byval rlColumnNumber as Long, optional byval rlSetNumber as Long) as Long
DLL32 FUNCTION slIsSetNumberValid( rlSetNumber as Long ) AS LONG PASCAL LIB "SQLitening.Dll"
//Declare Function slIsSetNumberValid lib "SQLitening.Dll" alias "slIsSetNumberValid"(optional byval rlSetNumber as Long) as Long
DLL32 FUNCTION slPopDatabase( rsSave as Long ) AS VOID PASCAL LIB "SQLitening.Dll"
//Declare Sub      slPopDatabase lib "SQLitening.Dll" alias "slPopDatabase" (optional rsSave as String)
DLL32 FUNCTION slPopSet( rlSetNumber as Long, rsSave as Long ) AS VOID PASCAL LIB "SQLitening.Dll"
//Declare Sub      slPopSet lib "SQLitening.Dll" alias "slPopSet" (optional byval rlSetNumber as Long, optional rsSave as String)
DLL32 FUNCTION slPushDatabase( wsSave as Long ) AS VOID PASCAL LIB "SQLitening.Dll"
//Declare Sub      slPushDatabase lib "SQLitening.Dll" alias "slPushDatabase" (optional wsSave as String)
DLL32 FUNCTION slPushSet( rlSetNumber as Long, wsSave as Long ) AS VOID PASCAL LIB "SQLitening.Dll"
//Declare Sub      slPushSet lib "SQLitening.Dll" alias "slPushSet" (optional byval rlSetNumber as Long, optional wsSave as String)
DLL32 FUNCTION slPutFile( rsFileName as Long, wsFileData as Long, rsModChars as Long ) AS LONG PASCAL LIB "SQLitening.Dll"
//Declare Function slPutFile lib "SQLitening.Dll" alias "slPutFile" (byref rsFileName as String, byref rsFileData as String, optional byval rsModChars as String) as Long
DLL32 FUNCTION slRunProc( rsProcName as Long, @Parm1 as PTR, @Parm2 as PTR, @bsParm3 as PTR, @bsParm4 as PTR, rsModChars as Long ) AS LONG PASCAL LIB "SQLitening.Dll"
//Declare Function slRunProc lib "SQLitening.Dll" alias "slRunProc" (rsProcName as String,
//blParm1 as Long, blParm2 as Long, bsParm3 as String, bsParm4 as String,
//optional byval rsModChars as String) as Long
DLL32 FUNCTION slOpen( rsFileName as Long, rsModChars as Long ) AS LONG PASCAL LIB "SQLitening.Dll"
//Declare Function slOpen lib "SQLitening.Dll" alias "slOpen" (optional byval rsFileName as String, optional byval rsModChars as String) as Long
DLL32 FUNCTION slSel( @rsStatement as PTR, rlSetNumber as Long, rsModChars as Long ) AS LONG PASCAL LIB "SQLitening.Dll"
//Declare Function slSel lib "SQLitening.Dll" alias "slSel" (byref rsStatement as String, optional byval rlSetNumber as Long, optional byval rsModChars as String) as Long
DLL32 FUNCTION slSelStr( @rsStatement as PTR, rsModChars as Long ) AS VOID PASCAL LIB "SQLitening.Dll"
//Declare Function slSelStr lib "SQLitening.Dll" alias "slSelStr" (byref rsStatement as String, optional byval rsModChars as String) as String
DLL32 FUNCTION slSetProcessMods( rsModChars as Long ) AS VOID PASCAL LIB "SQLitening.Dll"
//Declare Sub      slSetProcessMods lib "SQLitening.Dll" alias "slSetProcessMods" (byref rsModChars as String)
DLL32 FUNCTION slSetRelNamedLocks( @rsLockNames as PTR, rsModChars as Long, rsSelStatement as Long, rsSelSetNumber as Long,  rsSelModChars as Long ) AS LONG PASCAL LIB "SQLitening.Dll"
//Declare Function slSetRelNamedLocks lib "SQLitening.Dll" alias "slSetRelNamedLocks"(byref rsLockNames as String,
//optional byval rsModChars as String, _optional byval rsSelStatement as String, optional byval rsSelSetNumber as Long,
//optional byval rlSelModChars as String) as Long
DLL32 FUNCTION slGetFieldDataTypes( @rsStatement as Long ) AS VOID PASCAL LIB "SQLitening.Dll"
// Declare Function slGetFieldDataTypes lib "SQLitening.Dll" alias "slGetFieldDataTypes" (byref rsStatement as String) as String
DLL32 FUNCTION slGetDatabaseAndFileNames() AS LONG PASCAL LIB "SQLitening.Dll"
//Declare Function slGetDatabaseAndFileNames  lib "SQLitening.Dll" alias "slGetDatabaseAndFileNames" as String'
DLL32 FUNCTION slSelBind( @rsStatement as Ptr, @rsData as Ptr, rlSetNumber as Long, rsModChars as String ) AS LONG PASCAL LIB "SQLitening.Dll"
//Declare Function slSelBind lib "SQLitening.Dll" alias "slSelBind" (byref rsStatement as String, byref rsData as String, optional byval rlSetNumber as Long, optional byval rsModChars as String) as Long
DLL32 FUNCTION slSelAry( @rsStatement as Ptr, @wsaColsAndRows() as Ptr, rsModChars as String ) AS LONG PASCAL LIB "SQLitening.Dll"
//Declare Function slSelAry lib "SQLitening.Dll" alias "slSelAry" (byref rsStatement as String, byref wsaColsAndRows() as String, optional byval rsModChars as String) as Long
 


Please , direct to me what are mine mistakes of modifications . I promise to share with experience with this small but ( I believe ) very interesting server .

With best regards ! Rimantas
Rimantas U.
User avatar
Rimantas
 
Posts: 437
Joined: Fri Oct 07, 2005 12:56 pm
Location: Utena , Lithuania

Re: Converting from PowerBasic ...

Postby Enrico Maria Giordano » Sun Sep 04, 2011 6:07 pm

A sample:

Code: Select all  Expand view
DLL32 FUNCTION SLATTACH( @rsFileName AS LPSTR, @rsAsDatabaseName AS LPSTR, rsModChars AS LPSTR ) AS LONG PASCAL FROM "slAttach" LIB "SQLitening.Dll"


EMG
User avatar
Enrico Maria Giordano
 
Posts: 8402
Joined: Thu Oct 06, 2005 8:17 pm
Location: Roma - Italia

Re: Converting from PowerBasic ...

Postby Rimantas » Wed Sep 07, 2011 7:20 am

Enrico Maria Giordano wrote:A sample:

Code: Select all  Expand view
DLL32 FUNCTION SLATTACH( @rsFileName AS LPSTR, @rsAsDatabaseName AS LPSTR, rsModChars AS LPSTR ) AS LONG PASCAL FROM "slAttach" LIB "SQLitening.Dll"


EMG


Oh , mine stupidity ... :-) . Rewrote all calls for DLL . It seems it's working . Still have problem with this :

DLL32 FUNCTION slSel( @rsStatement AS LPSTR, rlSetNumber AS Long, rsModChars AS LPSTR ) AS LONG PASCAL FROM "slSel" LIB "SQLitening.Dll"
//Declare Function slSel lib "SQLitening.Dll" alias "slSel" (byref rsStatement as String, optional byval rlSetNumber as Long, optional byval rsModChars as String) as Long

Connecting to server OK , opening database OK . But trying to get recordset calling slSel crached application ... What can be wrong in this place ?

With best regards !
Rimantas U.
User avatar
Rimantas
 
Posts: 437
Joined: Fri Oct 07, 2005 12:56 pm
Location: Utena , Lithuania

Re: Converting from PowerBasic ...

Postby Enrico Maria Giordano » Wed Sep 07, 2011 8:22 am

Have you allocated enough space for rsStatement? Something like

Code: Select all  Expand view
rsStatement = SPACE( ... )


EMG
User avatar
Enrico Maria Giordano
 
Posts: 8402
Joined: Thu Oct 06, 2005 8:17 pm
Location: Roma - Italia

Re: Converting from PowerBasic ...

Postby Rimantas » Wed Sep 07, 2011 4:25 pm

Enrico Maria Giordano wrote:Have you allocated enough space for rsStatement? Something like

Code: Select all  Expand view
rsStatement = SPACE( ... )


EMG


Thanks Enrico , I did some space in buffer .
It returned error of Fwh application :

Code: Select all  Expand view

Application
===========
   Path and name: C:\A\sqLt\sql1.exe (32 bits)
   Size: 1,811,456 bytes
   Time from start: 0 hours 0 mins 7 secs
   Error occurred at: 2011.09.07, 19:11:28
   Error description: Error BASE/1003  Variable does not exist: LONG

Stack Calls
===========
   Called from: SQL1.PRG => SLSEL(0)
 ...
 


It seems that it must be directed rsSetNumber . I tried that , but get the same error ...

It seems that I'm losing patience ... :-) . Maybe exist an better way to use DLL's function ? I found info , that with implib can convert dll to lib and then describe dll functions like harb functions ... What it's better ?

Added :

Error with "long" - it's because syntax of declaration of DLL function it's very sensitive . It works only in uppercase . That solved . But now I'm getting this error : The instruction at "blabla" ref.memory at "blabla" . The memory could not be "read" ...
It can be solved ?

With best regards !
Rimantas U.
User avatar
Rimantas
 
Posts: 437
Joined: Fri Oct 07, 2005 12:56 pm
Location: Utena , Lithuania


Return to FiveWin for Harbour/xHarbour

Who is online

Users browsing this forum: Google [Bot] and 134 guests