Witam serdecznie,
chciałem zapytać czy są jakieś ograniczenia przy przekazywaniu parametru do funkcji który ma być zmodyfikowany, chodzi o zastosowanie w bibliotekach dll, wyczytałem że przekazywanie łańcuchów tekstowych do funkcji i z funkcji najlepiej opierać o typ PChar, stosując się do tej wytycznej testowo mam taki kod:
function ftest1(var tt:PCar):integer;
begin
...
..
.
end;
robiąc tak:
function ftest1(var tt:PCar):integer;
begin
tt:=PChar(s); // gdzie s to s:string;
result:=0;
end;
kompilator zwraca komunikat blędu E2089 Invalid typecast.
Podejście kolejne...
function ftest1(var tt:PCar):integer;
begin
StrPCopy(tt,s) // gdzie s to s:string;
result:=0;
end;
Tu biblioteka się kompiluje bez problemu, lecz wywołanie tej funkcji kończy się błędem...
Project Project1.exe raised exception class EAccesViolation with message 'Access violation at address 00388D99 in module test.dll. Write of address 0044F143'.
Czy jest jakaś sensowna metoda zwracania parametrów z funkcji w bibliotekach dll, dodam że zwracanie przez nazwę funkcji odpada bo zarezetrwowane jest na kody błędów.
Bardzo proszę o podpowiedź jak rozwiązać ten problem.