DLL a WideString

vložil Radek Červinka 26. listopadu 2016 23:37

Myslím, že normální programátor používající DLL v Delphi obecně chápe, že předávat string jako parametr do DLL není možné bez použití berličky typu SimpleShareMem, která propojí memory manager v hlavní aplikaci s memory managerem v DLL. Což ovšem znemožňuje použití DLL z jiných jazyků a proto se musíme snížit na úroveň předávání přes PChar nebo PWideChar.

Ale, je tu jiná možnost. V Delphi existuje typ WideString. Normálně ho nepoužíváme, protože představuje výkonnostní penalizaci (např. není reference counted, alokaci zajišťuje COM alokátor atd). Ale právě druhá vlastnost zajišťuje, že je binárně kompatibilní s typem z COM BSTR, což vzhledem k tomu, že alokaci zajišťuje sdílený COM alokátor, umožňuje jednoduše použít tento typ pro předávání do DLL. Tento typ není dostupný na mobilních platformách.

Mimochodem, když se podíváte do system.pas, tak opravdu uvidíte, že se volá pro nový widestring SysAllocStringLen, ale v případě POSIX (tj. MAX OSX a doufám Linux) se to transformuje na normálně UnicodeString, tj. výchozí typ v unicode Delphi.


Nabízíme Delphi školení a konzultace na různá témata, primárně ve Vaší firmě.

Tagy: , ,

Delphi | Praxe

Komentování ukončeno

Naše nabídka

Partial English version.

MVP
Ing. Radek Červinka - Embarcadero MVP
profil na linkedin, Twitter:@delphicz

Nabízím placené poradenství a konzultace v oblasti programování a vývoje SW.
Dále nabízíme i vývoj speciálního software na zakázku.

Neváhejte nás kontaktovat (i ohledně reklamy nebo burzy práce).

Pokud chcete podpořit tento server libovolnou částkou, můžete použít PayPal. Moc děkuji.

Delphi Certified Developer

O Delphi.cz

Delphi je jediný moderní RAD nástroj podporující tvorbu nativních aplikací pro platformu Win32, Win64 , Mac OSX a na iPhone a Android (s výhledem na další platformy díky FireMonkey) na současném trhu (včetně Windows 8.1).

V současnosti je světová komunita přes dva miliónů vývojářů.

Delphi.cz je nezávislý portál pro uživatele Delphi. Portál není koncipován pro úplné začátečníky, i když i ti se zde nebudou nudit, ale spíše na programátory, kteří již něco znají a chtějí své znalosti dále rozvíjet a sledovat novinky.

Anketa

Poslední komentáře

Comment RSS