Главная страница
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.033 c
1-1081761086
Ш-К
2004-04-12 13:11
2004.05.02
String


14-1081735795
RealRascal
2004-04-12 06:09
2004.05.02
Открытое плавание


6-1078637445
Scorp2
2004-03-07 08:30
2004.05.02
Как узнать есть ли соединение с интернетом?


6-1078530063
teapot
2004-03-06 02:41
2004.05.02
как перенаправлять сетевой трафик на Делфи?


1-1081837076
BorisMor
2004-04-13 10:17
2004.05.02
OwnerData