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

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

Функция FileSize [D7, XP]


Roman88 ©   (2009-04-03 09:44:00) 

Здравствуйте. Пытаюсь получить размер файла с помощью функции FileSize, но она возвращает не верное число. Подскажите что я не так делаю, вот пример кода:

procedure TForm1.Button1Click(Sender: TObject);
var
 f : TextFile;
begin
 AssignFile(f, 'C:\1.xls');
 Reset(f);
 ShowMessage('размер = ' + IntToStr(FileSize(f)));
end;

Функция возвращает 3 байта, в свойствах файла 410 байт. Подскажите, что делаю не так.


Palladin   (2009-04-03 10:59:00) [1]

Не царское это дело. Справку читать. Пусть холопы читают.


Плохиш   (2009-04-03 10:45:00) [2]


> Roman88   (03.04.09 09:56) [3]
>
>
> > потому что 410/128~3
>
>
> А это что за математика такая?
>

В справке всё расписано.


Roman88   (2009-04-03 10:25:00) [3]


> Почему тогда .xls?


я как пример написал, честно - не знал что формат файла имеет значение, простите чайник я ((


> brother ©   (03.04.09 10:20) [11]


Спасибо


brother   (2009-04-03 10:20:00) [4]

из справки:
procedure TForm1.Button1Click(Sender: TObject);

var
  f: file of Byte;
  size: Longint;
  S: string;
  y: Integer;
begin
 if OpenDialog1.Execute then
 begin
   AssignFile(f, OpenDialog1.FileName);
   Reset(f);
   try
     size := FileSize(f);
     S := 'File size in bytes: ' + IntToStr(size);
     y := 10;
     Canvas.TextOut(5, y, S);
     y := y + Canvas.TextHeight(S) + 5;
     S := 'Seeking halfway into file...';
     Canvas.TextOut(5, y, S);

     y := y + Canvas.TextHeight(S) + 5;
     Seek(f, size div 2);
     S := 'Position is now ' + IntToStr(FilePos(f));
     Canvas.TextOut(5, y, S);
   finally
     CloseFile(f);
   end;
 end;
end;

а у тебя:

> var
> f : TextFile;


Anatoly Podgoretsky   (2009-04-03 10:16:00) [5]

Gauge?
Почему тогда .xls?


Roman88   (2009-04-03 10:13:00) [6]


> Штобы я так жил! на 3 порядка... :)))


Если поможете, я помолюсь за это))


Ega23   (2009-04-03 10:09:00) [7]


> ну ошибся я, 410 КБ. 419840 байт


Штобы я так жил! на 3 порядка... :)))


Roman88   (2009-04-03 10:07:00) [8]


> Используй FindFirst, кроме случаев когда необходимо работать
> с записями, а какие могут быть записи у текстового файла.
>  Ну и про бессмысленность этого для Экселя тебе уже сказали.
>
>
> Что за задачу решаешь?


Обработка строк CSV файлов. Размер хотел получить, что бы Gauge на форму поставить, для отображения прогресса.


Roman88   (2009-04-03 10:05:00) [9]


> Что-то ты братан брешешь. BIFF-8 как минимум имеет заголовок
> (512 байт), FAT (возможно и mini-FAT). Все блоки, ЕМНИП,
>  по 512 байт идут.


ну ошибся я, 410 КБ. 419840 байт


Anatoly Podgoretsky   (2009-04-03 10:03:00) [10]

Используй FindFirst, кроме случаев когда необходимо работать с записями, а какие могут быть записи у текстового файла. Ну и про бессмысленность этого для Экселя тебе уже сказали.

Что за задачу решаешь?


Ega23   (2009-04-03 09:58:00) [11]


> в свойствах файла 410 байт


Что-то ты братан брешешь. BIFF-8 как минимум имеет заголовок (512 байт), FAT (возможно и mini-FAT). Все блоки, ЕМНИП, по 512 байт идут.


Roman88   (2009-04-03 09:56:00) [12]


> потому что 410/128~3


А это что за математика такая?


> а какого хрена ты сообщаешь компилятору что ты собрался
> работать с файлом экселя как с текстовым?


На самом деле, работать буду с CSV фалами ...


Palladin   (2009-04-03 09:51:00) [13]

а какого хрена ты сообщаешь компилятору что ты собрался работать с файлом экселя как с текстовым?


Palladin   (2009-04-03 09:50:00) [14]

потому что 410/128~3


Наверх

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