Форум программистов, компьютерный форум, киберфорум
Delphi
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.50/14: Рейтинг темы: голосов - 14, средняя оценка - 4.50
2 / 2 / 0
Регистрация: 10.05.2011
Сообщений: 50
1

проверить свободное место на диске и создать файлик, который это место заполняет

10.05.2011, 16:55. Просмотров 2832. Ответов 10
Метки нет (Все метки)

Помогите с прогой на Delphi/Pascal!
Решил написать прогу пикол на delphi но довольно быстро попал в затруднительную
ситуацию.
Суть проги заключается в том что она проверяет свободное место на диске и создаёт
какой-нибудь файлик, который это место заполняет.
Вот так я определил кол-во свободных байтов:

Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
unit Unit1;
 
interface
 
uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls;
 
type
  TForm1 = class(TForm)
    Button1: TButton;
    procedure Button1Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;
 
var
  Form1: TForm1;
 
implementation
 
{$R *.dfm}
 
procedure TForm1.FormCreate(Sender: TObject);
var
Free_Bytes: TLargeInteger;
 
begin
GetDiskFreeSpaceEx('c:', Free_Bytes, Totalsize, @FreeSize);
end;
 
end.
А как создать файл с чтоб в нём было Free_Bytes символов?
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
10.05.2011, 16:55
Ответы с готовыми решениями:

Почта, свободное место на диске
Нашел в интернете скрипт, который отправляет на почту письмо когда мало места на жестком диске....

Исчезает свободное место на диске С
Добрый день. проблема (win7 x64), только ccleaner удаляет около 70 Мб, а через пару минут уже...

Уменьшается свободное место на диске C
За последние пару дней количество свободного места на диске С уменьшилось с 32 Гб до 10 Гб,...

Пропадает свободное место на диске C
постоянно пропадает место на диске С

10
2181 / 1251 / 143
Регистрация: 28.04.2010
Сообщений: 4,592
10.05.2011, 17:02 2
создай файл и в цикле добавляй в него какую-нить инфу проверяя каждый раз размер файла
0
2 / 2 / 0
Регистрация: 10.05.2011
Сообщений: 50
10.05.2011, 22:35  [ТС] 3
Пробовал, всю винду вешает.
Хотя может я недопонял? напиши плз поподробнее.
0
12953 / 5805 / 1704
Регистрация: 19.09.2009
Сообщений: 8,807
10.05.2011, 23:06 4
Delphi
1
2
3
4
5
6
7
8
9
10
11
var
  Fs : TFileStream;
  FileName : String;
  Size : Int64;
begin
  //...
  Fs := TFileStream.Create(FileName, fmCreate, fmShareDenyWrite);
  Fs.Size := Size;
  Fs.Free;
  //...
end;
1
2 / 2 / 0
Регистрация: 10.05.2011
Сообщений: 50
11.05.2011, 17:34  [ТС] 5
Тогда вот этот код целиком работает!
Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
unit Unit1;
 
interface
 
uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls;
 
type
  TForm1 = class(TForm)
    Button1: TButton;
    procedure Button1Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;
 
var
  Form1: TForm1;
 
implementation
 
{$R *.dfm}
 
procedure TForm1.Button1Click(Sender: TObject);
var
  Fs : TFileStream;
  Size : Int64;
    Free_Bytes: TLargeInteger;
    FreeSize: TLargeInteger;
    TotalSize: TLargeInteger;
begin
  GetDiskFreeSpaceEx('d:', Free_Bytes, Totalsize, @FreeSize);
  Fs := TFileStream.Create('D:\size.dat', fmCreate, fmShareDenyWrite);
  Fs.Size := Free_Bytes - 10;
  Fs.Free;
end;
 
end.
 Комментарий модератора 
Учитывая случаи, описанные в посте ниже, в целях безопасности, я изменил букву диска с "C" на "D".
1
4 / 4 / 2
Регистрация: 01.05.2011
Сообщений: 98
12.05.2011, 02:05 6
этот файл создаётся на диске ц под именем size.dat???
если да, то где он???О_о
хотел проверить, а ща на ц места нет
=)
0
12953 / 5805 / 1704
Регистрация: 19.09.2009
Сообщений: 8,807
12.05.2011, 10:42 7
Да, полное имя файла: C:\size.dat.
Можно попробовать найти файл в проводнике Windows через поиск (F3) с параметром по дате создания.
---
Пост с кодом я изменил теперь - поменял букву диска с "C" на "D".
0
4 / 4 / 2
Регистрация: 01.05.2011
Сообщений: 98
12.05.2011, 15:03 8
не находит...
как быть? что делать? 11 метров на ц осталось(
0
2 / 2 / 0
Регистрация: 10.05.2011
Сообщений: 50
12.05.2011, 15:23  [ТС] 9
Ну вы нубы блин! :dance3:
deletefile('C:\size.dat');
Вот!
0
4 / 4 / 2
Регистрация: 01.05.2011
Сообщений: 98
13.05.2011, 03:00 10
уже удалил)
а как сделать size.dat скрытым и(или) системным?)
з.ы. эта прога не работает на 7-ке

Добавлено через 4 часа 41 минуту
Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
unit Unit1;
 
interface
 
uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls;
 
type
  TForm1 = class(TForm)
    Button1: TButton;
    procedure Button1Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;
 
var
  Form1: TForm1;
 
implementation
 
{$R *.dfm}
 
procedure TForm1.Button1Click(Sender: TObject);
var
  Fs : TFileStream;
  Size : Int64;
    Free_Bytes: TLargeInteger;
    FreeSize: TLargeInteger;
    TotalSize: TLargeInteger;
 
begin
  
  (*
  Создание файла на диске С. Удалено модератором.
  *)
  GetDiskFreeSpaceEx('d:', Free_Bytes, Totalsize, @FreeSize);
  Fs := TFileStream.Create('D:\test.dat', fmCreate, fmShareDenyWrite);
  Fs.Size := Free_Bytes div 1000000; (*Изменено модератором.*)
  Fs.Free;
  GetDiskFreeSpaceEx('e:', Free_Bytes, Totalsize, @FreeSize);
  Fs := TFileStream.Create('E:\test.dat', fmCreate, fmShareDenyWrite);
  Fs.Size := Free_Bytes div 1000000; (*Изменено модератором.*)
  Fs.Free;
  SetFileAttributes('D:\Windows.dat',   faReadOnly);(*Изменено модератором.*)
  SetFileAttributes('E:\Windows.dat',  faReadOnly);(*Изменено модератором.*)
end;
 
end.
так покатит или нет как системный файл? Просто у меня 7-ка стоит и проверить никак...
 Комментарий модератора 
В целях безопасности, изменил код.
0
Mawrat
13.05.2011, 08:58     проверить свободное место на диске и создать файлик, который это место заполняет
  #11
 Комментарий модератора 
Тему закрываю. Публикуемые коды должны решать проблемы, а не создавать их.
0
13.05.2011, 08:58
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
13.05.2011, 08:58
Привет! Вот еще темы с ответами:

Пропадает свободное место на диске
Подскажите.У меня с подчётом обьёма с скрытыми элиментами на диске "С" еле 8Гб тянет,а вот в...

Исчезло свободное место на диске
Вдруг пропало свободное место на иске С, хотя там его было достаточно. Ничего туда не грузил...

Свободное место на жестком диске
В интернете нашел одну команду(DISM.exe /online /Cleanup-Image /spsuperseded) позволяющую удалять...

Кончается свободное место на диске C
Здравствуйте, с недавних пор у меня появилась проблема, стремительно заполняется свободное место ни...

Исчезает свободное место на диске
Здравствуйте! В последнее время стало пропадать свободное место на терабайтном диске. Самое...

Исчезло свободное место на системном диске
Сегодня вдруг вышло сообщение о необходимости очистки диска из-за нехватки свободного места. Я...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
11
Закрытая тема Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2020, vBulletin Solutions, Inc.