Вниз
Скачать: 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 вся ветка

Скачать: CL | DM;



Память: 0.47 MB
Время: 0.028 c
7-1078936426
HepB
2004-03-10 19:33
2004.05.02
Проблема с ini-файлом


1-1081950622
Moroz
2004-04-14 17:50
2004.05.02
Производительность алгоритма


7-1079437536
dik
2004-03-16 14:45
2004.05.02
Последовательный порт


3-1080835043
White
2004-04-01 19:57
2004.05.02
Как узнать кол-во записей в запросе програмно?


3-1081346919
Koba
2004-04-07 18:08
2004.05.02
Базы данных




   Наверх