как можно оптимизировать код?

программирование программы windows C++ код

[STAThreadAttribute]
int main(array<String^>^args)
{
IEnumerator^arg=args->GetEnumerator();
String^argument="";
array<String^>^customFiles={"","",""};
while(arg->MoveNext())
{
argument=safe_cast<String^>(arg->Current);
if(argument=="-noException")showExceptions=false;
if(argument=="-onlyUserTemp")onlyUser=true;
if(argument=="-onlySystemTemp")onlyComp=true;
if(argument=="-cleanCustomDir")
{
int i=0;
while(arg->MoveNext())
{
argument=safe_cast<String^>(arg->Current);
if((argument!="-noException")&&(argument!="-onlyUserTemp")&&(argument!="-onlySystemTemp")&&(argument!="-cleanCustomDir"))
{
customFiles[i]=safe_cast<String^>(arg->Current);
i++;
}
else break;
}
}
}
array<String^>^files={""};
if(customFiles[0]!="")
{
String^currentFile="";
IEnumerator^fileEnum;
for(int y=0;y<3;y++)
{
try
{
files=Directory::GetFiles(customFiles[y]);
}
catch(Exception^ex)
{
if(showExceptions)System::Windows::Forms::MessageBox::Show(ex->Message,"Исключение "+ex->GetType()->Name,MessageBoxButtons::OK,MessageBoxIcon::Exclamation);
}
fileEnum=files->GetEnumerator();
while(fileEnum->MoveNext())
{
currentFile=safe_cast<String^>(fileEnum->Current);
try
{
File::Delete(currentFile);
}
catch(Exception^ex)
{
if(showExceptions)System::Windows::Forms::MessageBox::Show(ex->Message,"Исключение "+ex->GetType()->Name,MessageBoxButtons::OK,MessageBoxIcon::Exclamation);
}
}
}
}
return 0;
}

Примечание:
блин слетели пробелы при копировании...

кстати, кто не понял это управляемый C++, проект Windows Forms (а компилятор Visual Studio 2010)

Примечание:
вы просто не шарите! )

Примечание:
#include "stdafx.h"

using namespace System;
using namespace System::IO;
using namespace System::Collections;
using namespace System::Windows::Forms;

static bool onlyUser = false;
static bool onlyComp = false;
static bool showExceptions = true;

static int dirs = 3;

static void CleanTemp( EnvironmentVariableTarget target );
static void CleanCustomDirs( array< String^ >^ customFiles );

[ STAThreadAttribute ]

int main( array< String^ >^ args )
{
IEnumerator^ arg = args->GetEnumerator();
array< String^ >^ customFiles = { "", "", "" };
while( arg->MoveNext() )
{
if( safe_cast< String^ >( arg->Current ) == "-noException" ) showExceptions = false;
if( safe_cast< String^ >( arg->Current ) == "-onlyUserTemp" ) { onlyUser = true; onlyComp=false; }
if( safe_cast< String^ >( arg->Current ) == "-onlySystemTemp" ) { onlyComp = true; onlyUser=false; }
if( safe_cast< String^ >( arg->Current ) == "-cleanCustomDir" )
{
int i = 0;
while( arg->MoveNext() )
{
if( (safe_cast< String^ >( arg->Current ) != "-noException") && (safe_cast< String^ >( arg->Current ) != "-onlyUserTemp") &&
(safe_cast< String^ >( arg->Current ) != "-onlySystemTemp") && (safe_cast< String^ >( arg->Current ) != "-cleanCustomDir") )
{
customFiles[ i ] = safe_cast< String^ >( arg->Current );
if( i < dirs ) i++;
}
else break;
}
}
}
if( !onlyUser && !onlyComp ) { CleanTemp( EnvironmentVariableTarget::User ); CleanTemp( EnvironmentVariableTarget::Machine ); }
else { if( onlyUser ) CleanTemp( EnvironmentVariableTarget::User ); if( onlyComp ) CleanTemp( EnvironmentVariableTarget::Machine ); }
CleanCustomDirs( customFiles );
return 0;
}

static void CleanTemp( EnvironmentVariableTarget target )
{
String^ temp = Environment::GetEnvironmentVariable( "TEMP", target );
array< String^ >^ dir = Directory::GetFiles ( temp );
IEnumerator^ fileEnum = dir->GetEnumerator();
while( fileEnum->MoveNext() )
{
try
{
File::Delete( safe_cast< String^ >( fileEnum->Current ) );
}
catch( Exception^ ex )
{
if( showExceptions )
MessageBox::Show( ex->Message, "Исключение "+ex->GetType()->Name, MessageBoxButtons::OK, MessageBoxIcon::Exclamation );
}
}
}

static void CleanCustomDirs( array< String^ >^ customFiles )
{
array< String^ >^ files = { "" };
if( customFiles[ 0 ] != "" )
{
for( int y = 0; y < dirs; y++ )
{
try
{
files = Directory::GetFiles( customFiles[ y ] );
}
catch( Exception^ ex )
{
if( showExceptions )
MessageBox::Show( ex->Message, "Исключение "+ex->GetType()->Name, MessageBoxButtons::OK, MessageBoxIcon::Exclamation );
}
IEnumerator^ fileEnum = files->GetEnumerator();
while( fileEnum->MoveNext() )
{
try
{
File::Delete( safe_cast< String^ >( fileEnum->Current ) );
}
catch( Exception^ ex )
{
if( showExceptions )
MessageBox::Show( ex->Message, "Исключение "+ex->GetType()->Name, MessageBoxButtons::OK, MessageBoxIcon::Exclamation );
}
}
}
}
}
Ответы:
Спросите на форумах msdn.ru
Спасибо, никогда не буду писать на этом ужасе.
Спасибо, больше никогда не пишу ни на .NET, ни под Windows. У меня сейчас охуевание происходит в голове
>>System::Windows::Forms::MessageBox::Show
Нафига было так мудрить с наследованием?
Ctrl-A, Del, Ctrl-S, Ctrl-S


13 лет назад

RPI.su - самая большая русскоязычная база вопросов и ответов. Наш проект был реализован как продолжение популярного сервиса otvety.google.ru, который был закрыт и удален 30 апреля 2015 года. Мы решили воскресить полезный сервис Ответы Гугл, чтобы любой человек смог публично узнать ответ на свой вопрос у интернет сообщества.

Все вопросы, добавленные на сайт ответов Google, мы скопировали и сохранили здесь. Имена старых пользователей также отображены в том виде, в котором они существовали ранее. Только нужно заново пройти регистрацию, чтобы иметь возможность задавать вопросы, или отвечать другим.

Чтобы связаться с нами по любому вопросу О САЙТЕ (реклама, сотрудничество, отзыв о сервисе), пишите на почту [email protected]. Только все общие вопросы размещайте на сайте, на них ответ по почте не предоставляется.