Salut Denis,
je vois très bien ce que tu veux dire.
j'ai aussi rencontré plusieurs fois ce probleme qui est précisément si j'ai bien compris :
certaines fonctions win32 attendent un 0 (Null) si la chaine est vide.
ou un pointeur sur une chaine (Non Null) si elle n'est pas vide.
or en PB, si on transmet une chaine vide ( "" ), on ne transmet pas 0 mais bien un pointeur comme le prouve ce petit ex :
Code : Tout sélectionner
; chaine vide déjà allouée
a$ = ""
Debug @a$
; ou meme comme çà :
Debug @""
Or avec PB3.94 on pouvait transmettre un 0 (numeric) meme si l'argument d'une fonction était déclarée comme une chaine (string).
PB4 est plus strict de ce coté là. Ce qui a bien sûr ses bons cotés mais aussi son mauvais coté.
La seule solution que j'ai trouvé ressemble à çà :
Code : Tout sélectionner
Prototype.l FonctionGDIplusByPtr(referenceHdc.l, type.l, *frameRect.RectF, *description.p-unicode)
Prototype.l FonctionGDIplusByStr(referenceHdc.l, type.l, *frameRect.RectF, description.p-unicode)
Procedure.l FonctionGDIplus(referenceHdc.l, type.l, *frameRect.RectF, description.s)
If description
ProcedureReturn FonctionGDIplusByStr(referenceHdc, type, *frameRect, description)
Else
ProcedureReturn FonctionGDIplusByPtr(referenceHdc, type, *frameRect, #Null)
EndIf
EndProcedure