Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Размер файла [D2005, XP]


ГореПрограммер ©   (2006-10-27 10:24:00) 

Здравствуйте.
Есть у меня файл
1.ххх
в нем одна строчка
123

вот код:
var f:file;
   fs:variant;
begin
assignfile(f,'1.xxx');
reset(f);
showmessage(inttostr(filesize(f)));
closefile(f);

и отображается 0 ... а как узнать точный размер ?


Elen   (2006-10-27 11:03:00) [1]


> потому что в последующем необходимо будет сравнивать именно
> набор байт.

Может тогда лучше TFileStream?


ЮЮ   (2006-10-27 10:57:00) [2]

BlockRead, BlockWrite, SaveDialog example

var

 FromF, ToF: file;
 NumRead, NumWritten: Integer;
 Buf: array[1..2048] of Char;
begin
 if OpenDialog1.Execute then     { Display Open dialog box }
 begin
   AssignFile(FromF, OpenDialog1.FileName);
   Reset(FromF, 1); { Record size = 1 }
   if SaveDialog1.Execute then      { Display Save dialog box}
   begin
     AssignFile(ToF, SaveDialog1.FileName); { Open output file }

     Rewrite(ToF, 1); { Record size = 1 }
     Canvas.TextOut(10, 10, 'Copying ' + IntToStr(FileSize(FromF))
       + ' bytes...');
     repeat
       BlockRead(FromF, Buf, SizeOf(Buf), NumRead);
       BlockWrite(ToF, Buf, NumRead, NumWritten);
     until (NumRead = 0) or (NumWritten <> NumRead);
     CloseFile(FromF);
     CloseFile(ToF);
   end;
 end;
end;


ГореПрограммер   (2006-10-27 10:56:00) [3]

потому что в последующем необходимо будет сравнивать именно набор байт.


Elen   (2006-10-27 10:54:00) [4]


> ГореПрограммер

А чего б тебе не readln рулить, А?


ГореПрограммер   (2006-10-27 10:50:00) [5]

нет example в delphi 2005 я понял, что бред написал ,а каким тогда образом ?


ЮЮ   (2006-10-27 10:48:00) [6]

Как, интересно, в переменную f:byte ( один) намерен записать как минимум ТРИбайта, не уронив к чертям программу???  Открой Example в Helpe по blockread, в конце-концов.


ГореПрограммер   (2006-10-27 10:43:00) [7]

Все, спасибо большое.
Только вот второй вопрос:
есть переменная
f:byte;
в которую
blockread(ff,f,filesize(ff));
в файле, как я говорил одна запись "123"
как получить f в текстовом виде теперь ?


Anatoly Podgoretsky   (2006-10-27 10:35:00) [8]

У тебя наверно файл меньше 128 байт


Elen   (2006-10-27 10:32:00) [9]


> ГореПрограммер

reset(f,1); - и будет радость в байтиках ;)


viper03   (2006-10-27 10:32:00) [10]

var f: file of byte;


ЮЮ   (2006-10-27 10:28:00) [11]

В Help-е же все написано:
Note: If the file is declared as an untyped fileand you don’t specify a record size when you call Reset, then FileSize assumes a record size of 128. That is, FileSize gives the number of bytes divided by 128.

И в примере дано

f: file of Byte;


Наверх

Титульная страница Поиск, карта сайта Написать письмо