Newsgroup: it.comp.lang.c++
Titolo: [classi] qualcosa nn va....

Ho ancora problemi con il programmillo che sto cercando di fare...
adesso la classe funziona, ma se cerco di crearne un'altra mi si intrippa
con il nome del file....
il main è questo
int main()
{
        clrscr();
        Anno anno_2001("2001");
        anno_2001.ShowT(2, 1);
        getch();
        Anno anno_2000("2000");
        anno_2000.ShowT(2, 1);
        getch();
        return 0;
}
mentre il nome di file viene composto dal costruttore:
Anno::Anno(char* _anno):
    AnnoN(_anno)
    {
        FileName = "";
        FileName = "    ";
        char* pre = "extr";
        char* ext = ".txt";
//        char* dir = "extr\\";
        strncpy(FileName, pre, 4);
        strncat(FileName, AnnoN, 4);
        strncat(FileName, ext, 4);
//        strncat(FileName, dir, 5);
        Mask = "| ##-##-##-##-## |";
        FillTabs();
    }
in uscita ho questo (con messaggini per il debug, per capire che
succede....)
 26 59 60 67 17
 13 83 16 41 68
 33 87 76  7 10
  5 38  3 65 72
 62 30  7 61 52
 25 38 15 31 86
 15 56 89 85 63
 41 17 80 48  9
 42 16 12 60 20
 51 84 76 42 90
Extrazione numero 1 dell'anno 2001
extr2001.txt
  0  0  0  0  0
  0  0  0  0  0
  0  0  0  0  0
  0  0  0  0  0
  0  0  0  0  0
  0  0  0  0  0
  0  0  0  0  0
  0  0  0  0  0
  0  0  0  0  0
  0  0  0  0  0
Extrazione numero 1 dell'anno 2000
001.2001.txt2000xt20
Non capisco perchè si incasina con la stringa del nomefile....qualcuno mi
"corregge il compito", o mi da un metodo alternativo per compilare il
nomefile?
graaazie!
Raffaele

         strncat(FileName, ext, 4);
Sembra che tu non abbia compreso quali sono i prerequisiti per poter
impiegare le varie funzioni str*. Direi che dovresti rivederti sul tuo
manuale 1) cosa sono i letterali stringa, 2) cosa succede quando "assegni"
un letterale stringa a una variabile di tipo char*.
Nel frattempo, evita di usare strcpy & co (che comunque in C++ non ha
alcun senso utilizzare). Dichiara AnnoN e FileName come std::string e
riscrivi il ctor di Anno in questo modo:
 Anno::Anno( const std::string& anno )
    :    AnnoN( anno )
  {
          FileName = "extr";
          FileName += AnnoN;
          FileName += ".txt";
  }
Max


in effetti sono mooooolto un principiante...devo studiare ancora parecchio!
grazie per la dritta!
Raffale

 riscrivi il ctor di Anno in questo modo:
io l'ho fatto ma mi dice
declaration terminated incorrectly
in corrispondenza del :: di std::string
nell'help del builder 3 nn riesco trovare traccia di spiegazioni a
riguardo...
è un problema di compilatore, di header o cosa?
mò provo con il gcc per win...
Raffaele

 mò provo con il gcc per win...
Credo che molti in questo NG ti suggerirebbero di usare il Dev-C++.
Max


infatti, credo proprio che butterò builder 3...solo che avevo questo a
portata di zampa, e ho provato...
grazie cmq
Raffaele

 una roba antidiluviana.
Decisamente...
Quantomeno val la pena di scaricarsi il
Borland C++ compiler 5.5 dal sito della Borland.
O, se si ha la possiblità, tutto il Borland C++ Compiler 6 Trial
che scade dopo un paio di mesi... ma il compiler (5.6)
te lo lascia :-))
--
Gerolamo

 ha scritto nel messaggio
news:Qluv9.90605$RO.23...@twister1.libero.it...

Dopo che ho finito di scaricare kylix 3 scarico pure quello, se ho
voglia....
Raffaele