Avatar billede mobi2 Nybegynder
28. april 2000 - 16:24 Der er 2 kommentarer og
1 løsning

Tilføj til fil

Jeg har en del kode,der sådan set har virket helt fint på et tidspunkt, men lige pludselig er holdt op med det. Jeg skal lave en analyse på filer, for derefter at skrive resultatet i en ny fil, de gamle resultater skal forblive i filen.... Er der nogen der har en bedre ide end mig!

Det drejer sig om Skriv_alarm_log(), Skriv_database_log(), samt Kontroller_fil().

Her er koden:

char Enter_file(void);

FILE *stream;
FILE *stream2;
char tmpbuf[128];        //buffer til tiden
float xpos[501],ypos[501];
float xpos2[501], ypos2[501];
float x_max=0.0,y_max=0.0,range=0.0;
float pulse=0.0;

//////////////////////////////////////////////////////////
//    Afslutter programmet og rydder op efter sig hvis     //
//    det skulle v‘re n›dvendigt                            //
//    MENU (q)                                            //
//////////////////////////////////////////////////////////
void Quit(void)
{
    if(stream == NULL)
    {
        closegraph();
        cout<<"\nEnding program.........";
        exit(0);
    }
    else
    {
        closegraph();
        cout<<"\n\nEnding program.........";
        fclose(stream);
        exit(0);
    }
}


//////////////////////////////////////////////////////////
//    float WRITE ALARM,LOG FILE                            //
//    Skriver alle fejl til fil alarm.log                    //
//////////////////////////////////////////////////////////
float Skriv_alarm_log(float alarm, char buffer2[7], char buffer3[7], char filnavn[80], char filnavn2[80])
{
    char alarm_gammel[]="c:\\otdr\\alarmold.log";//gammel fil
    char alarm_ny[]="c:\\otdr\\alarm.log";    //ny fil
    char blip[4]="\n";                        //linieskift
    char buffer[10];                        //buffer til konvertering
    char c;                                    //buffer til in->out kopiering
    char def1[]="File: ";                    //case 1 og 2
    char def2[]=", not all coordinates there, will try again later.";    //case 1
    char def3[]=", file or directory not existing, check your file..";    //case 2
    int x;                                    //buffer til konvertering

////†bner gammel logfil, omd›ber den og opretter ny logfil/////////////////////
    system("rename c:\\otdr\\alarm.log alarmold.log");
    //omdøber ny fil til gammel, som derefterskrives tilbage i ny

    ifstream alarm_in(alarm_gammel,ios::in);//åbner gammel fil
    if (!alarm_in)                            //er det ikke tilladt at åbne den, fejlmeldes
        cerr<<"Unabel to open file: "<<alarm_gammel<<" for input!";    //fejl
    ofstream alarm_out(alarm_ny,ios::out);    //åbner ny fil
    if(!alarm_out)                            //er det ikke tilladt at lave den fejlmeldes
        cerr<<"Unabel to open file: "<<alarm_ny<<" for output!";        //fejl

////////////////Skriver tid til logfilen//////////////////////
    _strtime(tmpbuf);                        //kopierer tiden til tmpbuf
    alarm_out.write(tmpbuf,strlen(tmpbuf));    //skriver tiden
    _strdate(tmpbuf);                        //kopierer datoen til tmpbuf
    alarm_out.write(" ", strlen(" "));        //mellemrum
    alarm_out.write(tmpbuf,strlen(tmpbuf));    //skriver dato
    alarm_out.write(blip, strlen(blip));    //linieskift

/////////////////////////Konvertering af float til int//////////////////////////
    gcvt(alarm, 5, buffer);//konverterer float(alarm) til string (buffer)
    x = atoi(buffer);        //konverterer string (buffer) til integer (x)

    switch(x)
    {
        case 1:
        {
////////////////Skriver datalinie til logfilen////////////////
            alarm_out.write(def1,strlen(def1));        //skriver file:
            alarm_out.write(filnavn,strlen(filnavn));//filnavnet i logfil
            alarm_out.write(def2,strlen(def2));        //skriver opståede fejl
            alarm_out.write(blip, strlen(blip));    //linieskift
            while(alarm_out&&alarm_in.get(c))        //kopierer fra in til out
            alarm_out.put(c);                        //skriver chars fra
            alarm_in.close();                        //lukker in(ny fil)
            alarm_out.close();                        //lukker out(gammel fil)
            system("del c:\\otdr\\alarmold.log");    //sletter gammel fil
        }; break;                                    //afslut case 1

        case 2:
        {
            alarm_out.write(def1,strlen(def1));        //skriver file:
            alarm_out.write(filnavn,strlen(filnavn));//filnavnet i logfil
            alarm_out.write(def3,strlen(def3));        //skriver opståede fejl
            alarm_out.write(blip, strlen(blip));    //linieskift
            while(alarm_out&&alarm_in.get(c))        //kopierer fra in til out
            alarm_out.put(c);                        //skriver chars fra
            alarm_in.close();                        //lukker in(ny fil)
            alarm_out.close();                        //lukker out(gammel fil)
            system("del c:\\otdr\\alarmold.log");    //sletter gammel fil
            cout<<"\nNo such directory or file.\n";
            Enter_file();
        }; break;                                    //afslut case 2

        case 3:
        {
            alarm_out.write("Comparing ",10);
            alarm_out.write(filnavn,strlen(filnavn));//filnavnet i logfil
            alarm_out.write(" and ",5);
            alarm_out.write(filnavn2,strlen(filnavn2));//filnavnet i logfil
            alarm_out.write(" found errors at: ",18);
            alarm_out.write(buffer2,strlen(buffer2));
            alarm_out.write(" km, ",5);
            alarm_out.write(buffer3,strlen(buffer3));
            alarm_out.write(" dB",3);
            alarm_out.write(blip, strlen(blip));    //linieskift
            while(alarm_out&&alarm_in.get(c))        //kopierer fra in til out
            alarm_out.put(c);                        //skriver chars fra
            alarm_in.close();                        //lukker in(ny fil)
            alarm_out.close();                        //lukker out(gammel fil)
            system("del c:\\otdr\\alarmold.log");    //sletter gammel fil
        }; break;
    }
    return 0;
}


//////////////////////////////////////////////////////////
//    WRITE DATABASE.LOG FILE                                //
//////////////////////////////////////////////////////////
int Skriv_database_log(char filnavn[80])
{
    char blip[4]="\n";                                //linieskift
    char c;                                            //buffer til in->out kopiering
    char database_ny[]="c:\\otdr\\database.log";            //ny fil
    char database_gammel[]="c:\\otdr\\databaseold.log";    //gammel fil

    system("rename c:\\otdr\\database.log databaseold.log");
    //omdøber ny fil til gammel, som derefterskrives tilbage i ny

    ifstream database_in(database_gammel,ios::in);    //åbner gammel fil
    if (!database_in)            //er det ikke tilladt at åbne den, fejlmeldes
        cerr<<"Unabel to open file: "<<database_gammel<<" for input!";    //fejl

    ofstream database_out(database_ny,ios::out);    //åbner ny fil
    if(!database_out)            //er det ikke tilladt at lave den fejlmeldes
        cerr<<"Unabel to open file: "<<database_ny<<" for output!";        //fejl

////////////////////Skriver datalinie til logfilen////////////////////////
    database_out.write(filnavn,strlen(filnavn));    //skriver filnavnet i logfil
    database_out.write(blip, strlen(blip));        //linieskift
    while(database_out&&database_in.get(c))        //kopierer fra in til out
        database_out.put(c);                    //skriver chars fra
    database_in.close();                        //lukker in(ny fil)
    database_out.close();                        //lukker out(gammel fil)
    system("del c:\\otdr\\databaseold.log");            //sletter gammel fil
    cout<<"Database logfile written.....";                //ok udførelse
    return (0);                                //afslutter rutinen
}


int filedelete(void)
{
    system("del c:\\otdr\\kontrolold.log");
    return 0;
}

int rename(void)
{
//    printf("About to spawn command interpreter and run a DOS command\n");
    system("rename c:\\otdr\\kontrol.log kontrolold.log");
    return 0;
}



//////////////////////////////////////////////////////////
//    WRITE KONTROLFILE.LOG                                //
//////////////////////////////////////////////////////////
int Kontroller_fil(char filnavn[80])
{
    char c;                                //buffer til in->out kopiering
    char blip[4]="\n";                        //linieskift
    char def1[]="\tThe file: ";                //skriver
    char def2[]=", passed sizecontrol!";        //skriver
    char kontrol_ny[]="c:\\otdr\\kontrol.log";        //ny fil
    char kontrol_gammel[]="c:\\otdr\\kontrolold.log";//gammel fil

    cout<<"Modtaget filnavn: "<<filnavn<<" fra skriv()"<<endl;//TEST
//    getch();
    cout<<"Omd›ber kontrol.log til kontrolold.log!"<<endl;    //TEST
    rename();
    cout<<"done!";                                            //TEST
    getch();                                                  //TEST

    ifstream kontrol_in("c:\\otdr\\kontrolold.log");    //åbner gammel fil
//    ifstream kontrol_in(kontrol_gammel,ios::app);    //åbner gammel fil
    if (!kontrol_in)            //er det ikke tilladt at åbne den, fejlmeldes
        cerr<<"Unabel to open file: "<<kontrol_gammel<<" for input!\n";    //fejl
    ofstream kontrol_out(kontrol_ny,ios::out);        //åbner ny fil
    if(!kontrol_out)            //er det ikke tilladt at lave den fejlmeldes
        cerr<<"Unabel to open file: "<<kontrol_ny<<" for output!";    //fejl

////////////////////Skriver tid og dato til logfilen//////////////////////
    _strtime(tmpbuf);                    //lægger værdi af tid til tmpbuf
    kontrol_out.write(tmpbuf,strlen(tmpbuf));    //skriver tiden
    _strdate(tmpbuf);                    //lægger værdi af dato til tmpbuf
    kontrol_out.write(" ", strlen(" "));        //mellemrum
    kontrol_out.write(tmpbuf,strlen(tmpbuf));    //skriver dato

////////////////////Skriver kontrollinie til logfilen////////////////////////
    kontrol_out.write(def1,strlen(def1));    //skriver def1 til logfil
    kontrol_out.write(filnavn,strlen(filnavn));    //skriver filnavn til logfil
    kontrol_out.write(def2,strlen(def2));    //skriver def2 til logfil
    kontrol_out.write(blip, strlen(blip));    //linieskift
    cout<<"Check for files!!!\n";
    getch();
    while(kontrol_out&&kontrol_in.get(c))    //kopierer fra in til out
    {
        cout<<"Char!";                      //TEST
        kontrol_out.put(c);                    //skriver chars fra in til out
    }
    kontrol_in.close();                        //lukker in(ny fil)
    kontrol_out.close();                    //lukker out(gammel fil)
//    system("del c:\\otdr\\kontrolold.log");    //sletter gammel fil
    cout<<"Second check!!\n";              //TEST
    getch();                                //TEST
    filedelete();
    return (0);                                //afslutter rutinen
}




//////////////////////////////////////////////////////////
//    Funktion der finder den største x og y-koordinat    //
//////////////////////////////////////////////////////////
float Max_value(float a, float b)
{
    if (a>b)
        return a;
    else
        return b;
}



//////////////////////////////////////////////////////////
//    Funktion finder en søgestreng,                        //
//    overført fra Search_file()                            //
//////////////////////////////////////////////////////////
char* Seek(FILE *stream,char *seek_string1)
{
  // Find en linie i stream, der starter med "POS(km)  VAL(dB)"
    char *string = new char[1024];

    while (fgets(string,1023,stream))
    if (strncmp(string,seek_string1,strlen(seek_string1))==0)
    return string;
    return NULL; // Tekst ikke fundet
}

//////////////////////////////////////////////////////////
//    void skriv(char filnavn[80], int number_of_files)    //
//////////////////////////////////////////////////////////
void skriv(char filnavn[80],int number_of_files)
{
    float x,y;
    float maxx,maxy;
    char str[1024];
    int pts=0;
//    int i=0;
//    clrscr();
    FILE *ny_fil=fopen(filnavn, "r");
    if(!ny_fil)
    {
        cerr<<"File "<<ny_fil<<" not found\n";
        return;
    }
    cout<<"Analyse no. "<<number_of_files;//<<endl;
    cout<<" - on file: "<<filnavn<<endl;

    char *t=Seek(ny_fil, "POS(km)  VAL(dB)");
    if(!t)
    {
        cerr<<"Could not find \"POS(km)  VAL(dB)\" in file.....";
        return;
    }
    delete[] t;
    while (fgets(str, 1023, ny_fil))
    {
        if(str[0]>31)
        {
//            float x,y;
            sscanf(str,"%f %f", &x, &y);
            maxx=Max_value(maxx,x);
            maxy=Max_value(maxy,y);
            pts++;
//            xpos[pts]=x; ypos[pts]=y; pts++;
//            printf("X,Y: %2.4f , %2.4f\n",x,y);
//            cout<<"Points read :"<<pts<<endl;
//              getch();
        }
    }
    if(pts>500)
    {
        Kontroller_fil(filnavn);
    }
    else
    {
        Skriv_alarm_log(1,0,0,filnavn,0);
    }

/*    for(i=0;i<pts;i++)
    {
        cout<<"X,Y: "<<xpos[i]<<" , "<<ypos[i]<<endl;
    }*/
    cout<<"X max, Y max : "<<maxx<<" , "<<maxy<<endl;
    cout<<"Points read :"<<pts<<endl<<endl;
    fclose(ny_fil);
    getch();
    return;
}



//////////////////////////////////////////////////////////
//    Denne funktion bruges kun til testudskrift              //
//////////////////////////////////////////////////////////
int Skriv(float x_max, float y_max, float range, int coordinates, float pulse)
{
    printf("Distance range: %2.3f km\n", range);
    printf("Pulse width: %2.0f ns\n\n", pulse);
    cout<<"\tX max: "<<x_max<<endl;
    cout<<"\tY max: "<<y_max<<endl;
    cout<<"\nCoordinates found: "<<coordinates<<endl;
    getch();
    return 0;
}

//////////////////////////////////////////////////////////
//    Tegner den aktuelle graf til sk‘rmen                //
//////////////////////////////////////////////////////////
void Graf(char *filnavn, float x_max, float y_max)
{
    char string[1024];
    int i=0;
    int fejl, maxx, maxy;
    int driver, mode;
    driver = DETECT;
    initgraph(&driver, &mode, "c:\\progra~1\\tc\\bgi");
    fejl = graphresult();
    if (fejl)
    {
        cout<<"\nError no.: "<<fejl;
        cout<<"\n"<<grapherrormsg(fejl);
        exit(0);
    }
    maxx = getmaxx();
    maxy = getmaxy();
    setcolor(1);

    stream = fopen(filnavn, "r");    //Åbner filen bestemt af *filnavn
    if (!stream)    //Hvis filen ikke kan åbnes skrives
    {                //fejlmeddelse til skærmen, og programmet afsluttes
        cout<<"Could not open file: \""<<filnavn<<"\"..."<<endl;
        return;
    }

    char *t = Seek(stream,"POS(km)  VAL(dB)");
    if (!t)            //Hvis t ikke kan findes, skrives
    {                //fejlmeddelse til skærmen, og programmet afsluttes
        cout<<"Could not find \"POS(km)  VAL(dB)\"..."<<endl;
        return;
    }
    delete[] t;    //pointeren t bliver nedlagt igen, frigiver hukommelsen af t

    while (fgets(string,1023,stream))
    {
        if (string[0]>31) // Ignor‚r tomme linier (de begynder med newline, som er <32)
        {
        float x,y;
        sscanf(string,"%f %f",&xpos[i],&ypos[i]);
//        printf("No.: %d, %f , %f\n",i, xpos[i], ypos[i]);
        i++;
        }
    }

    for(i=0; i<500;i++)
    {
        line( ((maxx*(xpos[i]/x_max))/2)+1, ((maxy-(maxy*(ypos[i]/y_max)))/2),
        ((maxx*(xpos[i+1]/x_max))/2)+1, ((maxy-(maxy*(ypos[i+1]/y_max)))/2) );
    }
//  cout<<"\nMax X: "<<x_max<<" , "<<"Max Y: "<<y_max;
//  cout<<"\nPress any key!\n";
    getch();
    cleardevice();
    closegraph();
    return;
//    Quit();
}


//////////////////////////////////////////////////////////
//    Funktionen der finder x og y-koordinaterne, samt    //
//    distance range for et trace                            //
//////////////////////////////////////////////////////////
void Search_file(char *filnavn)
{
    char string[1024];
    char *r, *t, *p;
    int coordinates = 0;

    //    FILE *stream=fopen(filnavn,"r");
    stream = fopen(filnavn, "r");    //Åbner filen bestemt af *filnavn
    if (!stream)    //Hvis filen ikke kan åbnes skrives
    {                //fejlmeddelse til skærmen, og programmet afsluttes
        cout<<"Could not open file: \""<<filnavn<<"\"..."<<endl;
        return;
    }

    //Kalder funktionen Seek, med "DISTANCE_RANGE" som søgestreng
    r = Seek(stream,"DISTANCE_RANGE:");
    if (!r)            //Hvis r ikke kan findes, skrives
    {                //fejlmeddelse til skærmen, og programmet afsluttes
        cout<<"Could not find \"DISTANCE_RANGE:\"..."<<endl;
        return;    //afslutter funktionen hvis s›gestrengen ikke blev fundet
    }
    sscanf(r,"DISTANCE_RANGE: %f km",&range);
    //S›ger efter DISTANCE_RANGE i stream gemmen pointeren r
    delete[] r;    //pointeren t bliver nedlagt igen, frigiver hukommelsen af r

    //Kalder funktionen Seek, med "PULSE_WIDTH:" som søgestreng
    p = Seek(stream,"PULSE_WIDTH:");
    if (!p)            //Hvis r ikke kan findes, skrives
    {                //fejlmeddelse til skærmen, og programmet afsluttes
        cout<<"Could not find \"PULSE_WIDTH:\"..."<<endl;
        return;
    }
    sscanf(p,"PULSE_WIDTH: %f ns",&pulse);
    //S›ger efter PULSE_WIDTH i stream gemmen pointeren p
    delete[] p;    //pointeren t bliver nedlagt igen, frigiver hukommelsen af p

    //Kalder funktionen Seek, med "POS(km)  VAL(dB)" som søgestreng
    t = Seek(stream,"POS(km)  VAL(dB)");
    if (!t)            //Hvis t ikke kan findes, skrives
    {                //fejlmeddelse til skærmen, og programmet afsluttes
        cout<<"Could not find \"POS(km)  VAL(dB)\"..."<<endl;
        return;
    }
    delete[] t;    //pointeren t bliver nedlagt igen, frigiver hukommelsen af t

    while (fgets(string,1023,stream))
    {
        if (string[0]>31) // Ignorér tomme linier (de begynder med newline, som er <32)
        {
        float x,y;
        sscanf(string,"%f %f",&x,&y);
//        printf("%f , %f\n",x,y); //TEST
//        getch();                //TEST
        x_max=Max_value(x_max,x);
        y_max=Max_value(y_max,y);
        xpos[coordinates]=x; ypos[coordinates]=y; coordinates++;
        }
    }
    Graf(filnavn, x_max, y_max);
//    Skriv(x_max, y_max, range, coordinates, pulse);  //TESTUDSKRIFTER
    printf("Distance range: %2.3f km\n", range);
    printf("Pulse width: %2.0f ns\n\n", pulse);
    cout<<"\tX max: "<<x_max<<endl;
    cout<<"\tY max: "<<y_max<<endl;
    cout<<"\nCoordinates found: "<<coordinates<<endl;
    getch();
    return;
}


//////////////////////////////////////////////////////////
//    Spørger bruger efter fil som skal behandles            //
//////////////////////////////////////////////////////////
char Enter_file(void)
{
    char filnavn[80];
    cout<<"Please enter path & filename: ";
    cin>>filnavn;
    return filnavn[80];
}

//////////////////////////////////////////////////////////
// Leder et dir bestemt af brugeren igennem for filer    //
// af en bestemt extension, ogs† bestemt af brugeren    //
//////////////////////////////////////////////////////////
int Dir_filer(void)
{
    struct ffblk ffblk;
    int done;
    char c;
    char filnavn[80]="c:\\otdr\\files.dat";
    char sti[70];
    char ext[10]="*.asc";
    char opens[75];

    clrscr();
//    clearviewport();
//    outtextxy(2,12, "Please enter path: (eg. d:\\otdr\\): ");
    cout<<"Please enter path for files:"<<endl;
    cout<<"(eg. n:\\Tad\\Edd\\Measurements\\Test1\\)"<<endl;
    cout<<"Path: ";
    cin>>sti;
    strcpy(opens, sti);
    strcat(opens, ext);
//    outtextxy(2,22, "Files will be retrieved from: ");
//    outtextxy(20,32, opens);


    fstream in(filnavn, ios::out);
    if (!in)
        cerr<<"Unabel to open file: "<<filnavn<<" for input!";
    else
    {
        clrscr();
        cout<<"Files to analyse: \n";
        done = findfirst(opens,&ffblk,0);
        while (!done)
        {
            printf("  %s\n", ffblk.ff_name);
            ofstream out(filnavn,ios::out|ios::app);
            if(!out)
                cerr<<"Unabel to open file: "<<filnavn<<" for output!";
            out.write(sti, strlen(sti));
            out.write(ffblk.ff_name, strlen(ffblk.ff_name));
            out.write("\n",1);
            while(out&&in.get(c))
                out.put(c);
            out.close();
            done = findnext(&ffblk);
        }
    }
    cout<<"\nPress any key to continue analyse.\n";
    getch();
    in.close();
    return (0);
}

//////////////////////////////////////////////////////////
//    Start p† menu funktionen, denne funktion lader         //
//    brugeren v‘lge den programk›rsel der passer ham        //
//    bedst.                                                   //
//    MENU (u)                                            //
//////////////////////////////////////////////////////////
Menu()
{
    char ch=0;
//    setviewport(0,0,320,240,1);
    do
    {
        clrscr();
//        clearviewport();
//        rectangle(0,0,320,240);
//        outtextxy(2,2, "(A)utomode");
        cout<<"(A)utomode"<<endl;
//        outtextxy(2,12, "(M)anual mode");
        cout<<"(M)anual mode"<<endl;
//        outtextxy(2,22, "This was a mistake I (Q)uit!");
        cout<<"This was a mistake I (Q)uit!"<<endl;
//        outtextxy(2,40, "Please choose mode: ");
        cout<<"\nPlease choose mode: ";
        ch = getch();
    }
    while(!strchr("amq", tolower(ch)));

    if(tolower(ch)=='q')
    {
        return tolower(ch);
    }
/////////////////AUTO MODE/////////////////////////
    if(tolower(ch)=='a')
    {
        clrscr();
//        clearviewport();
        do
        {
//            rectangle(0,0,320,240);
//            outtextxy(2,47,"Main men(U)");
            cout<<"Main men(U)"<<endl<<endl;
//            outtextxy(2,2,"S(I)ngle trace analysis");
            cout<<"S(I)ngle trace analysis"<<endl;
//            outtextxy(2,12,"Quick si(N)gle trace analysis");
            cout<<"Quick si(N)gle trace analysis"<<endl;
//            outtextxy(2,22,"Dual trace (C)omparison");
            cout<<"Dual trace (C)omparison"<<endl;
//            outtextxy(2,32,"Quick dual trace c(O)mparison");
            cout<<"Quick dual trace c(O)mparison"<<endl;
//            outtextxy(2,57,"(Q)uit program");
            cout<<"(Q)uit program"<<endl;
//            outtextxy(2,72,"Please choose: ");
            cout<<"\nPlease choose: ";
            ch = getch();

        }
    while(!strchr("cinoqu", tolower(ch)));
    }
////////////////MANUAL MODE///////////////////////
    else if(tolower(ch)=='m')
    {
        clrscr();
//        clearviewport();
        do
        {
//            rectangle(0,0,320,240);
//            outtextxy(2,27,"Main men(U)");
            cout<<"Main men(U)"<<endl<<endl;
//            outtextxy(2,2,"(S)ingle trace analysis");
            cout<<"(S)ingle trace analysis"<<endl;
//            outtextxy(2,12,"(D)ual trace comparison");
            cout<<"(D)ual trace comparison"<<endl;
//            outtextxy(2,37,"(Q)uit program");
            cout<<"(Q)uit program"<<endl;
//            outtextxy(2,52,"Please choose: ");
            cout<<"\nPlease choose: "<<endl;
            ch = getch();
        }
    while(!strchr("dqsu", tolower(ch)));
    }
    return tolower(ch);
}


//////////////////////////////////////////////////
//    int Auto_Dual()                            //
//    Dette er til automatisk analyse af traces    //
//    angivet af et bruger defineret bibliotek.    //
//    QUICK MODE, uden grafik                        //
//    MENU (c)                                    //
//////////////////////////////////////////////////
int Auto_Dual()
{
    clrscr();
//    cleardevice();
    cout<<"This is the Auto Dual function!!\n";
    cout<<"Press any key!";
//    outtextxy(0,0,"Dette er Auto_Dual funktionen!!");
//    outtextxy(0,10,"Tryk en tast!");
    getch();
    return 0;
}


//////////////////////////////////////////////////
//    int Auto_Dual_Graf()                        //
//    Dette er den automatiske trace analyse med    //
//    grafisk fremstilling og delay. Defineret af    //
//    bruger, biblioteksbestemmelse.                //
//    MENU (o)                                    //
//////////////////////////////////////////////////
int Auto_Dual_Graf()
{
    clrscr();
//    cleardevice();
    cout<<"This is the Auto Dual Graf function!!\n";
    cout<<"Press any key!";
//    outtextxy(0,0,"Dette er Auto_Dual_Graf funktionen!!");
//    outtextxy(0,10,"Tryk en tast!");
    getch();
    return 0;
}


//////////////////////////////////////////////////
//    int Auto_Single()                            //
//    Automatisk analyse af single trace filer,     //
//    een fil ad gangen, QUICK MODE uden grafik     //
//    Brugerdefineret bibliotek, samt delay        //
//    MENU (n)                                    //
//////////////////////////////////////////////////
int Auto_Single()
{
    Dir_filer();    //leder efter alle filer i dir!

    int i=0;
    char filnavn[80];
//    int pts=0;
    char str[1024];
    FILE *test=fopen("c:\\otdr\\files.dat","r");
    if(!test)
    {
        cout<<"File "<<test<<" not found\n";
        cout<<"Make sure your permittet to write to disk!"<<endl;
        cout<<"Press any key!";
        getch();
        return 0;
    }
    clrscr();
    cout<<"Files opend!"<<endl<<endl;
    while(fgets(str, 1023, test))
    {
        if(str[0]>31)
        {
            sscanf(str,"%s", &filnavn);
            i++;
            skriv(filnavn,i);
        }
    }
    cout<<"\nFiles processed: "<<i<<endl;
    return 0;
}


//////////////////////////////////////////////////////
//    int Auto_Single_Graf()                          //
//    Auto analyse af single, inkl. grafik og delay    //
//    Brugerdefineret bibliotek samt delay            //
//    MENU (i)                                        //
//////////////////////////////////////////////////////
int Auto_Single_Graf()
{
    clrscr();
//    cleardevice();
//    outtextxy(0,0,"Auto Single Graf function!!");
//    getch();
    cout<<"Auto Single Graf function!!\n";
    cout<<"Press any key!";
    getch();
    return 0;
}


//////////////////////////////////////////////////////
//    int Manual_Dual()                                //
//    Manuel indtastning af begge filer, med mulighed    //
//    for grafik.                                        //
//    MENU (d)                                        //
//////////////////////////////////////////////////////
int Manual_Dual()
{
//    cleardevice();
//    outtextxy(0,0,"Dette er Manual_Dual funktionen!!");
//    outtextxy(0,10,"Tryk en tast!");
    clrscr();
    cout<<"This is the Manual Dual function!!\n";
    cout<<"Press any key!";
    getch();
    return 0;
}


//////////////////////////////////////////////////////
//    int Manual_Single()                                //
//    Manuel valg af sti og fil til analyse. Valg af    //
//    grafik, samt gr‘nsev‘rdier for fejlfinding        //
//    MENU (s)                                        //
//////////////////////////////////////////////////////
int Manual_Single()
{
//    cleardevice();
//    outtextxy(0,0,"Dette er Manual_Single funktionen!!");
//    outtextxy(0,10,"Tryk en tast!");
    clrscr();
    cout<<"This is the Manual Single function!!\n";
    cout<<"Press any key!";
    getch();
    return 0;
}


//////////////////////////////////////////////////////////
//    Main, kalder funktionen scan, og overf›rer filen    //
//    som scan skal scanne igennem og finde v‘rider i.    //
//////////////////////////////////////////////////////////
int main(void)
{/*
Auto_Single();
return 0;
} */
//    int fejl;
//    float maxx, maxy;
//    int driver, mode;
//    driver = DETECT;
//    initgraph(&driver, &mode, "c:\\temp");
//    fejl = graphresult();
//    if (fejl)
//    {
//        cout<<"\nError no.: "<<fejl;
//        cout<<"\n"<<grapherrormsg(fejl);
//        exit(0);
//    }
//    maxx = getmaxx();
//    maxy = getmaxy();
//    setcolor(1);
//    cleardevice();
//    clrscr();
//    Search_file("d:\\t.txt");
//    Enter_file();
//    getch();

    for(;;)
    {
        switch(Menu())
        {
        case 'c': Auto_Dual(); break;
        case 'd': Manual_Dual(); break;
        case 'i': Auto_Single_Graf(); break;
        case 'o': Auto_Dual_Graf(); break;
        case 'q': Quit(); break;
        case 's': Manual_Single(); break;
        case 'n': Auto_Single(); break;
        case 'u': Menu(); break;
        }
    }
//    return 0;
}
Avatar billede mobi2 Nybegynder
28. april 2000 - 16:25 #1
glemte include filerne:
#include<dos.h>
#include<dir.h>
#include<conio.h>
#include<ctype.h>
#include<fstream.h>
#include<graphics.h>
#include<iostream.h>
#include<math.h>
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#include<time.h>

Tak på forhånd!
Avatar billede roadkill Nybegynder
28. april 2000 - 17:41 #2
Hvis jeg forstår dig ret, så er det, du er ude efter, at:

1) filen alarm.log skal omdøbes til alarmold.log
2) filen alarm.log skal genoprettes med A) alle data fra den gamle fil + alle nye data.

Dette er ret så nemt at lave:
1) Istedet for at rename alarm.log til alarmold.log, så kopier alarm.log til alarmold.log : system ("copy .......");
2) Åbn alarm.log appending, fx med FILE *stream=fopen("alarm.log","a");
3) Skriv de nye indgange til filen og luk den.

Nu har du alarmold.log med gamle data og alarm.log med gamle+nye data
Avatar billede mobi2 Nybegynder
29. april 2000 - 09:37 #3
Det er også rigtigt nok, men jeg havde en eller anden tosset ide om at jeg kunne skrive til toppen af filen, så de sidst nye data altid stod først for når man åbnede filen, og ikke i bunden, som det er tilfældet med append. Den kode jeg har skrevet, har af mærkelige årsager virket på et tidspunkt, og netop skrevet til toppen, men nu virker de bare ikke, det er sku fustrende.....men jeg tror at jeg bare kryber til korset og skriver i bunden af filen, så har jeg ingen problemer med det mere da. takker for hjælpen
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester