Wiem że jest mnóstwo przykładów do tego ale nie rozumem czemu u mnie nie działają.
Otóż mam w dll taką procedurkę:
procedure GetImie(id: integer; imie : PChar); stdcall;
var s:string;
begin
s:= JakasFunkcja(id); //tutaj w s mam już moje imie
StrCopy(imie, Pchar(s)); //do zmiennej imie kopiujemy to co jest w s, czyli imie
end;
żeby odczytać tę zmienną w Delphi, używam zmiennej imie : array[0..99999] of Char;
i teraz próbuję odczytać to imię po stronie C#
[DllImport(ApiDllName, CharSet = CharSet.Ansi)]
public static extern void GetImie(int Id, [MarshalAs(UnmanagedType.LPStr)] string imie);
..............
string simie = ""; // w ten sposób program się zamyka z błędem
string simie = new string(' ', 99999);// w ten sposób nie ma błędu ale w textboxie są same spacje, czyli nic się nie zwróciło z dll
GetImie(1, simie);
textBox1.AppendText(simie.ToString() + "\r\n");
niech mi ktoś wytłumaczy co robię źle, że te wszystkie przykłady z Internetów u mnie nie działają?