Funkcja zapisująca do pliku

0

Mam funkcje:

void zapisz1(char *in, char *a)
{
   
    
     String h;

     ofstream plik(in, ios::app);
         plik << a <<endl;
          for (int i=1; i<18; i++)
             {
          h = dynamic_cast<TEdit *>(FindComponent("Edit" + (String)i))->Text;
          plik << h.c_str() << endl;
             }

   
}

Która powinna pobiera nazwe oraz pierwsza linijke i powinna zapisywac do pliku o okreslonej nazwie.
Posluguje sie nia w ten sposob:

char zr1[]="Wydatki_2011.txt";
char zr2[]="Wydatki_2012.txt";
char zr3[]="Wydatki_2013.txt";
char zr4[]="Wydatki_2014.txt";
char zr5[]="Wydatki_2015.txt";
char zr6[]="Wydatki_2016.txt";

char m1[]="Styczeń";
char m2[]="Luty";
char m3[]="Marzec";
char m4[]="Kwiecień";
char m5[]="Maj";
char m6[]="Czerwiec";
char m7[]="Lipiec";
char m8[]="Sierpień";
char m9[]="Wrzesień";
char m10[]="Październik";
char m11[]="Listopad";
char m12[]="Grudzień";
int z=ComboBox1->ItemIndex;
int x=ComboBox2->ItemIndex;

 switch(x)
{
case 0: {

         if (z==0) {TForm1::zapisz1(zr1, m1);}
         if (z==1) {TForm1::zapisz1(zr1, m2);}
         if (z==2) {TForm1::zapisz1(zr1, m3);}
         if (z==3) {TForm1::zapisz1(zr1, m4);}
         if (z==4) {TForm1::zapisz1(zr1, m5);}
         if (z==5) {TForm1::zapisz1(zr1, m6);}
         if (z==6) {TForm1::zapisz1(zr1, m7);}
         if (z==7) {TForm1::zapisz1(zr1, m8);}
         if (z==8) {TForm1::zapisz1(zr1, m9);}
         if (z==9) {TForm1::zapisz1(zr1, m10);}
         if (z==10) {TForm1::zapisz1(zr1, m11);}
         if (z==11) {TForm1::zapisz1(zr1, m12);}

         }
case 1: {
         if (z==0) {TForm1::zapisz1(zr2, m1);}
         if (z==1) {TForm1::zapisz1(zr2, m2);}
         if (z==2) {TForm1::zapisz1(zr2, m3);}
         if (z==3) {TForm1::zapisz1(zr2, m4);}
         if (z==4) {TForm1::zapisz1(zr2, m5);}
         if (z==5) {TForm1::zapisz1(zr2, m6);}
         if (z==6) {TForm1::zapisz1(zr2, m7);}
         if (z==7) {TForm1::zapisz1(zr2, m8);}
         if (z==8) {TForm1::zapisz1(zr2, m9);}
         if (z==9) {TForm1::zapisz1(zr2, m10);}
         if (z==10) {TForm1::zapisz1(zr2, m11);}
         if (z==11) {TForm1::zapisz1(zr2, m12);}

         }
case 2: {
         if (z==0) {TForm1::zapisz1(zr3, m1);}
         if (z==1) {TForm1::zapisz1(zr3, m2);}
         if (z==2) {TForm1::zapisz1(zr3, m3);}
         if (z==3) {TForm1::zapisz1(zr3, m4);}
         if (z==4) {TForm1::zapisz1(zr3, m5);}
         if (z==5) {TForm1::zapisz1(zr3, m6);}
         if (z==6) {TForm1::zapisz1(zr3, m7);}
         if (z==7) {TForm1::zapisz1(zr3, m8);}
         if (z==8) {TForm1::zapisz1(zr3, m9);}
         if (z==9) {TForm1::zapisz1(zr3, m10);}
         if (z==10) {TForm1::zapisz1(zr3, m11);}
         if (z==11) {TForm1::zapisz1(zr3, m12);}

         }
case 3: {
         if (z==0) {TForm1::zapisz1(zr4, m1);}
         if (z==1) {TForm1::zapisz1(zr4, m2);}
         if (z==2) {TForm1::zapisz1(zr4, m3);}
         if (z==3) {TForm1::zapisz1(zr4, m4);}
         if (z==4) {TForm1::zapisz1(zr4, m5);}
         if (z==5) {TForm1::zapisz1(zr4, m6);}
         if (z==6) {TForm1::zapisz1(zr4, m7);}
         if (z==7) {TForm1::zapisz1(zr4, m8);}
         if (z==8) {TForm1::zapisz1(zr4, m9);}
         if (z==9) {TForm1::zapisz1(zr4, m10);}
         if (z==10) {TForm1::zapisz1(zr4, m11);}
         if (z==11) {TForm1::zapisz1(zr4, m12);}

         }
case 4: {
         if (z==0) {TForm1::zapisz1(zr5, m1);}
         if (z==1) {TForm1::zapisz1(zr5, m2);}
         if (z==2) {TForm1::zapisz1(zr5, m3);}
         if (z==3) {TForm1::zapisz1(zr5, m4);}
         if (z==4) {TForm1::zapisz1(zr5, m5);}
         if (z==5) {TForm1::zapisz1(zr5, m6);}
         if (z==6) {TForm1::zapisz1(zr5, m7);}
         if (z==7) {TForm1::zapisz1(zr5, m8);}
         if (z==8) {TForm1::zapisz1(zr5, m9);}
         if (z==9) {TForm1::zapisz1(zr5, m10);}
         if (z==10) {TForm1::zapisz1(zr5, m11);}
         if (z==11) {TForm1::zapisz1(zr5, m12);}

         }
case 5: {
         if (z==0) {TForm1::zapisz1(zr6, m1);}
         if (z==1) {TForm1::zapisz1(zr6, m2);}
         if (z==2) {TForm1::zapisz1(zr6, m3);}
         if (z==3) {TForm1::zapisz1(zr6, m4);}
         if (z==4) {TForm1::zapisz1(zr6, m5);}
         if (z==5) {TForm1::zapisz1(zr6, m6);}
         if (z==6) {TForm1::zapisz1(zr6, m7);}
         if (z==7) {TForm1::zapisz1(zr6, m8);}
         if (z==8) {TForm1::zapisz1(zr6, m9);}
         if (z==9) {TForm1::zapisz1(zr6, m10);}
         if (z==10) {TForm1::zapisz1(zr6, m11);}
         if (z==11) {TForm1::zapisz1(zr6, m12);}
        }
}
 

Funkcja faktycznie otwiera plik i wstawia w pierwszej linijce wymagana wartość, lecz w przypadku gdy plik nie istnieje funkcja tworzy plik dla kazdego z wariantow zr* . A powinna tworzyć wylacznie dla jednego .... nie wiem co z tym fantem zrobic wiec prosze o pomoc.
Z góry dziękuję.

1

Po pierwsze zmniejszyć ilość kodu:

char *zr[]={"Wydatki_2011.txt","Wydatki_2012.txt","Wydatki_2013.txt","Wydatki_2014.txt","Wydatki_2015.txt","Wydatki_2016.txt"};
char *ms[]={"Styczeń","Luty","Marzec","Kwiecień","Maj","Czerwiec","Lipiec","Sierpień","Wrzesień","Październik","Listopad","Grudzień"};
int z=ComboBox1->ItemIndex;
int x=ComboBox2->ItemIndex;
TForm1::zapisz1(zr[z], ms[x]);

Problem masz przez brak break'ów przy każdym case.

1 użytkowników online, w tym zalogowanych: 0, gości: 1