Вверх ↑
Этот топик читают: Гость
Ответов: 3655
Рейтинг: 69
#1: 2006-07-26 23:31:30 ЛС | профиль | цитата
DirFileSize
Невизуальный компонент определяет размер файла или папки.
Выводит данные в:
Байтах
Килобайтах
Мегабайтах
По вашему желанию.

Компиляторы:
FPC
Delphi

Скачать можно здесь http://vvu.ucoz.ru/load/1-1-0-16
карма: 0

0
Ответов: 1305
Рейтинг: 29
#2: 2006-07-31 10:22:03 ЛС | профиль | цитата
Вот родные функции KOL, как раз в тему
function FileSize (const Path: String) : Integer;
function DirectorySize (const Path: String): I64;

Кроме всего прочего размер папки возвращается в формате I64, что эквивалентно int64, т.е может выдавать ЗНАЧИТЕЛЬНО больше, чем 2 Гб

Вячеслав, и стоило сторонний компонент использовать

Add(InlineCode,9658799,350,98)
{
WorkPoints=#5:doDir|6:doFile|
EventPoints=#6:onSize|
Code=#15:unit HiAsmUnit;|0:|9:interface|0:|21:uses kol,Share,Debug;|0:|4:type|28: THiAsmClass = class(TDebug)|10: private|0:|9: public|0:|20: onSize:THI_Event;|0:|48: procedure doDir(var _Data:TData; Index:word);|49: procedure doFile(var _Data:TData; Index:word);|0:|5: end;|0:|14:implementation|0:|41:function StrToThs(const n:string):string;|15:var I: Integer;|5:begin|21: I := Length(n) - 2;|14: Result := n;|17: while I >= 2 do|10: begin|29: Insert(, Result, I);|15: Dec(I,3);|8: end;|4:end;|0:|28:procedure THiAsmClass.doDir;|13:var s:string;|10:var r:i64;|5:begin|21: s:=ToString(_Data);|22: r:=DirectorySize(s);|19: s:=Int64_2Str(r);|34: _hi_onEvent(onSize,StrToThs(s));|4:end;|1: |29:procedure THiAsmClass.doFile;|13:var s:string;|14:var r:integer;|5:begin|21: s:=ToString(_Data);|17: r:=FileSize(s);|16: s:=Int2Str(r);|34: _hi_onEvent(onSize,StrToThs(s));|4:end;|0:|4:end.|
link(onSize,11469272:doEvent1,[])
}
Add(Edit,12370351,532,84)
{
Left=150
Top=20
Width=165
Point(doEnabled)
}
Add(Button,3813191,168,63)
{
Left=15
Top=20
Caption="Папки"
Point(doEnabled)
link(onClick,11694559:doBrowse,[])
}
Add(Browse,11694559,217,63)
{
link(onBrowse,7412281:doEvent1,[])
}
Add(Hub,9517264,329,63)
{
InCount=2
link(onEvent1,8044200:doWork1,[(371,69)(371,45)(36,45)(36,69)])
link(onEvent2,12061932:doWork1,[(455,76)(455,104)])
}
Add(Hub,11469272,399,98)
{
OutCount=3
link(onEvent1,8044200:doWork2,[(444,104)(444,34)(45,34)(45,76)])
link(onEvent2,12061932:doWork2,[])
link(onEvent3,12370351:doText,[(467,118)(467,90)])
}
Add(ChanelToIndex,8044200,56,63)
{
link(onIndex,15665975:doEvent1,[])
}
Add(ChanelToIndex,12061932,483,98)
{
link(onIndex,12370351:doEnabled,[])
}
Add(Button,10761733,168,119)
{
Left=15
Top=70
Caption="Файлы"
Point(doEnabled)
link(onClick,9929961:doExecute,[])
}
Add(Hub,15665975,105,63)
{
link(onEvent1,3813191:doEnabled,[])
link(onEvent2,10761733:doEnabled,[(152,76)(152,125)])
}
Add(Hub,16594307,266,119)
{
link(onEvent1,9517264:doEvent2,[(319,125)(319,76)])
link(onEvent2,9658799:doFile,[(332,132)(332,111)])
}
Add(Hub,7412281,266,63)
{
link(onEvent1,9517264:doEvent1,[])
link(onEvent2,9658799:doDir,[(309,76)(309,104)])
}
Add(ODialog,9929961,217,119)
{
link(onExecute,16594307:doEvent1,[])
}
карма: 0

0
Ответов: 9906
Рейтинг: 351
#3: 2006-07-31 11:36:57 ЛС | профиль | цитата
v258, не в тему.
integer - слабоватый размер для FileSize
Хотя сам DirectorySize не использует FileSize, и подсчитывает и большие файлы правильно
Стоило ради этого форум перекашивать

btw: я уже почти приблизился к критическим размерам файлов: скачал на сети msdn-2005-04.rar (1738 Мб)
карма: 9

0
Ответов: 1305
Рейтинг: 29
#4: 2006-07-31 12:51:25 ЛС | профиль | цитата
Galkov писал(а):
v258, не в тему.
integer - слабоватый размер для FileSize

Компонент от Вячеслава тоже в integer считает, и размеры папок в том числе. Я просто ради примера привел -
зачем куда-то лезть и добавлять сторонние компоненты, если есть готовое
Galkov писал(а):
[Стоило ради этого форум перекашивать

Думаю, эти претензии нужно не мне предъявлять:
  • во-первых, размер схемы составил 2 453 байта, т.е. должен был спрятаться под ссылкой;
  • во-вторых, почему нет переноса по словам в тегах CODE? ну не я же этот форум создавал
карма: 0

0
Администрация
Ответов: 15295
Рейтинг: 1519
#5: 2006-07-31 13:39:49 ЛС | профиль | цитата
во-первых, размер схемы составил 2 453 байта, т.е. должен был спрятаться под ссылкой

У тебя все теги code себя так ведут или только в этом посте?
карма: 27
0
Ответов: 1305
Рейтинг: 29
#6: 2006-07-31 13:53:12 ЛС | профиль | цитата
Да нет, вроде бы, обычно прячутся (хотя уже не помню, когда я последний раз большую схему вставлял). Вот если вставить не одну схему, то прячется только первая, остальные нет
карма: 0

0
Ответов: 9906
Рейтинг: 351
#7: 2006-07-31 17:06:52 ЛС | профиль | цитата
Стоило ради этого форум перекашивать

Все, взял свои слова назад
карма: 9

0
Администрация
Ответов: 15295
Рейтинг: 1519
#8: 2006-07-31 17:12:25 ЛС | профиль | цитата
Перекашивание убралось, зато вес к странице существенно добавился..
карма: 27
0
Ответов: 3655
Рейтинг: 69
#9: 2006-07-31 20:17:08 ЛС | профиль | цитата
v258,
и стоило сторонний компонент использовать
Так я разве против ,я только за.
Делал для себя меня устраивает.
карма: 0

0
Ответов: 1305
Рейтинг: 29
#10: 2006-08-01 07:17:14 ЛС | профиль | цитата
Вячеслав, а на это внимание обратил?
v258 писал(а):
Кроме всего прочего размер папки возвращается в формате I64, что эквивалентно int64, т.е может выдавать ЗНАЧИТЕЛЬНО больше, чем 2 Гб

Или у тебя таких папок не бывает
карма: 0

0
Ответов: 3655
Рейтинг: 69
#11: 2006-08-01 17:29:05 ЛС | профиль | цитата
v258,
Или у тебя таких папок не бывает
Да необратил
Конечно папки и гораздо больше есть.
карма: 0

0
Ответов: 16884
Рейтинг: 1239
#12: 2006-08-02 00:37:08 ЛС | профиль | цитата
Вячеслав, посмотри еще это (еле нашел в прошлой версии)
карма: 25
Немного терпения! Дежурный экстрасенс скоро свяжется с Вами!
0
файлы: 1DirFileSizeT.rar [919B] [584]
Ответов: 9906
Рейтинг: 351
#13: 2006-08-02 01:11:28 ЛС | профиль | цитата
Народ, вы чего так тормозите
Давал ведь ссылку, где русским языком сказано, что FileSize надо брать такой:
//Внимание!!! - не проверено на больших (>2Г) файлах
function FileSize( const Path : String ) : Int64;
type T = record L,H:DWORD end;
var FD : TWin32FindData;
FH : THandle;
begin
FH := FindFirstFile( PChar( Path ), FD );
Result := 0;
if FH = INVALID_HANDLE_VALUE then exit;
T(Result).L := FD.nFileSizeLow;
T(Result).H := FD.nFileSizeHigh;
FindClose( FH );
end;
А коллега filyaxxxcom, даже и подтвердил работоспособность
карма: 9

0
Ответов: 16884
Рейтинг: 1239
#14: 2006-08-02 09:04:40 ЛС | профиль | цитата
Galkov, у меня это был разовый компонент (поэтому он и затерялся) и небыло длинных файлов. На том этапе он меня устраивал.
карма: 25
Немного терпения! Дежурный экстрасенс скоро свяжется с Вами!
0
Ответов: 3655
Рейтинг: 69
#15: 2006-08-03 19:41:41 ЛС | профиль | цитата
Tad, И где ты его прятал (Читай как - и где ты раньше был.)
карма: 0

0
Сообщение
...
Прикрепленные файлы
(файлы не залиты)