Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 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.015 c
14-1132824008
Сержо
2005-11-24 12:20
2005.12.18
JavaScript: Перенос опций из одного select а в другой


2-1133273255
бедный студент
2005-11-29 17:07
2005.12.18
шаг цикла


4-1129391237
Tristania
2005-10-15 19:47
2005.12.18
Работа с винчестером напрямую


3-1130770669
DancerMan
2005-10-31 17:57
2005.12.18
Ошибка при подключении к базе FireBird


1-1132817455
SergeyG
2005-11-24 10:30
2005.12.18
вопрос по печати изображения





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский