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

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

10.05.2011, 16:55. Просмотров 2578. Ответов 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
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
10.05.2011, 16:55
Ответы с готовыми решениями:

Место формируется автоматически если на определенную дату место занято то вывести ошибку. Все это дело считывается с б
Всем привет, помогите организовать алгоритм распределений мест в самолете: место формируется...

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

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

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

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

10
anonimus
2156 / 1246 / 143
Регистрация: 28.04.2010
Сообщений: 4,592
10.05.2011, 17:02 2
создай файл и в цикле добавляй в него какую-нить инфу проверяя каждый раз размер файла
0
Unloat777
2 / 2 / 0
Регистрация: 10.05.2011
Сообщений: 50
10.05.2011, 22:35  [ТС] 3
Пробовал, всю винду вешает.
Хотя может я недопонял? напиши плз поподробнее.
0
Mawrat
12857 / 5761 / 1701
Регистрация: 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
10.05.2011, 23:06
Unloat777
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
Vaaleraa
4 / 4 / 2
Регистрация: 01.05.2011
Сообщений: 98
12.05.2011, 02:05 6
этот файл создаётся на диске ц под именем size.dat???
если да, то где он???О_о
хотел проверить, а ща на ц места нет
=)
0
Mawrat
12857 / 5761 / 1701
Регистрация: 19.09.2009
Сообщений: 8,807
12.05.2011, 10:42 7
Да, полное имя файла: C:\size.dat.
Можно попробовать найти файл в проводнике Windows через поиск (F3) с параметром по дате создания.
---
Пост с кодом я изменил теперь - поменял букву диска с "C" на "D".
0
Vaaleraa
4 / 4 / 2
Регистрация: 01.05.2011
Сообщений: 98
12.05.2011, 15:03 8
не находит...
как быть? что делать? 11 метров на ц осталось(
0
Unloat777
2 / 2 / 0
Регистрация: 10.05.2011
Сообщений: 50
12.05.2011, 15:23  [ТС] 9
Ну вы нубы блин! :dance3:
deletefile('C:\size.dat');
Вот!
0
Vaaleraa
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
Привет! Вот еще темы с ответами:

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

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

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


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

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

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