![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Объясните разницу.. [D7, XP, 2003]
prodex © (2008-07-03 07:27:00)var
s : pchar;
a : array of char;
begin
...
Какая разница между
MemoryStream.ReadBuffer(s,10); и
MemoryStream.ReadBuffer(s[0],10);
Второй вариант работает первый нет...
Юрий Зотов (2008-07-03 09:18:00) [1]> prodex (03.07.08 08:04) [2]
S - это переменная типа "указатель на однобайтовый символ" (PChar). Ее длина - 4 байта и содержит она адрес буфера (если, конечно, этот буфер был выделен, иначе она содержит мусор).
Ясно, что попытка записи/чтения 10 байт в/из 4-байтную переменную - не самая лучшая идея.
Anatoly Podgoretsky (2008-07-03 08:32:00) [2]> prodex (03.07.2008 8:04:02) [2]
Именно так, именно адрес, а не сам буфер.
Это по сути S и S^
prodex (2008-07-03 08:04:00) [3]т.е. в первом случае в переменной (по адресу) S находится адрес буфера?
Anatoly Podgoretsky (2008-07-03 07:38:00) [4]> prodex (03.07.2008 7:27:00) [0]
В первом случае ты пишешь в переменную S, а во втором в буфер выделеный и чей адрес находится в S