z helpa zrozumiałem tylko tyle że są to łancuchy kończące sie #0 :-) :-)
ale po kiego grzyba tak jest??
kazdy łańcuch znaków sie kończy #0??
i jak sie ewentualnie to wykorzystuje??? :| :|
Null-terminated strings;
- Rejestracja: dni
- Ostatnio: dni
- Postów: 33
- Rejestracja: dni
- Ostatnio: dni
- Lokalizacja: Poznań
Stringi używane zarówno w C++ jak i w samym Windowsie są właśnie tego typu. Jeśli chcesz przesłać string jako parametr funkcji WinAPI, to musi on być właśnie tego typu.
- Rejestracja: dni
- Ostatnio: dni
- Postów: 137
Inaczej mówiąc jak tworzysz sobie napis w pamięci dowolnej długości to gdzieś musisz zapisywać gdzie on się kończy.
Znane są dwie popularne metody:
string - wrzucasz w pierszy znak jego długość (dlatego kiedyś było ograniczenie 256 znaków)
NTS - oznaczasz koniec zerem, i o tym mowa.
Kris
- Rejestracja: dni
- Ostatnio: dni
Jeszcze takie uwagi. Z punktu widzenia więksości rozwiązań stringi są znacznie wydajniejsze. Pascalowe stringi mają ograniczenie do 255 znaków, co zaletą na pewno nie jest. AnsiString dostępne w Delphi (jak również w BCB, chociaż o ile pamiętam to jako klasa) są tak zbudowane, że teoretycznie możnaby je przekazywać spokojnie zamiast PChar (też są wskaźnikami). Nie jestem pewien jak jest zaimplementowana konwersja ich na PChar, ale help pisze o automatycznej konwersji, więc podejrzewam, że i tak znak końca (#0) jest umieszczany na końcu. Ale nie miałem czasu na testowanie tego.
- Rejestracja: dni
- Ostatnio: dni
podejrzewam, że i tak znak końca (#0) jest umieszczany na końcu.
Gdzies (nie pamietam gdzie) czytalem, ze tak jest. String ma doklejony na koncu #0 dla latwego rzutowania na Pchar.