Odczyt danych tekstowych z funkcji, wskaźniki

0

Dzień dobry.

Chciałbym nauczyć się wykorzystywać funkcje w bibliotece DLL. Z jej podpięciem nie mam problemu jednak z wykorzystaniem danych już jest. Pewna funkcja która mnie interesuje ma następujący opis dla funkcji:

Object Pascal:

function TBP_GetName(ABuf: PChar; ABufSize: Integer): Integer; stdcall;

Description:
This function is called in order to retrieve the name of the Plug-in.

Parameters:

ABuf
[out] Pointer to a string buffer that receives string specifying the name of the Plug-in. If ABuf is a null pointer, the function must return value is the required buffer size in bytes.

ABufSize
[in] Size of the string buffer identified by ABuf, in bytes. If the ABufSize is negative, the function must return value is the required buffer size in bytes.

Return values:
A positive value the number of bytes written in the ABuf or the required buffer size
Zero or a negative value function is not supported

I teraz moje pytanie jak wyciągnąć z tej funkcji nazwę? Funkcja ma za zadanie zwrócić wartość Integer co udaje mi się uzyskać i zwraca - długość ciągu (w bajtach) który chce przechwycić czyli "size of the string".** Abuf jest [out] i jak wydobyć ten Abuf z tej funkcji? ** rozumiem wskaźniki, i o co chodzi w Pchar ale jak to ugryźć? niestety krzaki mi się pojawiają.

Nawet na 4programmers jest napisane cytuję

Typ PChar używany jest do zastępowania zmiennej typu String tam, gdzie nie można przekazywać zmiennych o zmiennej długości (String jest teoretycznie nieograniczony, więc jego długość, a zatem ilość zajmowanej przez niego pamięci jest dynamicznie dostosowywana do potrzeb), czyli na przykład przy przekazywaniu danych pomiędzy różnymi modułami programu. Przez moduł rozumiem tutaj bibliotekę DLL czy główny program.

źródło: PChar

0

tutaj chyba coś znajdziesz http://www.hardforum.ru/t79228/

1
var
  Buf: string;
  Size: DWORD;
begin
  Size := 256;
  SetLength(Buf, Size + 1)
  Size := TBP_GetName(PChar(Buf), Size);
  Name := Copy(Buf, 1, Size);
0

Bardzo dziękuję za pomoc, pojawia się napis jednak w takiej postaci:

湁楴灳浡湓灩牥映牯吠敨䈠瑡!䌅汯牯इ汣瑂䙮捡౥潆瑮䌮慨

Zakrzaczyło :) jakiś pomysł?

0

Wygląda jakby był problem z kodowaniem.

0

Jakiś pomysł?

0

zamień string na AnsiString a PChar na PAnsiChar

0

Jupii , działa, dziękuję!

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