|
|||||||
|
|
|
![]() |
|
|
Strumenti |
|
|
#1 |
|
Junior Member
Iscritto dal: Oct 2004
Città: Fossano
Messaggi: 2
|
[VB6] Problema dll C
Ciao, ho un problema in vb6 (sp6) con l'utilizzo di una funzione di una dll C.
indicazione guida dll: int SPPSRVReadScadenza(int iNumeroScadenza,double *dImporto,LPSTR szData,LPSTR szTipo) Mia versione in vb ... ... Public Declare Function SPPSRVReadScadenza Lib "SPPSERV.DLL" (ByVal iNumeroScadenza As Integer, ByRef dImporto As Double, ByVal szData As String, ByVal szTipo As String) As Integer .... .... Dim dImporto As Double Dim szData As String * 9 Dim szTipo As String * 2 ..... ..... ns = SPPSRVCalcolaScadenze( ..... ) For j = 1 To ns szData = String$(9, vbNullChar) szTipo = String$(2, vbNullChar) h = SPPSRVReadScadenza(j, dImporto, szData, szTipo) <--- ERRORE di Windows: AppName: vb6.exe AppVer: 6.0.97.82 ModName: sppserv.dll ModVer: 0.0.0.0 Offset: 000481df .... .... Next STESSA COSA FATTA IN DELPHI (FUNZIONANTE) ... function SPPSRVReadScadenza(iNumeroScadenza: integer; var dImporto: double; szData,szTipo: LPSTR): integer; stdcall; external 'sppserv.dll'; ... procedure TForm1.Button1Click(Sender: TObject); var i, j, k: integer; importo: double; data, tipo: LPSTR; begin ... i := SPPSRVCalcolaScadenze('3', FALSE, 9000, '20040101', '20040101', '', '', '', ''); for j := 1 to i do begin data := StrAlloc(9); <--- se ometto queste righe da errore tipo := StrAlloc(2); <--- di access violation (delphi non inchioda l'ambiente) k := SPPSRVReadScadenza(j, importo, data, tipo); <---- FUNZIONA ShowMessage(Format('%s %s',[data, tipo])); end; .... end; end. In base a questo ho fatto moltissime prove guardando molti esempi su internet. Il mio dubbio è che vb non allochi le stringhe terminate dal NULL (stringhe standard C) come ha richiesto delphi. Qcuno ha qche idea o suggerimento??? Aiutooooo!!! Grazie a tutti. Ultima modifica di Gotar : 21-10-2004 alle 09:26. |
|
|
|
|
| Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 21:51.



















