Null-terminated strings;

0

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??? :| :|

0

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.

0

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

0

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.

0

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.

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