PC SOFT

FORUMS PROFESSIONNELS
WINDEVWEBDEV et WINDEV Mobile

Accueil → WINDEV 2024 → api et typage LPCSTR  a l'aide!!!!!!!!!!
api et typage LPCSTR a l'aide!!!!!!!!!!
Débuté par flavoie, 02 fév. 2006 18:17 - 6 réponses
Posté le 02 février 2006 - 18:17
J'ai a utiliser une dll qui me retourne un type LPCSTR (TYPAGE C)

LPSTR = 32-bit poniter to 0-terminated string of 8-bit ainsi charactere
LPCSTR = same as LPSTR but pointed to string cannot be modified

les gens du support me dise qu'il ont contourné le problème de la façon suivante en vb.
J'ai fais ceci en windev
newchaine est un chaîne =Remplace(API("SoftekBarcode.dll","stGetBarString",ii),Caract(0),"")
Info(newchaine,ChaîneRécupère(newchaine,crAdresseASCIIZ))

/// début réponse
Both of these functions return the address of an array of null terminated characters. There is a similar problem in VB when using the DLL, abd it’s fixed by passing the return value through the following function:

Function nullTrim(s As String) As String
' Trim the string to the null character
Dim n As Integer
n = InStr(s, Chr$(0))
If (n > 0) Then
nullTrim = Trim(Left(s, n - 1))
Else
nullTrim = Trim(s)
End If
End Function

So in VB you would call the DLL functions as follows:

strBarcode = nullTrim(stGetBarString(i))
///fin réponse
Posté le 02 février 2006 - 18:46
Salut,

Quelle est la question?

Mathieu
Posté le 02 février 2006 - 19:08
Comment faire fonctionner le retour de la fonction typer LPCSTR



EN VB ILS ONT FAIT CECI

Both of these functions return the address of an array of null terminated characters. There is a similar problem in VB when using the DLL, abd it’s fixed by passing the return value through the following function:

Function nullTrim(s As String) As String
' Trim the string to the null character
Dim n As Integer
n = InStr(s, Chr$(0))
If (n > 0) Then
nullTrim = Trim(Left(s, n - 1))
Else
nullTrim = Trim(s)
End If
End Function

So in VB you would call the DLL functions as follows:

strBarcode = nullTrim(stGetBarString(i))
Posté le 02 février 2006 - 20:22
la fonciton trim en vb éqiuvaut à sansespace() en wd et InStr équivaut à
position()
donc:
fonction nullTrim(s)
i est un entier
i = position(s,caract(0))
si i > 0 alors
s = sansespace(gauche(s,i-1))
sinon
s = sansespace(s)
fin

Mathieu
Posté le 02 février 2006 - 21:09
Cette fonction reviens a faire un remplace de caract(0) par rien

s=remplace(s,caract(0),"")

mais rien a faire avec ça. de toute façon le résultat de l'api est un numérique qui devrais pointer a une adresse mémoire. Il semble que cette adresse est terminer par un zéro.

Mon but est de pouvoir avoir le résultat d'un fonction qui est retourner en 32 bit pointer terminer pa 0 de chaine de caractère ainsi

voici ma dernier tentative et résultat avec la trave

newchaine1 est un chaine =API(SoftekBarcode.dll,stGetBarString,ii) 44028884
newchaine est un chaine =Remplace(NEWCHAINE1,Caract(0),") 44028884
newchaine2 est un chaine =ChaîneRécupère(newchaine1,crAdresseASCIIZ) =<EOT>

le résultat devrais être CC-247867
Posté le 03 février 2006 - 07:18
As-tu chargé la dll avec ChargeDLL() ?
Posté le 03 février 2006 - 16:05
Je ne l'avais pas fais

Merci beaucoup

ça marche maintenant! Youpiiiiii!


a+