| |
| (* -------------------------------------------------------------------------------- |
| * |
| * Programma di esempio per la registrazione di una fattura di vendita utilizzando |
| * le funzioni della libreria SPPSERV.DLL. |
| * Prima di utilizzare questo esempio è necessario modificare alcune informazioni |
| * in modo da adattare il codice alla base dati utilizzata. |
| * |
| * In questo esempio l'esercizio di lavoro e' considerato corrispondente all'anno |
| * solare in corso e le date impostate per default a quella attuale. |
| * |
| * QUESTO SORGENTE E' FORNITO A TITOLO DI ESEMPIO COME DIMOSTRAZIONE DELL'UTILIZZO |
| * DELLA LIBRERIA SPPSERV.DLL. NESSUNA GARANZIA, NE' IMPLICITA NE' ESPLICITA, E' |
| * PREVISTA PER QUALSIASI UTILIZZO DIVERSO DA QUELLO INDICATO. |
| * |
| -------------------------------------------------------------------------------- *) |
| program SppServTest3; |
| |
| {$APPTYPE CONSOLE} |
| |
| uses |
| Windows, StdCtrls, ExtCtrls, SysUtils; |
| |
| const |
| MY_LIBRARY_NAME = 'sppserv.dll'; |
| SPPSRV_SUCCESS = 0; |
| |
| type |
| PDouble = ^double; |
| |
| var |
| // prototipi delle funzioni della sppserv.dll |
| SPPSRVVersion : function() : integer stdcall; |
| SPPSRVInit : function(mainwnd : HWND) : integer stdcall; |
| SPPSRVExit : function() : integer stdcall; |
| SPPSRVComuniConnect : function(comuniconnectstring : pChar) : integer stdcall; |
| SPPSRVDittaConnect : function(dittaconnectstring : pChar) : integer stdcall; |
| SPPSRVSetEsercizio : function(esercizio : pChar) : integer stdcall; |
| SPPSRVSetEuro : function(IsEuro : boolean) : integer stdcall; |
| SPPSRVSetUtente : function(utente : pChar) : integer stdcall; |
| SPPSRVSetTodayDate : function(todaydate : pChar) : integer stdcall; |
| SPPSRVCalcolaScadenze : function(tipopag : pChar; IsValuta : boolean; TRata : double; |
| DataFattura : pChar; datadecpag : pChar; |
| ggpart : pChar; msalto1 : pChar; msalto2 : pChar; |
| ggsalto : pChar) : integer stdcall; |
| SPPSRVReadScadenza : function(nscad : integer; importo : PDouble; data : pChar; |
| tipo : pChar) : integer stdcall; |
| |
| dll : THandle; |
| IsError, rc, numscad, j : integer; |
| tipopag,DataFattura, datadecpag, ggpart, |
| msalto1, msalto2, ggsalto : string; |
| TRata, importo : double; |
| IsValuta : boolean; |
| tipo, dt1: array[0..16] of Char; |
| |
| label |
| END_OF_TEST, FINE; |
| |
| procedure ReportError(Msg : string); |
| var |
| lpMsgBuf : pAnsiChar; |
| ErrorCode : DWORD; |
| begin |
| GetMem(lpMsgBuf, 512); |
| ErrorCode := GetLastError(); |
| FormatMessage(FORMAT_MESSAGE_FROM_SYSTEM or FORMAT_MESSAGE_ARGUMENT_ARRAY, |
| nil, ErrorCode, LANG_NEUTRAL, lpMsgBuf, 512, nil); |
| WriteLn(Msg + ': errore ' + IntToStr(ErrorCode) + ' (' + lpMsgBuf + ')'); |
| FreeMem(lpMsgBuf); |
| end; |
| |
| begin |
| WriteLn('Inizio test ' + MY_LIBRARY_NAME); |
| WriteLn('---------------------------------------------------'); |
| WriteLn('Caricamento DLL e estrazione funzioni...'); |
| dll := LoadLibrary(MY_LIBRARY_NAME); |
| if (dll > 0) then |
| WriteLn(MY_LIBRARY_NAME + ' caricata con successo') |
| else begin |
| WriteLn('**********************************************'); |
| WriteLn('ERRORE: LoadLibrary("' + MY_LIBRARY_NAME + '") fallita!'); |
| ReportError('Dettagli'); |
| WriteLn('**********************************************'); |
| goto END_OF_TEST; |
| end; |
| // estrazione delle funzioni esportate dalla dll |
| IsError := 0; |
| @SPPSRVInit := GetProcAddress(dll, 'SPPSRVInit'); |
| if (Assigned(SPPSRVInit)) then |
| WriteLn('SPPSRVInit caricata con successo') |
| else begin |
| WriteLn('**************************************************************'); |
| WriteLn('ERRORE: GetProcAddress(dll, "SPPSRVInit") fallita!'); |
| WriteLn('**************************************************************'); |
| IsError := 1; |
| end; |
| @SPPSRVVersion := GetProcAddress(dll, 'SPPSRVVersion'); |
| if (Assigned(SPPSRVVersion)) then |
| WriteLn('SPPSRVVersion caricata con successo') |
| else begin |
| WriteLn('**************************************************************'); |
| WriteLn('ERRORE: GetProcAddress(dll, "SPPSRVVersion") fallita!'); |
| WriteLn('**************************************************************'); |
| IsError := 1; |
| end; |
| @SPPSRVExit := GetProcAddress(dll, 'SPPSRVExit'); |
| if (Assigned(SPPSRVExit)) then |
| WriteLn('SPPSRVExit caricata con successo') |
| else begin |
| WriteLn('**************************************************************'); |
| WriteLn('ERRORE: GetProcAddress(dll, "SPPSRVExit") fallita!'); |
| WriteLn('**************************************************************'); |
| IsError := 1; |
| end; |
| @SPPSRVComuniConnect := GetProcAddress(dll, 'SPPSRVComuniConnect'); |
| if (Assigned(SPPSRVComuniConnect)) then |
| WriteLn('SPPSRVComuniConnect caricata con successo') |
| else begin |
| WriteLn('**************************************************************'); |
| WriteLn('ERRORE: GetProcAddress(dll, "SPPSRVComuniConnect") fallita!'); |
| WriteLn('**************************************************************'); |
| IsError := 1; |
| end; |
| @SPPSRVDittaConnect := GetProcAddress(dll, 'SPPSRVDittaConnect'); |
| if (Assigned(SPPSRVDittaConnect)) then |
| WriteLn('SPPSRVDittaConnect caricata con successo') |
| else begin |
| WriteLn('**************************************************************'); |
| WriteLn('ERRORE: GetProcAddress(dll, "SPPSRVDittaConnect") fallita!'); |
| WriteLn('**************************************************************'); |
| IsError := 1; |
| end; |
| @SPPSRVSetEsercizio := GetProcAddress(dll, 'SPPSRVSetEsercizio'); |
| if (Assigned(SPPSRVSetEsercizio)) then |
| WriteLn('SPPSRVSetEsercizio caricata con successo') |
| else begin |
| WriteLn('**************************************************************'); |
| WriteLn('ERRORE: GetProcAddress(dll, "SPPSRVSetEsercizio") fallita!'); |
| WriteLn('**************************************************************'); |
| IsError := 1; |
| end; |
| @SPPSRVSetUtente := GetProcAddress(dll, 'SPPSRVSetUtente'); |
| if (Assigned(SPPSRVSetUtente)) then |
| WriteLn('SPPSRVSetUtente caricata con successo') |
| else begin |
| WriteLn('**************************************************************'); |
| WriteLn('ERRORE: GetProcAddress(dll,\"" << "SPPSRVSetUtente" << "\") fallita!'); |
| WriteLn('**************************************************************'); |
| IsError := 1; |
| end; |
| @SPPSRVSetTodayDate := GetProcAddress(dll, 'SPPSRVSetTodayDate'); |
| if (Assigned(SPPSRVSetTodayDate)) then |
| WriteLn('SPPSRVSetTodayDate caricata con successo') |
| else begin |
| WriteLn('**************************************************************'); |
| WriteLn('ERRORE: GetProcAddress(dll,\"" << "SPPSRVSetTodayDate" << "\") fallita!'); |
| WriteLn('**************************************************************'); |
| IsError := 1; |
| end; |
| @SPPSRVSetEuro := GetProcAddress(dll, 'SPPSRVSetEuro'); |
| if (Assigned(SPPSRVSetEuro)) then |
| WriteLn('SPPSRVSetEuro caricata con successo') |
| else begin |
| WriteLn('**************************************************************'); |
| WriteLn('ERRORE: GetProcAddress(dll, "SPPSRVSetEuro") fallita!'); |
| WriteLn('**************************************************************'); |
| IsError := 1; |
| end; |
| @SPPSRVCalcolaScadenze := GetProcAddress(dll, 'SPPSRVCalcolaScadenze'); |
| if (Assigned(SPPSRVCalcolaScadenze)) then |
| WriteLn('SPPSRVCalcolaScadenze caricata con successo') |
| else begin |
| WriteLn('**************************************************************'); |
| WriteLn('ERRORE: GetProcAddress(dll, "SPPSRVCalcolaScadenze") fallita!'); |
| WriteLn('**************************************************************'); |
| IsError := 1; |
| end; |
| @SPPSRVReadScadenza := GetProcAddress(dll, 'SPPSRVReadScadenza'); |
| if (Assigned(SPPSRVReadScadenza)) then |
| WriteLn('SPPSRVReadScadenza caricata con successo') |
| else begin |
| WriteLn('**************************************************************'); |
| WriteLn('ERRORE: GetProcAddress(dll, "SPPSRVReadScadenza") fallita!'); |
| WriteLn('**************************************************************'); |
| IsError := 1; |
| end; |
| if (IsError = 1) then goto END_OF_TEST; |
| |
| WriteLn('Test calcolo e lettura scadenze...'); |
| // inizializzazione della DLL |
| rc := SPPSRVInit(GetDesktopWindow()); |
| WriteLn('SPPSRVInit ha tornato: ' + IntToStr(rc)); |
| if (rc <> SPPSRV_SUCCESS) then goto END_OF_TEST; |
| // numero di versione della dll |
| rc := SPPSRVVersion(); |
| WriteLn('SPPSRVVersion ha tornato: ' + IntToStr(rc)); |
| // connessione al database dei dati comuni e dei dati ditta |
| {$ifdef STARTSUITE} |
| // versione per SIGLA StartSuite (archivi dui tipo DBF) |
| rc := SPPSRVComuniConnect('C:\SIGLAPP\PROVGEN'); |
| WriteLn('SPPSRVComuniConnect ha tornato: ' + IntToStr(rc)); |
| if (rc <> SPPSRV_SUCCESS) then goto FINE; |
| rc := SPPSRVDittaConnect('C:\SIGLAPP\PROVDIT'); |
| WriteLn('SPPSRVDittaConnect ha tornato: ' + IntToStr(rc)); |
| if (rc <> SPPSRV_SUCCESS) then goto FINE; |
| {$else} |
| // versione per SIGLA (accesso ai dati via ODBC) |
| rc := SPPSRVComuniConnect('DSN=pgSPPGEN;UID=sigla;PWD=sigla'); |
| WriteLn('SPPSRVComuniConnect ha tornato: ' + IntToStr(rc)); |
| if (rc <> SPPSRV_SUCCESS) then goto FINE; |
| rc := SPPSRVDittaConnect('DSN=pgSPPDIT;UID=sigla;PWD=sigla'); |
| WriteLn('SPPSRVDittaConnect ha tornato: ' + IntToStr(rc)); |
| if (rc <> SPPSRV_SUCCESS) then goto FINE; |
| {$endif} |
| // impostazione dell'esercizio di lavoro |
| rc := SPPSRVSetEsercizio(pChar(FormatDateTime('yyyy', Date))); |
| WriteLn('SPPSRVSetEsercizio ha tornato: ' + IntToStr(rc)); |
| // impostazione dell'utente |
| rc := SPPSRVSetUtente('SIGLA '); |
| WriteLn('SPPSRVSetUtente ha tornato: ' + IntToStr(rc)); |
| // impostazione della data |
| rc := SPPSRVSetTodayDate(pChar(FormatDateTime('yyyymmdd', Date))); |
| WriteLn('SPPSRVSetTodayDate ha tornato: ' + IntToStr(rc)); |
| // impostazione dell'euro come valuta di lavoro |
| rc := SPPSRVSetEuro(TRUE); |
| WriteLn('SPPSrvSetEuro ha tornato: ' + IntToStr(rc)); |
| |
| // calcolo delle scadenze |
| WriteLn('Calcolo della scadenza...'); |
| // int DLLCALL SPPSRVCalcolaScadenze(LPSTR tipopag,BOOL IsValuta,double TRata, |
| // LPSTR DataFattura,LPSTR datadecpag, |
| // LPSTR ggpart,LPSTR msalto1,LPSTR msalto2,LPSTR ggsalto); |
| // parametri |
| DataFattura := '20121113'; |
| datadecpag := '201211300; |
| ggpart := ''; |
| msalto1 := ''; |
| msalto2 := ''; |
| ggsalto := ''; |
| TRata := 1000.0; |
| IsValuta := FALSE; |
| tipopag := 'RB02'; |
| rc := SPPSRVCalcolaScadenze(pChar(tipopag), IsValuta, TRata, pChar(DataFattura),pChar(datadecpag), |
| pChar(ggpart), pChar(msalto1), pChar(msalto2), pChar(ggsalto)); |
| WriteLn('SPPSRVCalcolaScadenze ha tornato: ' + IntToStr(rc)); |
| // lettura delle scadenze |
| numscad := rc; |
| importo := 0; |
| if (numscad > 0) then begin |
| for j := 1 to numscad do begin |
| rc := SPPSRVReadScadenza(j, @importo, dt1, tipo); |
| if (rc = 0) then |
| WriteLn(IntToStr(j) + ') Data: ' + Copy(dt1, 7, 2) + '/' + Copy(dt1, 5, 2) + |
| '/' + Copy(dt1, 1, 4) + ' Importo: ' + FloatToStr(importo)) |
| else |
| WriteLn(IntToStr(j) + ') SPPSRVReadScadenza ha tornato: ' + IntToStr(rc)); |
| end; |
| end; |
| |
| FINE: |
| // resetta la DLL |
| rc := SPPSRVExit(); |
| WriteLn('SPPSRVExit ha tornato: ' + IntToStr(rc)); |
| |
| END_OF_TEST: |
| if (dll > 0 ) then FreeLibrary(dll); |
| WriteLn('---------------------------------------------------'); |
| WriteLn('Fine test ' + MY_LIBRARY_NAME); |
| |
| WriteLn('... premere <INVIO> per terminare...'); |
| ReadLn; |
| end. |