2009-03-17, 01:09
#1
Först öppnas filen artikel_databas.txt sedan kollas om den går att öppna med (!infil.good()). Självklart finns filen redan och den går vidare till nästa del.
Efter första inmatningen av ny artikel och när den har skrivit ut tecknena till filen och sedan stänger den så när man då ska lägga in en ny artikel så loopas hela processen om igen då den ska kolla ifall artikel_databas.txt finns, och det är nu på andra försöket som den går in i felläge och säger att filen inte finns. Självklart finns filen kvar men jag fattar inte varför den hoppar över numera. Den här koden funkade prima ballerina innan
.
Efter första inmatningen av ny artikel och när den har skrivit ut tecknena till filen och sedan stänger den så när man då ska lägga in en ny artikel så loopas hela processen om igen då den ska kolla ifall artikel_databas.txt finns, och det är nu på andra försöket som den går in i felläge och säger att filen inte finns. Självklart finns filen kvar men jag fattar inte varför den hoppar över numera. Den här koden funkade prima ballerina innan

Kod:
void nya_artiklar()
{
int iArtNr=0, iArtikelSlumpNr=1002, iHittat=0; // Deklarationer
char kArtNmn[20] = "";
double dArtPris=0;
ifstream infil;
ofstream utfil;
do
{
cin.ignore(); // Efter valet behöver jag slänga bort värdet
system("cls");
artreg_rubrik();
iHittat=0;
srand((unsigned) time(0)); // Initiera slumptalsgeneratorn
iArtikelSlumpNr = rand()%9999+1; // Slumpa ut ett artikelnummer
infil.open("artikel_databas.txt",ios::in); // Öppnar filen
if (!infil.good()) // Kollar om filen finns eller går att öppna
{
system("cls");
artreg_rubrik();
fel_msg_artikel(); // Anropar felmeddelandet för artikel_databas.txt
rename("artikel_databas.txt", "artikel_databas.BAK.txt");
utfil.open("artikel_databas.txt",ios::out);
utfil.close();
tryck_enter();
cin.get();
break;
}
while(infil >> iArtNr >> kArtNmn >> dArtPris) // Går igenom alla artikelnummer
{
if(iArtNr == iArtikelSlumpNr) // Kollar om den hittar numret i "artikel_databas.txt"
{
iHittat=1; // Loopen avbryts och börjar om igen för att slumpa fram nytt nr
infil.close(); // Stänger filen.
break;
}
}
infil.close();
if(iHittat == 1) // Användaren får mata in övrig data
break;
cout << "\n Ange artikelinformation nedan (0 = Avsluta)\n\n";
cout << " Artikelnummer [" << iArtikelSlumpNr << "]\n";
cout << " ==================== " << endl << endl;
cout << " Artikelnamn: ";
cin.getline(kArtNmn,19);
if(kArtNmn[0] == '0') // Hoppar över skrivning till fil om man avbryter med 0
break;
cout << " Artikelpris: ";
cin >> dArtPris;
if (dArtPris == 0) // Hoppar över skrivning till fil om man avbryter med 0
break;
utfil.open("artikel_databas.txt",ios::out|ios::app);// Öppnar filen
// Skriver in all inmatad data till filen
utfil << iArtikelSlumpNr << endl << kArtNmn << endl << dArtPris << endl;
utfil.close(); // Stänger filen
} while(iHittat || !iHittat); // Upprepa hela processen tills användaren avbryter med 0
system("cls");
}
__________________
Senast redigerad av Moodilic 2009-03-17 kl. 01:48.
Senast redigerad av Moodilic 2009-03-17 kl. 01:48.