Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2004.05.02;
Скачать: CL | DM;

Вниз

BlockWrite пишет всякую еренду   Найти похожие ветки 

 
{bas} ©   (2004-04-14 18:24) [0]

После выполненения BlockWrite в файл пишется кроме нужной информации еще какая-то лабуда. Помогите??

var
f : file;
Buffer : PChar;
begin
 AssignFile(f, "c:\tmp\log\"+FormatDateTime("yy-mm-dd_hhnnss.log",now));
 Rewrite(f);
 Buffer := PChar("fffffffffffffffffffffffffffffff");
 BlockWrite(f, Buffer^,10);
end;


 
metalfan ©   (2004-04-14 18:27) [1]

а где выделения памяти под buffer ?


 
Jack128 ©   (2004-04-14 18:30) [2]


> а где выделения памяти под buffer ?
По всей видимости человек считает, что вот этим

> Buffer := PChar("fffffffffffffffffffffffffffffff");
он выделел память под Buffer :-)

var
f : file;
Buffer : string;
begin
AssignFile(f, "c:\tmp\log\"+FormatDateTime("yy-mm-dd_hhnnss.log",now));
Rewrite(f);
SetLength(Buffer, 10)
BlockWrite(f, Buffer^,10);
end;


 
BlackTr   (2004-04-14 18:36) [3]

Читаем Help:
The entire block transferred occupies at most Count * RecSize bytes. RecSize is the record size specified when the file was opened (or 128 if the record size was unspecified).

Так и получается размер файла 1280.
А вот сделаем так:Rewrite(f,1);
И у нас что-нить получится :)


 
Плохиш   (2004-04-14 18:37) [4]

Rewrite(f,1);


 
{bas} ©   (2004-04-14 18:40) [5]

>>BlackTr   (14.04.04 18:36) [3]
>>Плохиш   (14.04.04 18:37) [4]
Спасибо, вредь буду аккуратнее читать хэлп

>>Jack128 ©   (14.04.04 18:30) [2]
>>metalfan ©   (14.04.04 18:27) [1]
А память не обязательно выделять....


 
VMcL ©   (2004-04-14 18:41) [6]

>>metalfan ©  (14.04.04 18:27) [1]
>>Jack128 ©  (14.04.04 18:30) [2]

Зря наехали. Память выделит компилятор для константой строки "fffffffffffffffffffffffffffffff". А он её только в PChar преобразовал. Правильный ответ [3]. Хотя код в [0], конечно, не очень грамотный.


 
{bas} ©   (2004-04-14 18:44) [7]

>>VMcL ©   (14.04.04 18:41) [6]
Это просто был тестовый код...


 
BlackTr   (2004-04-14 18:44) [8]

Я вообще для лога лучше обычный Writeln :)


 
Jack128 ©   (2004-04-14 18:50) [9]


> Зря наехали. Память выделит компилятор для константой строки
> "fffffffffffffffffffffffffffffff". А он её только в PChar
> преобразовал. Правильный ответ [3]. Хотя код в [0], конечно,
> не очень грамотный.
на счет rec size я забыл, но и ты не прав. константа на которую ссылкает храниться exe-шнике и считать в неё данные неудастся..


 
Jack128 ©   (2004-04-14 18:56) [10]


> константа на которую ссылкает
читать, как "константа на которую ссылается Buffer"


 
VMcL ©   (2004-04-14 19:04) [11]

>>Jack128 ©  (14.04.04 18:50) [9]

Ну так автор же в нее не пишет, а из нее читает и записывает в файл.


 
Jack128 ©   (2004-04-14 19:07) [12]

Хе, посыпаю голову пеплом..



Страницы: 1 вся ветка

Текущий архив: 2004.05.02;
Скачать: CL | DM;

Наверх




Память: 0.49 MB
Время: 0.059 c
8-1075711384
Thick
2004-02-02 11:43
2004.05.02
RGB


14-1081675876
rams
2004-04-11 13:31
2004.05.02
Turbo Pascal


6-1078339833
ser_ega
2004-03-03 21:50
2004.05.02
Как узнать подключен ли я к инету?


8-1075539841
kirilllius
2004-01-31 12:04
2004.05.02
Масштабирование изображения


1-1082015657
Курдль
2004-04-15 11:54
2004.05.02
Директивы компиллятора {$IF произвольная_константа = ..}