error: connot convert 'Datensatz' to 'int' for argument '1' to void speicherdaten (int) ERLEDIGT!!!



  • Guten Abend,
    ich möchte gerne einen Datensatz vergleichen (kommt später noch) und wenn er nicht doppelt ist ( kommt auch noch später (hoffe ich 🙂 )) diesen dann in void abspeichern. Nun wollte ich gerne diese funktoion (einlesen prüfen und gegebenfalls erneuern) in eine zusammen stellen. Aber wie bekomme ich bitte nun den Datensatz der Datenjalousie in da rein ?. er meldet mir ja "kann nicht den Datensatz für den ersten parameter umformen" oder so ähnlich.

    /************************************************************************
     * Datensatz freigeben / kompletten Datensatz im meinstream erstellen / *
     * dynamischen Speicher erstellen / prueffen und bei aenderung speichern*		       	                *
     ************************************************************************/
    /*** Datensatz freigeben ***/
    class Datensatz
    	{
    	   int type;  // 01 = Jalousie, 02 = Steckdosen, 03 = Licht, 04 = Aussen
    	   int number; // Welcher Eingang (bei Jalousie z.b 0-7)
    	   int count; // Anzahl der Schaltzeiten am tag (0-9)
    	   int status; // Zustand Aus/An bzw Auf/ab (0/1)
    	   int day; // Welcher Tag (1 -7 wo Montag 1)
    	   int time; // Uhrzeit
    
    	 public:
    	   Datensatz (int art, int nummer, int anzahl, int zustand, int tag, int zeit)
    		{
    		 type = art; number = nummer; count = anzahl;
    		 status = zustand; day = tag; time = zeit;;
    		}
    	   friend ostream &operator<<(ostream &out, const Datensatz &Ds); //darf auf privat im class zugreifen (friend)
    	};
    
    /*** Dynamischen Speicher erstellen *** 
     * vector ist die Schablone (welches ein dynamsiches Feld erzeugt)           *
     * <Datensatz> ist der Typ der Elemente (int, chat usw) hier int             *
     * da Datensatz im struct int hat (struct kann auch unterschiedlich sein.    *
     * hier "dynSpeicher" ist ein globales objekt (im ganzen progamm )           */
    vector <Datensatz> dynSpeicher; 
    
    /*** kompletten Datensatz erstellen (Aussehen) ***
     * ostream ist eine Funktion mit der man hier den (Verweis auf)Operator <<   *
     * ueberlaedt. Es werden die Daten aus dem Datensatz gelesen und in          *
     * gewuenschter Ausgabe georndet ausgegeben. unbedint const sonst Fehler     */
    ostream &operator<<(ostream &out, const Datensatz &ds)
    	{
    	 out <<ds.type <<ds.number <<ds.count
    	     <<ds.status <<ds.day <<ds.time<<"test";
    	 return out;
    	}
    
    /*** Datensatz vergleichen und wenn unterschiedlich dann speichern ***/
    void speicherdaten (int erhalteDatensatz)
    	{
    	 ofstream speicherdatei ("zeitdaten.txt");
    	 copy (dynSpeicher.begin(),dynSpeicher.end(),
    	       ostream_iterator<Datensatz>(speicherdatei,"\n"));
    	}
    

    hier werden die daten übergeben

    //***** Jalousiezeiten eingabe *****
    void jalousiezeiten()
    	{
    	 char jalouzeiten[7];
    	 echo();
    	 for (uint16_t i = 10; i < 19; i++) // Anzahl der Jalousien
    	    {
    	     for (uint16_t ii = 0; ii < 14; ii++) // 14 Schaltzeiten rauf/runter pro woche (2 am tag)
    	        {
    	         bool eingabepruefung = true;
    	         while (eingabepruefung)
    	            {
    	             mvwaddstr(wjalouschalt, ii+1, 20, "       <--");
     		     mvwgetnstr(wjalouschalt, ii+1, 20, jalouzeiten, 6);
    		     mvwaddstr(wjalouschalt, ii+1, 27, "   ");
    		     eingabecheck(jalouzeiten);
    		     eingabepruefung = !eingabecheck(jalouzeiten);
    		    }
    	  	 int zeitja = atoi(jalouzeiten);
    	  	 int zustandja;
    		 int tagja = (ii/2) + 1;
    		 if (ii%2 == 0)
    		   {zustandja = 0;} // Setzte 0 fuer Jalousie auf
    		 else
    		   {zustandja = 1;} // Setzte 1 fuer Jalousie ab
    		 Datensatz Datenjalousie(1,i,1,zustandja,tagja,zeitja);		 
    		 speicherdaten(Datenjalousie);
    		}
    	    }
    	 noecho();
    	}
    

    könnte ein wenig hilfe gebrauchen 🤡

    mus ich erst den datensatz Datenjalousie nach string ändern ?? und dann void (string)



  • Also ich weiss ja nicht, wies anderen geht, aber ich bräuchte da noch ein paar Infos, wie die genaue Fehlermeldung wäre schön.. 😋



  • also das ist die genau Fehlermeldung die in der überschrift steht bzw da kommt noch die zeile hinzu und das ist hier im code die Zeile 27 aus der
    ******Jalousiezeiten eingabe******



  • Also ich sehe da nur, dass Datensatz nicht gleich dem Typ von int ist...

    Aber das hast du bestimmt auch schon gemerkt, also was ist das Problem?



  • Nun ich habe mir wohl gedacht das es nicht mehr typ int ist der datensatz. Aber string ist er doch auch nicht oder ? weil ändere ich void speicherdaten(string) so um dann erwartet er eine convertierung in nicht zeilenaufgeteilten zeilen typ
    (wenn ich richtig übersetze..sprachen sind nicht ganz mein gebiet)

    error conversion from 'datensatz' to non-scalar typ 'std::string' requested



  • Also ich würde sagen, dass du die Funktion vom Typ Datensatz machst..

    void speicherdaten (Datensatz erhalteDatensatz) ...
    

    Ich weiss ja nicht, was du da von "Datensatz" in ein int umwandeln willst.. 🙄



  • Autsch stimmt ja er übernimmt ja auch z.b bei vector den typ Datensatz.
    Wohl doch zu eckig die augen.
    Bin aber ein anfänger (mal bemerkt) 🙂 nu mus ich nur noch sehen wie das andere geht mit im dynspiecher schreiben usw.

    Danke dir aufjeden fall glaube ich hätte heute nich ewig gesucht *g*


Anmelden zum Antworten