![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
почему изменяется буфер у процедуры blockwrite [D7, WinXP]
depresnjak © (2004-07-13 08:19:00)я использую процедуру blockwrite, после записи переменная буфера, типа pchar увеличивается на 3 байта, с чем это может быть связано?
ASMiD (2004-07-13 14:25:00) [21]Так я это и имел ввиду
Тимохов (2004-07-13 14:23:00) [22]
> ASMiD (13.07.04 14:21) [15]
да все понятно - в первый раз 0 найден в одном месте (совсем не в строке), во второй раз - в другом.
отседова и раз-ты разные.
ASMiD (2004-07-13 14:21:00) [23]В PChar строка ограничена #0
А как будет работать
> length(s);
я не очень понимаю
depresnjak (2004-07-13 14:19:00) [24]то есть при инициализации надо так:
getmem(s,n+1);
ZeroMemory(s,n+1);
for j:=0 to n-1 do
s[j]:=chr(random(30)+190);
Тимохов (2004-07-13 14:17:00) [25]все потому, что в конце s у вас #0 нет.
Sandman25 (2004-07-13 14:17:00) [26]PChar должен заканчивать символом с кодом 0.
S[N-1] := #0
depresnjak (2004-07-13 14:15:00) [27]да кстати она локально объявлена
depresnjak (2004-07-13 14:14:00) [28]var s:pchar;
Тимохов (2004-07-13 14:13:00) [29]что такое s?
depresnjak (2004-07-13 14:07:00) [30]getmem(s,n);
ZeroMemory(s,n);
for j:=0 to n-1 do
s[j]:=chr(random(30)+190);
seek(f,0);
x:=length(s);
showmessage(inttostr(x));{10240}
BlockWrite(f,s^,x,writedata);
x:=length(s);
showmessage(inttostr(x));{10243}
ASMiD (2004-07-13 14:06:00) [31]Код в студию!
depresnjak (2004-07-13 14:02:00) [32]Я извиняюсь что первый раз не правильно написал
Тимохов (2004-07-13 14:02:00) [33]
> В чём прикол.
в отсутствии твоего кода.
depresnjak (2004-07-13 14:00:00) [34]Я заполняю переменную p буквами.
Затем смотрю Length(p) 10240.
Делаю blockwrite.
После опять смотрю Length(p).
И оказывается уже 10243.
В чём прикол.
(и не говорите, что мол "подрастёш поймёш")
Sha (2004-07-13 10:36:00) [35]> depresnjak (13.07.04 08:19)
Не верю.
После BlockWrite может измениться только значение переменной,
в которой возвращается количество реально переданных блоков.
Digitman (2004-07-13 08:35:00) [36]
> переменная буфера, типа pchar увеличивается на 3 байта
это как ?
sizeof(PChar) в win32 всю жизнь был и останется равным 4, с какого перепугу sizeof(PChar) вдруг станет 4 + 3 = 7 ?
KSergey (2004-07-13 08:25:00) [37]Код - секретный?