Dateiattribute Setzen

Nebuchadnezar

Erfahrenes Mitglied
hi Leute hab folgendes Problem. Ich hab mir mit dem bcbuilder 5 ein programm gemacht, welches die Attribute von Dateien ändert. Ich hab nur das Problem dass ich die Bitflags nicht richtig setzen kann(weis nicht wie) um die Attribute zu löschen. Aktivieren funzzt gut aber ich schaff es nicht die Attribute zu deaktivieren.
Bitte hilfe. Danke


Code:
//---------------------------------------------------------------------------

#include <vcl.h>
#pragma hdrstop

#include <dir.h>
#include "dateiattribute.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm1 *Form1;
int disk;
char *help = new char [255];
WIN32_FIND_DATA fData;
char buf[256];
HANDLE hSearch;
BOOL MoreFiles = FALSE;
char cselect[255];
char cselected[255];
DWORD attrib;

//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
	: TForm(Owner)
{
}
//---------------------------------------------------------------------------

void __fastcall TForm1::FormCreate(TObject *Sender)
{

Application->MessageBoxA("Dieses Prog kann Dateiattribute ändern","Hinweis",MB_OK | MB_ICONEXCLAMATION);

for (int disk = 0;disk < 10;disk++)
{
setdisk(disk);
if (disk == getdisk())   {
*help=char(disk + 97);
help[1] = ':';
ComboBox1->Items->Add(help);
}


}






}
//---------------------------------------------------------------------------
//hier werden die Laufwerke eingelesen

void __fastcall TForm1::ComboBox1Change(TObject *Sender)
{
char *Buffer = new char[20];
ListBox1->Clear();
ListBox2->Clear();
ComboBox1->GetTextBuf(Buffer,255);
strcat(Buffer,"\\*.*");
hSearch=FindFirstFile(Buffer,&fData);
do
{


if(fData.dwFileAttributes &= FILE_ATTRIBUTE_DIRECTORY)
//die Ordner werden in Listbox1 aufgelistet
{
ListBox1->Items->Add((fData.cFileName));
}
else {
	ListBox2->Items->Add(fData.cFileName);
//die Dateien werden in ListBox2 aufgelistet	}
MoreFiles = FindNextFile(hSearch,&fData);

}
while(MoreFiles);
}




 



//---------------------------------------------------------------------------
void __fastcall TForm1::ListBox1DblClick(TObject *Sender)
{
char *buf = new char[255];
HANDLE iSearch;

for (int i = 0;i < ListBox1->Items->Count; i++)
{
	if (ListBox1->Selected[i])
	{
		ComboBox1->GetTextBuf(buf,255);
		strcpy(cselected,buf);
		strcat(cselected,"\\");
		strcpy(cselect,ListBox1->Items->Strings[ListBox1->ItemIndex].c_str());
		strcat(cselected,cselect);
		strcat(cselected,"\\*.*");
		ListBox1->Items->Add(cselected);

	 }
}//nicht für das problem wichtig - ermittlung der dateinamen(laufwerk\verzeichnis\datei)
ListBox1->Clear();
ListBox2->Clear();
iSearch=FindFirstFile(cselected,&fData);

do
{

if(fData.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY)
{
ListBox1->Items->Add((fData.cFileName));
}
else {
	ListBox2->Items->Add(fData.cFileName);
	}
MoreFiles = FindNextFile(iSearch,&fData);

}
while(MoreFiles);


}
//---------------------------------------------------------------------------
//Attribute auslesen und bearbeiten


void __fastcall TForm1::ListBox2Click(TObject *Sender)
{


hide -> State = cbUnchecked;
Protected -> State = cbUnchecked;
Archived -> State = cbUnchecked;
System -> State = cbUnchecked;

for (int i = 0;i < ListBox1->Items->Count; i++)
{
	if (ListBox2->Selected[i])
	{
		ComboBox1->GetTextBuf(buf,255);
		strcpy(cselected,buf);
		strcat(cselected,"\\");
		strcpy(cselect,ListBox2->Items->Strings[ListBox2->ItemIndex].c_str());
		strcat(cselected,cselect);


	 }
}

attrib = GetFileAttributes(cselected);

if(attrib & FILE_ATTRIBUTE_HIDDEN) hide->State = cbChecked;
if(attrib & FILE_ATTRIBUTE_READONLY) Protected -> State = cbChecked;
if(attrib & FILE_ATTRIBUTE_ARCHIVE) Archived -> State = cbChecked;
if(attrib & FILE_ATTRIBUTE_SYSTEM) System -> State = cbChecked;
}
//---------------------------------------------------------------------------





void __fastcall TForm1::attributeClick(TObject *Sender)
{
DWORD checker1,checker2,checker3,checker4;
checker1 	= hide->Checked;
checker2    = Protected->Checked;
checker3	= Archived->Checked;
checker4	= System->Checked;

attrib = GetFileAttributes(cselected);

if(checker2 == TRUE)
SetFileAttributes(cselected,attrib |= FILE_ATTRIBUTE_READONLY);
else if(checker2 == FALSE) SetFileAttributes(cselected,attrib |= !FILE_ATTRIBUTE_READONLY);
attrib = GetFileAttributes(cselected);

if(checker1 == TRUE)
SetFileAttributes(cselected,attrib |= FILE_ATTRIBUTE_HIDDEN);
else if(checker1 == FALSE) SetFileAttributes(cselected,attrib |= !FILE_ATTRIBUTE_HIDDEN);
attrib = GetFileAttributes(cselected);

if(checker3 == TRUE)
SetFileAttributes(cselected,attrib |= FILE_ATTRIBUTE_ARCHIVE);
else if(checker3 == FALSE) SetFileAttributes(cselected,attrib |= !FILE_ATTRIBUTE_ARCHIVE);
attrib = GetFileAttributes(cselected);

if(checker4 == TRUE)
SetFileAttributes(cselected,attrib |= FILE_ATTRIBUTE_SYSTEM);
else if(checker4 == FALSE) SetFileAttributes(cselected,attrib |= !FILE_ATTRIBUTE_SYSTEM);

}
//---------------------------------------------------------------------------

ps: ist mit gui hoffe ihr kommts ohne dem foto dazu aus
 
Zuletzt bearbeitet:

Neue Beiträge

Zurück