Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2002.09.12;
Скачать: CL | DM;

Вниз

FindFirst((ExtractFilePath(Application.... МАСТЕРА! помогите с ра   Найти похожие ветки 

 
jcrush   (2002-09-01 18:41) [0]

FindFirst((ExtractFilePath(Application.ExeName)+"basa.jch"), faAnyFile, SearchRec);
Label1.Caption := IntToStr(SearchRec.Size) + " байт занято";


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


 
Anatoly Podgoretsky ©   (2002-09-01 18:56) [1]

Так это цикл, конструкция такая есть в Паскале while условие do


 
Song ©   (2002-09-01 19:17) [2]

К сожалению только сложением.


 
Юрий Зотов ©   (2002-09-01 19:39) [3]

> показывает размер одного файла,
FindFirst - "найти ПЕРВЫЙ ". Что и имеем.

> показывало размеры всех файлов сразу
try
repeat
...
until FindNext(...) <> 0
finally
FindClose(...)
end

> можно конечно это сложить по имени каждого файла, но это нудно
Да. Общение с компьютером, да еще на ЕГО языке - нудная вещь. Но что делать... Ведь мы живем всего лишь в XXI веке.


 
alena.svt ©   (2002-09-01 20:19) [4]

Если надо именно всех то почему б не получить рамер самой папки?


 
alena.svt ©   (2002-09-01 21:53) [5]


unit Unit1;

interface

uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
StdCtrls;

type
TForm1 = class(TForm)
Button1: TButton;
Label1: TLabel;
procedure Button1Click(Sender: TObject);
private

{ Private declarations }
public
{ Public declarations }
end;

var
Form1: TForm1;
CurPath,
CurDir,
DispSize,
DispName: string;
FSize, Size: Double;
ActualSize,Folder: string;
implementation

{$R *.DFM}
function GetSize: double;

function ComputeFolderSize(ADir: String): Double;
var
hFnd: THandle;
Fnd: TWin32FindData;
Temp: integer;
FDir,FName: string;
begin
Result := 0;
if Length(ADir) <> 0 then
begin
if ADir[Length(ADir)] <> "\" then
ADir := ADir + "\";
FDir := ADir;
end
else
Exit;
hFnd := FindFirstFile(PChar(FDir + "*.*"),Fnd);
if hFnd <> INVALID_HANDLE_VALUE then
begin
try
repeat
FName := Trim(StrPas(Fnd.cFileName));
if (FName <> ".") and (FName <> "..") then
begin
if (Fnd.dwFileAttributes and FILE_ATTRIBUTE_DIRECTORY) <>
FILE_ATTRIBUTE_DIRECTORY then
begin
Temp := (Fnd.nFileSizeHigh * MAXDWORD) + Fnd.nFileSizeLow;
Result := Result + Temp;
end
else
Result := Result + ComputeFolderSize(FDir + FName);
end;
until not FindNextFile(hFnd,Fnd);
finally
Windows.FindClose(hFnd);
end;
end;
end;

begin
//Размер диска например CurPath :="C:\"; покажет неправильно,
// а папка у меня во всяком случае до байта правильно.
// Если Delphi3 то ExcludeTrailingBackSlash убрать, но тогда ручками убирите завершающий слэш
CurPath := ExcludeTrailingBackSlash(ExtractFilePath(Application.ExeName));
CurDir := ExtractFileName(CurPath);
FSize := ComputeFolderSize(CurPath);
DispName := Folder + CurDir;
Result := FSize;
//Это доработайте до байт килобайт мегобайт как вам угодно
ActualSize := Format("%0.0n Bytes",[FSize]);
if (FSize > 0) and (FSize < 1024) then
Size := 1.0
else
Size := FSize / 1024;
if Size <= 99999 then
DispSize := Format("%.2n KB",[Size])
else
DispSize := Format("%.2n MB",[Size/1024]);

end;
// В событии для кнопки
procedure TForm1.Button1Click(Sender: TObject);
begin
Screen.Cursor:=crHourglass;
GetSize;

Label1.Caption:= ("Размер папки ""+dispName+"" c поддерикториями"+#13+ActualSize+#13+"(" + DispSize + " )");

Screen.Cursor:=crArrow;
end;

end.

Лишнее выкинете.
С уважением


 
Song ©   (2002-09-01 21:56) [6]

2alena.svt © (01.09.02 21:53)
А это типа у Вас работает не сложением?


 
alena.svt ©   (2002-09-01 22:15) [7]

Да сложением я не спорю.
Просто самой интересно стало когда посоветовала размер папки получить
По-другому не смогла. Но просто поделилась может кому пригодиться.



Страницы: 1 вся ветка

Текущий архив: 2002.09.12;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.011 c
1-35774
c0pYc@t
2002-08-30 09:53
2002.09.12
ListView


1-35742
murza
2002-08-30 12:39
2002.09.12
Билдер генерит неправильный код


1-35641
DenKop
2002-09-01 01:19
2002.09.12
Непонятная бредятина с *.dcu


14-35877
bytebutcher
2002-08-16 14:19
2002.09.12
Matt Pietrek Windows 95 System Programming Secrets


1-35737
EugenCFG
2002-08-30 12:05
2002.09.12
Подскажите, какой функцией заменить строку в файле?