Ho deciso di aggiornare anch'io ad una release più recente e purtroppo mi sono imbattuto nello stesso tipo di errore.
IsBoolean viene usato nella classe di PDFWriter alla riga 1264...
'Normalize parameters
If (IsBoolean(dest)) Then dest = IIf(dest, "D", "F")
dest = Upper(dest)
If (dest = "") Then
If (name = "") Then
name = "doc.pdf"
dest = "I"
Else
dest = "F"
End If
End If
Come possiamo risolvere il problema? Secondo voi devo riportare l'errore dovuto all'aggiornamento anche nel post di PDFWriter?
Credo che la soluzione sia di scrivere una Function che sostituisca True or False, in sostituzione di IsBoolean...
Anzi... la chiamiamo proprio IsBoolean, così non debbiamo cambiare neppure il testo... :D
Mi ha dato il medesimo errore anche con IsString e IsObject.
Ho provato a risolvere scrivendo una funzione privata nella Classe di PDFWriter:
Private Function IsBoolean($condizione as Variant) as Boolean
If TypeOf($condizione) = gb.Boolean Then
Return True
Else
Return False
Endif
End
Ma mi restituisce comunque l'errore Type Mismatch: Wanted String, Got Boolean Instead.
PS. "IsBoolean" si trova anche alle righe 914, 1023, 1057, 1092, (1264) 4132, 4253, 4289, 4326...
Ho risolto le mancanze di PDFWriter, però per le funzioni non ho potuto utilizzare i nomi ISBOOLEAN, ISSTRING, ecc. perché nonostante non vengano più usati come funzioni, Gambas3 li associa ancora ancora alle vecchie funzioni (quindi restituisce errore), come se fossero rimasti "nomi protetti".
Quindi al posto di ISBOOLEAN, ISSTRING, ecc. ho dovuto usare dei nomi personalizzati tipo "myBOOLEAN", "mySTRING", ecc.
Private Function myBoolean($condizione as Variant) as Boolean
If TypeOf($condizione) = gb.Boolean Then
Return True
Else
Return False
Endif
End
In questo modo PDFWriter torna a funzionare... Nello speficio ho sostituito ISBOOLEAN, ISSTRING, ISOBJECT ed ISINTEGER.
Non mi pare ce ne siano altri... Ma se voi dovesse evidenziarne altri postateli così da evitare altri futuri errori.
Io le ho inserite direttamente nel codice della classe PDFWriter... e mi funziona perfettamente.
'------------- Funzioni Sostitutive di IS.... -------------
Private Function myBooleano($condizione As Variant) As Boolean
If TypeOf($condizione) = gb.Boolean Then
Return True
Else
Return False
Endif
End
Private Function myInteger($condizione As Variant) As Boolean
If TypeOf($condizione) = gb.Integer Then
Return True
Else
Return False
Endif
End
Private Function myStringa($condizione As Variant) As Boolean
If TypeOf($condizione) = gb.String Then
Return True
Else
Return False
Endif
End
Private Function myObject($condizione As Variant) As Boolean
If TypeOf($condizione) = gb.Object Then
Return True
Else
Return False
Endif
End
Poi, nella classe di PDFWriter (magari prima fatti una copia di backup) devi sostituire (aiutati con FIND/REPLACE, sotto in menu STRUMENTI) tutti i vari:
'IsBoolean' con 'myBooleano',
'IsInteger' con 'myInteger',
'IsString' con 'myStringa',
'IsObject' con 'myObject'.
;)
Andrea, se vuoi ti posso postare la mia PDFWriter... ma ho fatto delle modifiche in altre parti del codice e non so se poi ti provocherebbe problemi inaspettati da altre parti.