Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

почему изменяется буфер у процедуры blockwrite [D7, WinXP]


Страницы:   1 2

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]

Код - секретный?


Страницы:   1 2

Наверх

Титульная страница Поиск, карта сайта Написать письмо