Форум: "Основная";
Текущий архив: 2005.12.18;
Скачать: [xml.tar.bz2];
ВнизЗапись через BlockWtite Найти похожие ветки
← →
Separator © (2005-11-24 06:58) [0]
var
F: file;
Temp: PChar;
Len: Cardinal;
begin
Assign(F, FileName);
Rewrite(F);
Temp:= CreateDump;
Len:= Length(Temp);
BlockWrite(F, Temp[0], Len);
FreeMemory(Temp);
Close(F)
end;
В тесте Len = 18
В полученном файле кроме 18 байт, еще куча какой-то фигни записалось
← →
sniknik © (2005-11-24 07:20) [1]почитай про Rewrite в хелпе
можно например так (изврат конечно, но размер должен быть правильным)var
F: file;
Temp: PChar;
begin
Temp:= CreateDump;
try
Assign(F, FileName);
Rewrite(F, Length(Temp));
BlockWrite(F, Temp[0], 1);
Close(F)
finally
FreeMemory(Temp);
end;
end;
← →
Separator © (2005-11-24 07:29) [2]да меня больше интересует вопрос, почему так происходит
← →
sniknik © (2005-11-24 07:35) [3]в хелпе по Rewrite написано
← →
Separator © (2005-11-24 07:42) [4]ладно, понятно, мнеьше 128 не хочет записывать. Ну а как тогда мне быть?
← →
Separator © (2005-11-24 07:59) [5]Получилось:
var
F: file of byte;
Temp: PChar;
Len: Cardinal;
begin
Result:= False;
Temp:= CreateDump;
Len:= Length(Temp);
try
AssignFile(F, FileName);
Rewrite(F);
BlockWrite(F, Temp[0], Len);
CloseFile(F)
finally
FreeMemory(Temp)
end;
Result:= True
end;
Только все-таки как записать не типизированный файл размером меньше 128байт?
← →
MBo © (2005-11-24 08:17) [6]>Separator
Ну ты всё же вчитайся в хелп насчет второго параметра ;)
← →
Separator © (2005-11-24 08:27) [7]выставлял rewrite(F, Len), таже фигня
← →
Separator © (2005-11-24 08:29) [8]
var
F: file;// of byte;
Temp: PChar;
begin
Result:= False;
Temp:= CreateDump;
try
AssignFile(F, FileName);
Rewrite(F, Length(Temp));
BlockWrite(F, Temp[0], Length(Temp));
CloseFile(F);
Result:= True
finally
FreeMemory(Temp)
end;
end;
В файл все-рано лишнее записывается
← →
MBo © (2005-11-24 08:30) [9]1 поставь
← →
Separator © (2005-11-24 08:56) [10]а почему не хочет работать с Rewrite(F, Length(Temp));? Или там только 2^n или 1 можно поставить?
← →
MBo © (2005-11-24 09:04) [11]Почему же не хочет? Очень даже хочет.
Плавно переходим к чтению хелпа по BlockWrite
← →
Separator © (2005-11-24 09:06) [12]Объясните подробно, что значит второй параметр в rewrite?
Я так понял это размер буфера для записи в файл. У меня записывается 37 байт, RecSize ставлю в 2, записалось лишних байт еще 37
← →
Separator © (2005-11-24 09:19) [13]так понятно, пишет Count*RecSize байт, а можно пример, когда это реально необходимо?
← →
Separator © (2005-11-24 09:22) [14]стоп, начинаю немного понимать, таким макаром можно записывать каке либо структуризированнае массивы
← →
Separator © (2005-11-24 09:32) [15]Во еще вопрос, как грамотней или оптимальней будет работать с большими и маленькими(пару сотен байт) объемами:
Rewrite(F, Length(Temp));
BlockWrite(F, Temp[0], 1);
или так
Rewrite(F, 1);
BlockWrite(F, Temp[0], Length(Temp));
Я склоняюсь к первому методу для маленьких объемов, и какой размер RecSize оптимальней выставлять для больших объемов данных. И можно ли менять RecSize между отдельными записями, т.е. RecSize = 10, выполнили Write, потом установили RecSize в 3 и снова Write?
Страницы: 1 вся ветка
Форум: "Основная";
Текущий архив: 2005.12.18;
Скачать: [xml.tar.bz2];
Память: 0.48 MB
Время: 0.012 c