![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Функция 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