Форум программистов, компьютерный форум, киберфорум
Наши страницы
C++ Builder
Войти
Регистрация
Восстановить пароль
 
 
Рейтинг 4.60/5: Рейтинг темы: голосов - 5, средняя оценка - 4.60
БузинВладимир
0 / 0 / 4
Регистрация: 21.08.2017
Сообщений: 107
1

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

02.05.2019, 20:23. Просмотров 940. Ответов 26

Добрый день! Я пишу в шестом билдере файловый менеджер для курсовой работы как оконное приложение и не могу понять, в какой версии Borland C++ Builder или Embracadero разрабатывался этот код. Будет ли программа, написанная в старой версии, работать в новой и наоборот? А также как создавать новые заголовочные или cpp-файлы для текущего проекта?
Я пробовал использовать «Project -> Add To Project» для чернового консольного приложения, но в результате открывается окно проводника, который может только открыть уже существующий файл, а не создать новый. В итоге я создал на диске D папку с будущим проектом и через «File -> New -> Other… -> Cpp File» создал два cpp-файла перед созданием проекта, из-за чего возникли проблемы с компиляцией. По-хорошему, я по ходу работы в проекте кликаю правой клавишей по древовидной структуре, выбираю пункт «Создать -> Файл CPP» после чего среда сама подключает нужные библиотеки и после компиляции нужные заголовочные файлы «встают» сами. Файлы PropertyFile.cpp и PropertyDrive.cpp сами компилироваться не захотели, ссылаясь на ошибку
Error: Field Form1->ImageList2 does not have a corresponding component. Remove the declaration? (Yes/No/Cancel/Help)
и заголовочные файлы не «подтянулись». Придётся делать всё вручную и самому создавать недостающие заголовочные файлы. Какие библиотеки я должен подключить в двух вышеупомянутых файлах CPP и нужны ли первые девять строк в файле Unit1.h? Чтобы скомпилировать файл, не запуская его, я шёл в Project -> Compile Unit. И тут вопрос: после этой команды скомпилируется весь проект или только открытый в данный момент времени файл?

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

В какой версии билдера или эмбракадеры лучше писать этот код? Где и какие библиотеки нужно добавить или убрать? Как добавить к проекту header- или cpp-файл непосредственно в ходе работы с ним и как скомпилировать отдельную подпрограмму, не запуская весь проект? Работаю в Borland C++ Builder 6.


Unit1.h
C++
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
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
#ifndef Unit1H
#define Unit1H
//---------------------------------------------------------------------------
#include <Classes.hpp>
#include <Controls.hpp>
#include <StdCtrls.hpp>
#include <Forms.hpp>
 
enum {ImageWindows, ImageFloppy, ImageDrive, ImageCD, ImageMyComp,ImageCloseFolder, ImageOpenFolder};
void strcat0(char * &dest,char *source); //ÑîåäèГ*ГҐГ*ГЁГҐ ñòðîê Г± îñòГ*âëåГ*ГЁГҐГ¬ Г*óëåâîãî ñèìâîëГ*
void finstr(char *dest);
unsigned int lengthfinstr(char *dest);
 
struct DROPFILES {
 DWORD pFiles; // offset of file list
 POINT pt; // drop point (client coords)
 BOOL fNC; // is it on NonClient area
 // and pt is in screen coords
 BOOL fWide; // WIDE character switch
};
 
//---------------------------------------------------------------------------
class TForm1 : public TForm
{
__published:    // IDE-managed Components
 TImageList *ImageList2;
 void __fastcall TreeView1Expanding(TObject *Sender,
 TTreeNode *Node, bool &AllowExpansion);
 void __fastcall TreeView1Compare(TObject *Sender, TTreeNode *Node1,
 TTreeNode *Node2, int Data, int &Compare);
 void __fastcall TreeView1Expanded(TObject *Sender,
 TTreeNode *Node);
 void __fastcall TreeView1Collapsing(TObject *Sender,
 TTreeNode *Node, bool &AllowCollapse);
 void __fastcall TreeView1Editing(TObject *Sender, TTreeNode *Node,
 bool &AllowEdit);
 void __fastcall ListView1Compare(TObject *Sender, TListItem *Item1,
 TListItem *Item2, int Data, int &Compare);
 void __fastcall ListView1DblClick(TObject *Sender);
 void __fastcall ListView1MouseDown(TObject *Sender,
 TMouseButton Button, TShiftState Shift, int X, int Y);
 void __fastcall TreeView1DragOver(TObject *Sender, TObject *Source,
 int X, int Y, TDragState State, bool &Accept);
 void __fastcall TreeView1DragDrop(TObject *Sender, TObject *Source,
 int X, int Y);
 void __fastcall TreeView1MouseDown(TObject *Sender,
 TMouseButton Button, TShiftState Shift, int X, int Y);
 void __fastcall NPropertyClick(TObject *Sender);
 void __fastcall NOpenClick(TObject *Sender);
 void __fastcall NExitClick(TObject *Sender);
 void __fastcall NDeleteClick(TObject *Sender);
 void __fastcall TBDeleteClick(TObject *Sender);
 void __fastcall TBPropertyClick(TObject *Sender);
 void __fastcall TBExitClick(TObject *Sender);
 void __fastcall NViewClick(TObject *Sender);
 void __fastcall NPanelClick(TObject *Sender);
 void __fastcall NStatusBarClick(TObject *Sender);
 void __fastcall TBUpClick(TObject *Sender);
 void __fastcall TreeView1Edited(TObject *Sender, TTreeNode *Node,
 AnsiString &S);
 void __fastcall ListView1Edited(TObject *Sender, TListItem *Item,
 AnsiString &S);
 void __fastcall NRenameClick(TObject *Sender);
 void __fastcall TBRenameClick(TObject *Sender);
 void __fastcall NIconClick(TObject *Sender);
 void __fastcall NSmallIconClick(TObject *Sender);
 void __fastcall NListClick(TObject *Sender);
 void __fastcall NReportClick(TObject *Sender);
 void __fastcall ListView1DragOver(TObject *Sender, TObject *Source,
 int X, int Y, TDragState State, bool &Accept);
 void __fastcall ListView1DragDrop(TObject *Sender, TObject *Source,
 int X, int Y);
 void __fastcall TBUpdateClick(TObject *Sender);
 void __fastcall TreeView1Click(TObject *Sender);
 void __fastcall TBPasteClick(TObject *Sender);
 void __fastcall TBCopyClick(TObject *Sender);
 void __fastcall TBCutClick(TObject *Sender);
 void __fastcall NUpdateClick(TObject *Sender);
 void __fastcall NCutClick(TObject *Sender);
 void __fastcall NPasteClick(TObject *Sender);
 void __fastcall NCopyClick(TObject *Sender);
 void __fastcall NSelectAllClick(TObject *Sender);
 void __fastcall ListView1ColumnClick(TObject *Sender,
 TListColumn *Column);
 void __fastcall NSort0Click(TObject *Sender);
 void __fastcall NCreateFolderClick(TObject *Sender);
 void __fastcall NFileClick(TObject *Sender);
 void __fastcall NEditClick(TObject *Sender);
 void __fastcall ListView1ContextPopup(TObject *Sender,
 TPoint &MousePos, bool &Handled);
 void __fastcall TreeView1ContextPopup(TObject *Sender,
 TPoint &MousePos, bool &Handled);
 
private:    // User declarations
public:     // User declarations
 __fastcall TForm1(TComponent* Owner);
 void ShowDrives();
 void ViewChild(TTreeNode *child);
 void DeleteChild(TTreeNode *Node);
 void ViewFailAndFolderInListView(AnsiString dir);
 void ExpandTreeForFile(AnsiString FileName);
 int FileAndFolderOperation(char *frombuf, char *tobuf, unsigned int operation);
 TTreeNode* AddChildInNodeTree(TTreeNode *Node, AnsiString Dir);
 TListItem *AddItemInListView(TSearchRec sr,AnsiString dir);
 void ViewProperty();
 void OpenFileOrFolder(); //Îòêðûòü Гў Listview ГґГ*éë èëè ГЇГ*ГЇГЄГі
 void DeleteFileOrFolder();
 void PrepareBufForOperationInListView(char * &frombuf);
 AnsiString RenameFileOrFolder(AnsiString);
 void RecursTree(TTreeNode *node,bool); //ÐåêóðñèâГ*îå îáГ*îâëåГ*ГЁГҐ äåðåâГ*
 void UpdateTreeView(bool); //ÔóГ*êöèÿ Г§Г*ГЇГіГ±ГЄГ* ðåêóðñèâГ*îãî îáГ*îâëåГ*ГЁГї äåðåâГ*
 void UpdateListView(bool); //ÔóГ*êöèÿ îáГ*îâëåГ*ГЁГї listview
 void UpdateAll(bool);
 void PasteFileFromClipboard(); //ÂñòГ*ГўГЁГІГј ГЁГ§ ГЎГіГґГҐГ°Г*
 void CopyFileToClipboard(bool); //ÊîïèðîâГ*ГІГј ГґГ*éëû Гў ГЎГіГґГҐГ°
 void CreateFol();
 void UpdateLabel();
 
};
//---------------------------------------------------------------------------
extern PACKAGE TForm1 *Form1;
//---------------------------------------------------------------------------
#endif
PropertyFile.cpp
C++
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
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
TFPropertyFile *FPropertyFile;
//---------------------------------------------------------------------------
__fastcall TFPropertyFile::TFPropertyFile(TComponent* Owner)
 : TForm(Owner)
{
}
//---------------------------------------------------------------------------
 
void TFPropertyFile::Set_Change(AnsiString Name,WIN32_FILE_ATTRIBUTE_DATA &attr)
 {
 if (ENameFile->Modified) //ÑîõðГ*Г*ГҐГ*ГЁГҐ èçìåГ*ГҐГ*ГЁГ©
 { //Åñëè èçìåГ*Г*ГҐГ® èìÿ ГґГ*éëГ* ГЇГ*ГЇГЄГЁ
 if((FileGetAttr(Name) & faDirectory)!=0)
 Name.SetLength(Name.Length()-1);
 char frombuf[1000]={'\0'}, tobuf[1000]={'\0'};
 strcpy(frombuf,Name.c_str());
 strcpy(tobuf,(ExtractFilePath(Name)+ENameFile->Text).c_str());
 Form1->FileAndFolderOperation(frombuf,tobuf,FO_RENAME); //ÏåðåèìåГ*îâûâГ*ГҐГ¬
 }
 //ÑîõðГ*Г*ГҐГ*ГЁГҐ Г*òðèáóòîâ
 if(CBArchiv->Checked) attr.dwFileAttributes |= FILE_ATTRIBUTE_ARCHIVE;
 else attr.dwFileAttributes &= ~FILE_ATTRIBUTE_ARCHIVE;
 if(CBReadOnly->Checked) attr.dwFileAttributes |= FILE_ATTRIBUTE_READONLY;
 else attr.dwFileAttributes &= ~FILE_ATTRIBUTE_READONLY;
 if(CBHide->Checked) attr.dwFileAttributes |= FILE_ATTRIBUTE_HIDDEN;
 else attr.dwFileAttributes &= ~FILE_ATTRIBUTE_HIDDEN;
 if(CBSystem->Checked) attr.dwFileAttributes |= FILE_ATTRIBUTE_SYSTEM;
 else attr.dwFileAttributes &= ~FILE_ATTRIBUTE_SYSTEM;
 SetFileAttributes(Name.c_str(),attr.dwFileAttributes); //ÓñòГ*Г*îâêГ*
 ENameFile->Modified=false;
 }
 
void TFPropertyFile::Get_Size_Folder(AnsiString dir)
 {
 TSearchRec sr;
 if(FindFirst(dir+"*",faAnyFile,sr)!=0) //Ïðîñìîòð ГЇГ*ïîê Гў äåòÿõ
 return;
 do
 {
 int Attr=FileGetAttr(dir+sr.Name);
 if(Attr==-1 || sr.Name=="." || sr.Name=="..")
 continue; //ÏðîâåðêГ* Г*Г* îòñóòñòâóþùèå Гў äåéñòâèåòåëüГ*îñòè ГЇГ*ГЇГЄГЁ
 if(sr.Attr & faDirectory)
 {
 num_folder++;
 Get_Size_Folder(dir+sr.Name+"\\"); //ÑîõðГ*Г*ГҐГ*ГЁГҐ ïîëГ*îãî èìåГ*ГЁ äëÿ äîñòóïГ*
 }
 else
 {
 num_files++;
 size+=sr.Size;
 unsigned long temp;
 temp=sr.Size;
 if((temp/byte_in_cluster*byte_in_cluster)!=temp) //ÏðîâåðêГ* âëåçГ*Г*ГЁГї ГґГ*éëГ*
 temp=(temp/byte_in_cluster+1)*byte_in_cluster;
 size_on_disk+=temp;
 }
 }
 while(FindNext(sr)==0);
 FindClose(sr);
 }
 
void TFPropertyFile::Prepare(AnsiString Name)
 {
 //ÏîäãîòîâêГ* Г¤Г*Г*Г*ûõ ГЁ ïîêГ*Г§ ñâîéñòâ ГґГ*éëГ*
 unsigned long int byte_in_sector,sector_in_cluster;
 GetDiskFreeSpace((ExtractFileDrive(Name)+"\\").c_str(),&sector_in_cluster,
 &byte_in_sector,NULL,NULL);
 byte_in_cluster=sector_in_cluster*byte_in_sector;
 Name_File=Name;
 GetFileAttributesEx(Name.c_str(),GetFileExInfoStandard,&attr);
 FILETIME ft;
 SYSTEMTIME st;
 AnsiString date;
 TDateTime dt;
 
 
 if((FileGetAttr(Name) & faDirectory)!=0) //Åñëè ñâîéñòâГ* ГЇГ*ГЇГЄГЁ
 {
 Graphics::TBitmap *i=new Graphics::TBitmap; //Г‡Г*ãðóçêГ* ГЁГЄГ®Г*ГЄГЁ ГЇГ*ГЇГЄГЁ
 Form1->ImageList3->GetBitmap(ImageCloseFolder,i);
 IIconFile->Picture->Bitmap->Assign(i);
 delete i;
 ENameFile->Text=ExtractFileName(Name.SubString(1,Name.Length()-1));
 LTypeFile->Caption="ГЏГ*ГЇГЄГ*"; //Г‡Г*ãðóçêГ* Г*Г*çâГ*Г*ГЁГї
 LFolder->Caption=ExtractFilePath(Name.SubString(1,Name.Length()-1));
 num_files=num_folder=size=size_on_disk=0; //Г‡Г*ГЇГіГ±ГЄ ðåêóðñèâГ*îé ГґГіГ*êöèè Г±Г·ГЁГІГ*ГѕГ№ГҐГ©
 Get_Size_Folder(Name); //Г°Г*çìåð ГЇГ*ГЇГЄГЁ êîë-ГўГ® ГґГ*éëîâ ГЁ ГЇГ*ïîê Гў Г*ГҐГ©
 LSize->Caption=AnsiString(FormatFloat("#,##0", size/1024))+" KB ("+AnsiString(FormatFloat("#,##0", size))+ " ГЎГ*éò)";
 LOnDisk->Caption=AnsiString(FormatFloat("#,##0", size_on_disk/1024))+" KB ("+AnsiString(FormatFloat("#,##0", size_on_disk))+ " ГЎГ*éò)";
 LName->Caption="Ñîäåðæèò :";
 LOpen->Caption=AnsiString("Г”Г*éëîâ: ")+num_files+" ; ГЏГ*ïîê: "+num_folder;
 
 }
 else //Åñëè ñâîéñòâГ* ГґГ*éëГ*
 {
 SHFILEINFO sfi; //ÑòðóêòóðГ* ñîäåðæГ*Г№Г*Гї ГЁГ*ГґГі Г® ГґГ*éëå
 ZeroMemory(&sfi,sizeof(sfi)); //ГЋГ·ГЁГ±ГІГЄГ*
 SHGetFileInfo(Name.c_str(),FILE_ATTRIBUTE_NORMAL,&sfi,sizeof(sfi),
 SHGFI_USEFILEATTRIBUTES|SHGFI_TYPENAME|SHGFI_ICON | SHGFI_LARGEICON    ); //Ïîëó÷åГ*ГЁГҐ Г¤Г*Г*Г*ûõ
 TIcon *icon=new TIcon(); //ÑîçäГ*Г*ГЁГҐ äèГ*Г*ìè÷åñêîé ГЁГЄГ®Г*ГЄГЁ
 icon->Handle=sfi.hIcon; //Г‡Г*ãðóçêГ* Гў Г*ГҐГҐ äåñêðèïòîðГ* Г*ГіГ¦Г*îé ГЁГЄГ®Г*ГЄГЁ
 IIconFile->Picture->Icon->Assign(icon); //Г‡Г*Г*ГҐГ±ГҐГ*ГЁГҐ äåñêðèïòîðГ* Гў imagelist
 delete icon;
 ENameFile->Text=ExtractFileName(Name);
 LTypeFile->Caption=(AnsiString)(sfi.szTypeName);//Г‡Г*Г*ГҐГ±ГҐГ*ГЁГҐ èìåГ*ГЁ ГІГЁГЇГ*
 LFolder->Caption=ExtractFilePath(Name); //Г‡Г*Г*ГҐГ±ГҐГ*ГЁГҐ ГЄГ*ГІГ*ëîãГ*
 
 
 //----------------------------------------------
 //Ïîëó÷åГ*ГЁГҐ Г*òðèáóòîâ - Г¤Г*ГІ Г°Г*çìåðГ* Г*òðèáóòîâ
 
 unsigned long int size=attr.nFileSizeHigh<<16 | attr.nFileSizeLow;
 //Âûâîä Г°Г*çìåðîâ
 LSize->Caption=AnsiString(size/1024)+" KB ("+AnsiString(size)+ " ГЎГ*éò)"; //Г°Г*çìåðГ*
 if((size/byte_in_cluster*byte_in_cluster)!=size) //ÏðîâåðêГ* âëåçГ*Г*ГЁГї ГґГ*éëГ*
 size=(size/byte_in_cluster+1)*byte_in_cluster; //Гў ГЄГ«Г*ñòåðû ГЁ Г*Г*ëè÷èÿ ñâîáîäГ*îãî ìåñòГ* Гў Г*ГЁГµ
 LOnDisk->Caption=AnsiString(size/1024)+" KB ("+AnsiString(size)+ " ГЎГ*éò)";
 LName->Caption="Îòêðûò :";
 //----------------------------------------------------
 //ÎïðåäåëåГ*ГЁГҐ Г¤Г*ГІ
 //Г„Г*ГІГ» äîñòóïГ*
 FileTimeToLocalFileTime(&(attr.ftLastAccessTime), &ft);
 FileTimeToSystemTime( &ft, &st);
 dt=SystemTimeToDateTime(st);
 DateTimeToString(date,"d mmm yyyy ГЈ.",dt);
 LOpen->Caption=date; //Г‡Г*ГЇГЁГ±Гј Г¤Г*ГІГ» äîñòóïГ*
 //----------------------------------------
 }
 //Г„Г*ГІГ» ñîçäГ*Г*ГЁГї
 FileTimeToLocalFileTime(&(attr.ftCreationTime), &ft);
 FileTimeToSystemTime( &ft, &st);
 dt=SystemTimeToDateTime(st);
 DateTimeToString(date,"d mmm yyyy ГЈ., hh:nn:ss",dt);
 LCreate->Caption=date; //Г‡Г*ГЇГЁГ±Гј Г¤Г*ГІГ» ñîçäГ*Г*ГЁГї
 ///Г„Г*ГІГ» èçìåГ*ГҐГ*ГЁГї
 FileTimeToLocalFileTime(&(attr.ftLastWriteTime), &ft);
 FileTimeToSystemTime( &ft, &st);
 dt=SystemTimeToDateTime(st);
 DateTimeToString(date,"d mmm yyyy ГЈ., hh:nn:ss",dt);
 LWrite->Caption=date; //Г‡Г*ГЇГЁГ±Гј Г¤Г*ГІГ» èçìåГ*ГҐГ*ГЁГї
 
 CBArchiv->Checked=attr.dwFileAttributes & FILE_ATTRIBUTE_ARCHIVE;
 CBReadOnly->Checked=attr.dwFileAttributes & FILE_ATTRIBUTE_READONLY;
 CBHide->Checked=attr.dwFileAttributes & FILE_ATTRIBUTE_HIDDEN;
 CBSystem->Checked=attr.dwFileAttributes & FILE_ATTRIBUTE_SYSTEM;
 
 ENameFile->Modified=false;
 if(FPropertyFile->ShowModal()==mrOk) //ÏîêГ*Г§ ôîðìû
 Set_Change(Name,attr);
 
 
 }
 
void __fastcall TFPropertyFile::BtApplyClick(TObject *Sender)
{ //Ùåë÷îê Г*Г* ïðèìåГ*ГЁГІГј
 Set_Change(Name_File,attr); //Âûçîâ ГґГіГ*êöèè ñîõðГ*Г*ГҐГ*ГЁГї èçìåГ*ГҐГ*ГЁГ©
}
//---------------------------------------------------------------------------
PropertyDrive.cpp
C++
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
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
TFPropertyDrive *FPropertyDrive;
//---------------------------------------------------------------------------
__fastcall TFPropertyDrive::TFPropertyDrive(TComponent* Owner)
 : TForm(Owner)
{
}
//---------------------------------------------------------------------------
void TFPropertyDrive::Prepare(AnsiString Name)
 {
 Name_Drive=Name;
 Graphics::TBitmap *i=new Graphics::TBitmap; //Г‡Г*ãðóçêГ* ГЁГЄГ®Г*ГЄГЁ ГЇГ*ГЇГЄГЁ
 
 Caption="ÑâîéñòâГ*: Äèñê "+Name.SubString(1,2);
 switch(GetDriveType(Name.c_str())) //Г‡Г*ãðóçêГ* image
 {
 case DRIVE_REMOVABLE:
 LType->Caption="Äèñêîâîä";
 Form1->ImageList3->GetBitmap(ImageFloppy,i);
 break;
 case DRIVE_FIXED:
 case DRIVE_RAMDISK:
 LType->Caption="Æåñòêèé äèñê";
 Form1->ImageList3->GetBitmap(ImageDrive,i);
 break;
 case DRIVE_CDROM:
 LType->Caption="CD-äèñêîâîä";
 Form1->ImageList3->GetBitmap(ImageCD,i);
 break;
 default:
 LType->Caption="ÍåèçâåñòГ*ûé äèñêîâîä";
 Form1->ImageList3->GetBitmap(ImageWindows,i);
 break;
 }
 IIconDisk->Picture->Bitmap->Assign(i);
 delete i;
 char volume[20],filesystem[20];
 if(GetVolumeInformation(Name.c_str(),volume,20,NULL,NULL,NULL,filesystem,20))
 {
 ELabelDisk->Text=volume;
 LFileSystem->Caption=filesystem;
 }
 else
 {
 ELabelDisk->Text="";
 LFileSystem->Caption="";
 }
 __int64 FreeSpace,TotalSpace,TakenSpace;
 
 Chart1->Series[0]->Clear();
 if(Sysutils::GetDiskFreeSpaceEx(Name.c_str(),NULL,TotalSpace,&FreeSpace))
 {
 double c=10.0;
 TakenSpace=TotalSpace-FreeSpace;
 LTaken1->Caption=AnsiString(FormatFloat("#,##0", TakenSpace))+" ГЎГ*éò";
 LTaken2->Caption=AnsiString(((TakenSpace*10)/1024/1024/1024)/c)+" ГѓГЃ";
 LFree1->Caption=AnsiString(FormatFloat("#,##0", FreeSpace))+" ГЎГ*éò";
 LFree2->Caption=AnsiString(((FreeSpace*10)/1024/1024/1024)/c)+" ГѓГЃ";
 LCapacity1->Caption=AnsiString(FormatFloat("#,##0", TotalSpace))+" ГЎГ*éò";
 LCapacity2->Caption=AnsiString(((TotalSpace*10)/1024/1024/1024)/c)+" ГѓГЃ";
 Image1->Canvas->Brush->Color=clRed;
 Image1->Canvas->FillRect(Rect(0,0,Image1->Width,Image1->Height));
 Chart1->Series[0]->Add(TakenSpace,"1",clRed);
 Image2->Canvas->Brush->Color=clGreen;
 Image2->Canvas->FillRect(Rect(0,0,Image2->Width,Image2->Height));
 Chart1->Series[0]->Add(FreeSpace,"2",clGreen);
 Chart1->View3DOptions->Elevation=290;
 }
 else
 {
 LTaken1->Caption="0 ГЎГ*éò";
 LTaken2->Caption="0 ГЎГ*éò";
 LFree1->Caption="0 ГЎГ*éò";
 LFree2->Caption="0 ГЎГ*éò";
 LCapacity1->Caption="0 ГЎГ*éò";
 LCapacity2->Caption="0 ГЎГ*éò";
 Image1->Canvas->Brush->Color=clRed;
 Image1->Canvas->FillRect(Rect(0,0,Image1->Width,Image1->Height));
 Chart1->Series[0]->Add(100,"1",clRed);
 Image2->Canvas->Brush->Color=clGreen;
 Image2->Canvas->FillRect(Rect(0,0,Image2->Width,Image2->Height));
 Chart1->View3DOptions->Elevation=290;
 }
 ELabelDisk->Modified=false;
 if(FPropertyDrive->ShowModal()==mrOk)
 {
 if(ELabelDisk->Modified)
 SetVolumeLabel(Name.c_str(),ELabelDisk->Text.c_str());
 }
 }
 
void __fastcall TFPropertyDrive::BtApplyClick(TObject *Sender)
{
 
 if(ELabelDisk->Modified)
 SetVolumeLabel(Name_Drive.c_str(),ELabelDisk->Text.c_str());
 ELabelDisk->Modified=false;
}
//---------------------------------------------------------------------------
0
QA
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
02.05.2019, 20:23
Ответы с готовыми решениями:

Добавление заголовочных файлов к проекту
Приветствую уважаемые посетители cyberforum! Не знаю, почему не может открыть файл amx, хотя файл...

Написание консольного файлового менеджера
Добрый день, в университете задали проект по созданию консольного Файлового менеджера на C++ в...

Про добавление заголовочных файлов в заголовочных файлах
В который раз эта вещь засовывает мозги в блендер! Я про то, что не могу однозначно запомнить...

Обратная совместимость двоичных файлов с VB6
Добрый день! Портирую большой проект из VB6 в VB.net (VS 2008). Необходимо достигнуть обратной...

Реализация файлового менеджера
Нужно сделать программу что-то вроде &quot;Файлового менеджера&quot;(Упрощённый, то есть отображение...

26
БузинВладимир
0 / 0 / 4
Регистрация: 21.08.2017
Сообщений: 107
02.05.2019, 20:45  [ТС] 2
Кидаю скрин ошибки и документ с листингом программы, чтобы было понятнее.
0
Миниатюры
Написание файлового менеджера: добавление заголовочных файлов к проекту, а также прямая и обратная совместимость кода в  
Вложения
Тип файла: docx Листинг программы.docx (41.9 Кб, 1 просмотров)
nick42
Практикантроп
4455 / 2421 / 438
Регистрация: 23.09.2011
Сообщений: 5,187
03.05.2019, 09:20 3
БузинВладимир, по моему вы в легкой панике? Это лишнее.
Не стоит выкладывать сюда непонятно какие тексты. Лучше опубликуйте перечень всех тех файлов, из которых вы намереваетесь собрать проект. После этого можно будет начинать что-то советовать.

Добавлено через 1 час 22 минуты
P.S. как минимум нужны файлы с расширением dfm, а также заголовочные PropertyFile.h и PropertyDrive.h.
0
БузинВладимир
0 / 0 / 4
Регистрация: 21.08.2017
Сообщений: 107
03.05.2019, 09:57  [ТС] 4
У меня четыре файла: "Unit1.cpp", "Unit1.h", "PropertyFile.cpp" и "PropertyDrive.cpp". Весь вопрос в том, как слинковать два последних файла, чтобы заголовочные файлы к ним встали автоматом. Работаю с шестым билдером. Первый способ - перед работой с главным проектом создать PropertyFile и PropertyDrive как отдельные юниты, используя File -> New -> Unit, в результате чего заголовочные файлы у них будут "из коробки". Но есть вероятность в том, что они откажутся компилироваться из-за того, что компилятор не знает каких-либо функций или какие-то библиотеки не были подключены. И поэтому прототипы функций не пропишутся в их заголовочных файлах. Тогда какие библиотеки надо будет подключать и где, если это будет оконное приложение? Второй способ - непосредственно в ходе работы с главным проектом добавить к нему НОВЫЕ CPP-файлы. Но есть вопросы: пропишутся ли к ним нужные библиотеки, подтянутся ли к ним заголовочные файлы после компиляции и как слинковать только их, не затрагивая основной проект? Третий способ - делать всё вручную - не пподходит. Файл Unit1.cpp не поместился в теме. Смотрите его в документе с листингом программы.

Добавлено через 3 минуты
И как создать новые cpp-файлы непосредственно в ходе работы с основным проектом? Project -> Add To Project не подходит, потому что так можно открыть уже существующие файлы, а не создать новые.
0
03.05.2019, 09:57
nick42
Практикантроп
4455 / 2421 / 438
Регистрация: 23.09.2011
Сообщений: 5,187
03.05.2019, 11:11 5
Я только что попробовал собрать проект "на ощупь". Сейчас добью последние ошибки (чтоб хотя бы компилировался) и выложу в архиве. Пока можете попробовать открыть проект в своем Билдере для начала (должно быть с десяток Errors при компиляции). Можете потренироваться привести в порядок формы, потому что я ничего не компоновал, да и не разбирался.
0
Вложения
Тип файла: zip 60.ZIP (20.2 Кб, 0 просмотров)
nick42
Практикантроп
4455 / 2421 / 438
Регистрация: 23.09.2011
Сообщений: 5,187
03.05.2019, 11:17 6
P.S. ..поспешил. Этот проект у вас вряд ли откроется. Попробуйте из этого архива.
0
Вложения
Тип файла: zip 60.ZIP (20.1 Кб, 1 просмотров)
БузинВладимир
0 / 0 / 4
Регистрация: 21.08.2017
Сообщений: 107
03.05.2019, 14:27  [ТС] 7
Получил ошибки типа E2541 о неопределённых символах в PNOpen, PNCut, PNCopy, PNPaste, PNRename, PNDelete в строках

C++
1
2
3
 PNOpen->Visible=false;
 PNView->Visible=false;
 PNSort->Visible=false;
Добавлено через 1 минуту
Так он для пятой версии билдера? Будет ли работать на шестой?

Добавлено через 7 минут
А у Вас он запустился?
0
nick42
Практикантроп
4455 / 2421 / 438
Регистрация: 23.09.2011
Сообщений: 5,187
03.05.2019, 15:21 8
В ваших файлах не хватает довольно большого куска, где собраны обработчики от ряда кнопок и пунктов меню (типа NIcon, TBRename и т.д.). Или ищите, или будете дописывать вручную.
Цитата Сообщение от БузинВладимир Посмотреть сообщение
Так он для пятой версии билдера? Будет ли работать на шестой?
Обычно преобразовывает без лишних вопросов.
0
nick42
Практикантроп
4455 / 2421 / 438
Регистрация: 23.09.2011
Сообщений: 5,187
03.05.2019, 16:57 9
П.С. Этот должен скомпилироваться
0
Вложения
Тип файла: zip 61.ZIP (383.0 Кб, 2 просмотров)
БузинВладимир
0 / 0 / 4
Регистрация: 21.08.2017
Сообщений: 107
04.05.2019, 12:05  [ТС] 10
Я пытался сделать как в этом видеоуроке
https://www.youtube.com/watch?v=-dX3...7EWm0j&index=3
а потом к этой программе приделать кнопки копирования и переименования и к ним привязать алгоритмы найденные на сторонних сайтах, но у меня вылезли две ошибки. Щас выложу код программы, а потом скриншоты с ошибками.
Unit1.cppp
C++
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
//---------------------------------------------------------------------------
 
#include <vcl.h>
#pragma hdrstop
 
#include "Unit1.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm1 *Form1;
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
        : TForm(Owner)
{
}
//---------------------------------------------------------------------------
 
void __fastcall TForm1::Edit1Change(TObject *Sender)
{
FileListBox1->Mask='*.'+Edit1->Text;
}
//---------------------------------------------------------------------------
 
void __fastcall TForm1::CommandFile1Click(TObject *Sender)
{
    Edit1->Text="*.bat";
    FileListBox1->Mask="*.bat";
}
//---------------------------------------------------------------------------
 
void __fastcall TForm1::MP31Click(TObject *Sender)
{
    Edit1->Text="*.mp3";
    FileListBox1->Mask="*.mp3";
}
//---------------------------------------------------------------------------
void __fastcall TForm1::AllFile1Click(TObject *Sender)
{
    Edit1->Text="*.*";
    FileListBox1->Mask="*.*";
}
//---------------------------------------------------------------------------
Unit1.h
C++
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
#include <Classes.hpp>
#include <Controls.hpp>
#include <StdCtrls.hpp>
#include <Forms.hpp>
#include <FileCtrl.hpp>
#include <Menus.hpp>
//---------------------------------------------------------------------------
class TForm1 : public TForm
{
__published:    // IDE-managed Components
        TDriveComboBox *DriveComboBox1;
        TDirectoryListBox *DirectoryListBox1;
        TFileListBox *FileListBox1;
        TEdit *Edit1;
        TPopupMenu *PopupMenu1;
        TMenuItem *CommandFile1;
        TMenuItem *MP31;
        TMenuItem *AllFile1;
        void __fastcall Edit1Change(TObject *Sender);
        void __fastcall CommandFile1Click(TObject *Sender);
        void __fastcall MP31Click(TObject *Sender);
        void __fastcall AllFile1Click(TObject *Sender);
private:    // User declarations
public:     // User declarations
        __fastcall TForm1(TComponent* Owner);
};
//---------------------------------------------------------------------------
extern PACKAGE TForm1 *Form1;
//---------------------------------------------------------------------------
#endif
0
БузинВладимир
0 / 0 / 4
Регистрация: 21.08.2017
Сообщений: 107
04.05.2019, 12:08  [ТС] 11
Вот скриншоты:
0
Миниатюры
Написание файлового менеджера: добавление заголовочных файлов к проекту, а также прямая и обратная совместимость кода в   Написание файлового менеджера: добавление заголовочных файлов к проекту, а также прямая и обратная совместимость кода в  
БузинВладимир
0 / 0 / 4
Регистрация: 21.08.2017
Сообщений: 107
04.05.2019, 12:31  [ТС] 12
Если я просто спишу, я не пойму назначение функций и их работу, чтобы составить описание к проекту. Потом при сдаче надо будет доказать, что сам писал. В чём ошибка во втором случае? И на всякий случай, если всё-таки придётся списать комментарии к работе функций там есть?
0
gunslinger
случайный прохожий
1402 / 903 / 349
Регистрация: 20.07.2013
Сообщений: 2,586
04.05.2019, 13:45 13
Внутри одинарных кавычек может содержаться лишь 1 символ (а не несколько).
Замени одинарные кавычки на двойные (для выделения нескольких символов).

Вторая ошибка - компилятор не понимает, какую функцию сложения (какого типа значение операнда) использовать.
0
БузинВладимир
0 / 0 / 4
Регистрация: 21.08.2017
Сообщений: 107
04.05.2019, 15:36  [ТС] 14
Почему тогда в видео использовали оператор сложения, и какое преобразование я должен провести:

C++
1
IntToStr(Edit1->Text)
или

C++
1
DoubleToStr(Edit1->Text)
Добавлено через 23 минуты
А strcat не спасает положение?
C++
1
FileListBox1->Mask=strcat("*.", Edit1->Text);
0
БузинВладимир
0 / 0 / 4
Регистрация: 21.08.2017
Сообщений: 107
04.05.2019, 20:14  [ТС] 15
Фокус со strcat не прокатил и вылезли следующие ошибки:
0
Миниатюры
Написание файлового менеджера: добавление заголовочных файлов к проекту, а также прямая и обратная совместимость кода в  
БузинВладимир
0 / 0 / 4
Регистрация: 21.08.2017
Сообщений: 107
04.05.2019, 20:16  [ТС] 16
Так уж и быть, тот архив - моя последняя надежда, только в телах функций закомментируйте их работу и роль входных и выходных параметров, чтобы я по комментариям смог составить описание.
0
БузинВладимир
0 / 0 / 4
Регистрация: 21.08.2017
Сообщений: 107
04.05.2019, 21:25  [ТС] 17
Я пытался сделать так:
C++
1
2
char a[3] = "*.";
FileListBox1->Mask=strcat(a, Edit1->Text.c_str());
Проект даже запустился, но выдал ошибку:
0
Миниатюры
Написание файлового менеджера: добавление заголовочных файлов к проекту, а также прямая и обратная совместимость кода в  
БузинВладимир
0 / 0 / 4
Регистрация: 21.08.2017
Сообщений: 107
05.05.2019, 07:01  [ТС] 18
Попробовал оператор сложения из библиотеки string. Проект опять же запустился, файлы из всех папок отображаются корректно, но строка поиска не работает. Пытаюсь ввести часть имени файла и получаю пустой экран.
0
БузинВладимир
0 / 0 / 4
Регистрация: 21.08.2017
Сообщений: 107
05.05.2019, 07:11  [ТС] 19
Вот мой проект. Не подскажите, что делать со строкой поиска?
0
Вложения
Тип файла: zip file-manager.zip (526.4 Кб, 2 просмотров)
nick42
Практикантроп
4455 / 2421 / 438
Регистрация: 23.09.2011
Сообщений: 5,187
05.05.2019, 14:08 20
Если имеется в виду обработчик Edit1Change, то оставьте там одну эту строку__
C++
1
   FileListBox1->Mask = Edit1->Text.Trim() + "*.*";
и поиск будет работать.
0
05.05.2019, 14:08
Answers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
05.05.2019, 14:08

Исходник файлового менеджера
Есть ли у кого нибудь исходник файлового менеджера(проводника) на C# в visual studio 2012 -2017

Каково устройство файлового менеджера?
Доброго времени суток. хочу сделать простенький файловый менеджер, что бы он мог выполнять...

Смена файлового менеджера по умолчанию
Как сменить файловый менеджер по умолчанию на Linux mint 17 MATE? Надо чтобы все папки, включая...


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

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

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