łańcuch tekstowy w rekordzie w DLL

0

mam w bibliotece DLL procedure która za parametr przyjmuje wskazanie do rekordu:

procedure ShowWizard(AResult: PWizardResult);stdcall;

deklaracja rekordu:

PWizardResult=^TWizardResult;
TWizardResult=record
  Title: string;
  MinPrice: WORD;
end;

no i problem jest z polem Title :(

po przypisaniu do tego pola wartości (w bibliotece dll):

AResult^.Title := 'test';

następuje EInvalidPointer ;( ;( ;(

jak dam zamist string - PChar to jest AccessViolation. No i nie wiem jak to zrobić żeby przypisać w rekordzie do zmiennej łańcuch tekstowy :(

0

Użyj PChara, ale PChar to jest po prostu wskaźnik, więc wcześniej przydziel pamięć, np:

var s:string;
     p:pchar;
begin
 s:='...';
 GetMem(p, Length(s)+1);
 StrPCopy(p,s);
 // ...
 FreeMem(p);
end;

Powinno działać :)

Chociaż tutaj (chyba) title nie będzie zbyt długie, więc możesz zamiast string użyć po prostu np. string[80].

0

Dzięki Paweł [browar] [browar] [browar] [browar]
działa jak nalezy!

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