Το πρόβλημα με το να παίρνεις δεδομένα των οποίων το μέγεθος δεν το γνωρίζεις εξ’ αρχής μετατίθεται στο ποιός θα κάνει το allocation της μνήμης. Η VB ή το DLL; Αν το κάνει η VB θα μπορεί να το ελευθερώσει το DLL (γιατί κάποιος πρέπει να το ελευθερώσει).
Η πιο απλή και σίγουρη λύση είναι αυτός που δεσμεύει τη μνήμη, αυτός και να την ελευθερώνει. Αυτή η τακτική όμως δεν μπορεί να εφαρμοστεί – εύκολα – σε όλες τις περιπτώσεις.
Το άλλο πρόβλημα με τα strings είναι ότι κάποιοι μπορεί να χρησιμοποιούν ansi strings και άλλοι unicode. Στα windows dlls αυτά ξεχωρίζουν από την ονομασία της function που εξάγει το dll. Συνήθως είναι της μορφής functionA (για την ansi version) ή functionW (για την unicode version). Στη δεύτερη περίπτωση μπορεί να χρησιμοποιηθεί το string από την vb όπως είναι, ενώ στην πρώτη περίπτωση πρέπει να γίνει μετατροπή από ansi σε unicode (ή το αντίστοφο). Continue reading