Delphi - string'i w DL

0

Przekazywanie pomiędzy DLL a programem, bez użycia ShareMem musi się odbywać poprzez PChar lub ShortString.
A co jeśli przekażę PChar a w środku skonwertuje sobie to do String i dalsze przetwarzanie będzie na tym typie string ? Czy to będzie bezpieczne ?
DLLka jedynie zapisze coś do pliku jako wynik.

I czy PChar i const char* to ekwiwalenty ? Znaczy czy będzie to uniwersalne ?
Czy może lepiej użyć PAnsiString ? (W zasadzie potrzebuje tylko zakres ASCII)

0

Taguj wątki, bo nikt nie będzie się domyślał o jaki język Ci chodzi; Po nicku jedynie można skapować się...

DLL Delphi napisał(a)

Przekazywanie pomiędzy DLL a programem, bez użycia ShareMem musi się odbywać poprzez PChar lub ShortString.

No tak, ale czemu nie użyjesz ShareMem..?

DLL Delphi napisał(a)

A co jeśli przekażę PChar a w środku skonwertuje sobie to do String i dalsze przetwarzanie będzie na tym typie string ? Czy to będzie bezpieczne ?
DLLka jedynie zapisze coś do pliku jako wynik.

Jeżeli skonwertujesz łańcuch z PChar do String wewnątrz procedury / funkcji w bibliotece, to raczej nie będzie to miało znaczenia; Jeżeli miałbyć odsyłać zmodyfikowany łańcuch z powrotem do aplikacji to bez modułu ShareMem musiałbyś konwertować go do PChar i wysłać, zapisać do parametru czy zwrócić przez rezultat funkcji;

Jeżeli chcesz kombinować to kombinuj, ale zawsze możesz także w programie korzystać z PChar i nie będziesz się musisał pocić nad konwertowaniem; Z resztą jeżeli nie będziesz zwracał łańcucha do programu tylko zapisywał go do pliku, to nawet wewnątrz procedury w bibliotece nie będziesz musisał go konwertować na String, tylko zapiszesz go albo bezpośrednio, albo rzutując na typ String (jeżeli jakieś metody będą posiadały argumenty typu String);

0

No tak, ale czemu nie użyjesz ShareMem..?

Bo cały program jest o bagatela, 5x wolniejszy? :P

Tak, stringi w środku działają (z tego co się orientuję), ja zawszę tak robię że tylko konwertuje na PChary na wejściu/wyjściu.

A tak poza tym - nie mogłeś tego sam sprawdzić??? Ja wiem, że ty wolisz żebyśmy my się pomęczyli ale naprawdę, skoro masz pytanie, to najpierw je spróbuj sam rozwiązać.

0

Nie chodzi o żadne wydajności. Widocznie małą macie wyobraznie ; D
Chodzi np zebym w QT mogł użyc owej DLLki.
Stad moje pytanie dodatkowe, jak się ma const char* do PChar

1 użytkowników online, w tym zalogowanych: 0, gości: 1