c - Efter at jeg har lavet en udgivelsesversion, startes min ansøgning og virker underligt

Indlæg af Hanne Mølgaard Plasc

Problem



Jeg lavede en ansøgning i Visual Studio 2010 Express. Først kompilerede jeg en debug-version, og det fungerede perfekt, men efter at have lavet en udgivelsesversion fryser den.

Min ansøgning skal fungere som denne:

Jeg har samlet BIOS-versionen til alle skrivebord, og den vil automatisk opdatere bios-versioner. De er placeret på et Netværk dele som \ myserver \ bios\_update. Der er også en Log-mappe i \\ myserver \ bios\_update \ Log. Min ansøgning vil oprette en logfil i denne logmappe på følgende måde: \\ myserver \ bios\_update \ log \ OptiPlex 780 \ hostname.txt Selvfølgelig er OptiPlex 780 pc'ens modeltype, og hvis den ikke eksisterer, det vil blive oprettet, fordi der er mange pc model typer. Hvis værtsnavnet.txt (værtsnavn er erstattet med computerens værtsnavn) ikke eksisterer, oprettes det også.


Den interessante del er, at det i øjeblikket fungerede fint, men efter at have lavet en udgivelsesversion fungerer min ansøgning som følger. Hvis hostname.txt eksisterer, fungerer det fint, men hvis ikke, så fryser det. Det er som om det går i en uendelig sløjfe, men jeg ved ikke hvorfor (jeg udskrev nogle data, og det ved jeg derfor, jeg sagde en uendelig sløjfe).


Jeg bemærkede følgende ting:
Her vil min ansøgning fryse: hvis (folderexists (LogFolder))
LogFolder indeholder en sti som \\ myserver \ bios\_update \ Log \
Hvis hostname.txt ikke eksisterer, fryser min app, men hvis den eksisterer, så er det fint. Også hvis jeg giver LogFolder uden den sidste \ lignende \ myserver \ bios\_update \ Log, så er det også fint.
Her er min kode:


bool folderexists( char * foldername )
{
if ( \_access( foldername, 0 ) == 0 )
  { 
    struct stat status;
    stat( foldername, &status );

    if ( status.st\_mode & S\_IFDIR )
    {           
        //cout << "
The directory exists." << endl;
        return true;
    }
    else
    {
        //cout << "
The path you entered is a file." << endl;
        WriteToLog( "The path you entered is a file??????????????????", false );
        return false;
    }
}
else
{
    //cout << "
Path doesn't exist." << endl;
    return false;
}
}//folderexists


void WriteToLog( char * text, bool star )
{
char time[ SMALL ], LogModel[ MEDIUM ], Day[ SMALL ], Month[ SMALL ];
FILE *logfile;

memset( time, 0, sizeof( time ) );
memset( Day, 0, sizeof( Day ) );
memset( Month, 0, sizeof( Month ) );

SYSTEMTIME lt;

GetLocalTime( &lt );

GetDayAndMonth( lt.wDayOfWeek , Day, lt.wMonth, Month );

sprintf( time, "[\%s \%s \%d \%02d:\%02d:\%02d]", Day, Month, lt.wDay, lt.wHour, lt.wMinute, lt.wSecond );

//printf("
The local time is: \%02d:\%02d
", lt.wHour, lt.wMinute);

if ( !file\_exists( LogFile ) )
{
    memset( LogModel, 0, sizeof( LogModel ) );
    strcpy( LogModel, LogFolder );
    strcat( LogModel, PCModel );

    if ( folderexists( LogFolder ) ) <== Here is where my App freeze!!!!!!!
    {
        if ( !folderexists( LogModel ) )
        {
            if ( !CreateDirectoryA( LogModel, NULL ) ) ShowError( "CreateDirectoryA .............................. Failed! ( creating LogModel folder ) ", true, true );
        }
    }
    else
    {
        printf( "
LogFolder isn't reachable!" ); 
        exit(-1);
    }
}//file\_exists

if ( ( logfile = fopen( LogFile, "a" ) ) == NULL ) 
{
    ShowError( "Failed to create Logfile!", false, true );
}
else 
{
    fputs( time, logfile );
    fputs( " - ", logfile );
    fputs( text, logfile );
    fputs( "
", logfile );
    if ( star ) fputs( "**********************************************************************************************************************
", logfile );

    fclose( logfile );

    //if ( star ) exit( -1 );
}
}//WriteToLog


Eventuelle råd appritiated fordi det gør mig skør, og jeg kan ikke finde ud af, hvad problemet er.

Bedste reference


Det kalder sig rekursivt. I FolderExists kalder du WriteToLog, der kalder, hvis FolderExists, der kalder WriteToLog, der kalder, hvis FolderExists, der kalder WriteToLog, der kalder hvis FolderExists, der kalder WriteToLog, der kalder om FolderExists, der kalder WriteToLog, der kalder hvis FolderExists, der kalder WriteToLog, der kalder hvis FolderExists, der kalder WriteToLog, der kalder hvis FolderExists, der kalder WriteToLog .... osv