Zum Inhalt springen

C++ Protokoll / History ertellen


loopi123

Empfohlene Beiträge

Hallo zusammen.

Ich bin ein Neuling auf dem Gebiet Programmieren.

Jedoch habe ich schon ziehmlich etwas Programmiert.

Mein Programm läuft einwand frei, doch mit dem einbinden der Protokolldatei klappt es nicht so ganz.

Mein Graph wird von einem Button aus gestartet der im Intervall vom Timer9 aktualisiert wird.

void __fastcall TForm1::Timer9Timer(TObject *Sender)

{

PerformanceGraph1->DataPoint(clRed,Data1);

PerformanceGraph1->DataPoint(clBlue,Data2);

PerformanceGraph1->DataPoint(clYellow,ReadAllDigital()*15);

PerformanceGraph1->Update();

}

//---------------------------------------------------------------------------

void __fastcall TForm1::Button2Click(TObject *Sender)

{

stop=!stop;

if (stop){

Button2->Caption = "Break";

Timer9->Enabled =true;

Label24->Visible = true;

}

else {

Button2->Caption = "Run";

Timer9->Enabled =false;

Label24->Visible = false;

}

}

//---------------------------------------------------------------------------

nun möchte ich diesne Simplen Quelltext ins Prog integrieren. und im gleichen intervall wie der timer9 aktualisieren

#include <fstream>

#include <iostream>

#include <time.h>

using namespace std;

int main()

{

ofstream cout;

cout.open("logfile "__DATE__".csv");

cout << "Datum,";

cout << "Zeit,";

cout << "Data1," ;

cout << "Data2"<< endl ;

cout << __DATE__",";

cout << __TIME__",";

cout << "Wert vom Data1,";

cout << "Wert vom Data2"<<endl;

cout.close();

return 0;

}

Als einzelnes Prog klappt es gut, doch das mit dem einbinden und deklarieren... naja...

kann mir jemand helfen?

Mfg

Loopi

Link zu diesem Kommentar
Auf anderen Seiten teilen

Als einzelnes Prog klappt es gut
Ich wage zu bezweifeln, dass du eine ofstream-Variable namens cout anlegen kannst. Eine Variable dieses Namens gibt es nämlich schon.

kann mir jemand helfen?
Wenn du eine bessere Fehlerbeschreibung als "naja..." lieferst, sicher.

Ach ja, falsches Forum. Verschoben -> C++: Compiler, IDEs, APIs

Link zu diesem Kommentar
Auf anderen Seiten teilen

das ist auch das Problem. Ich weiss nicht wie und wo ich das Programm einbinden soll, dass es auch die "richtige" Fehlermeldung anzeigt.

Ich versuche das ganze in die If anweisung einzubinden...?

void __fastcall TForm1::Button2Click(TObject *Sender)

{

stop=!stop;

if (stop){

Button2->Caption = "Break";

Timer9->Enabled =true;

Label24->Visible = true;

using namespace std;

int main()

{

ofstream cout;

cout.open("logfile "__DATE__".csv");

cout << "Datum,";

cout << "Zeit,";

cout << "Data1," ;

cout << "Data2"<< endl ;

cout << __DATE__",";

cout << __TIME__",";

cout << "Wert vom Data1,";

cout << "Wert vom Data2"<<endl;

cout.close();

return 0;

}

}

else {

Button2->Caption = "Run";

Timer9->Enabled =false;

Label24->Visible = false;

}

}

//---------------------------------------------------------------------------

und

#include <fstream>

#include <iostream>

#include <time.h>

habe ich im Kopf des Prog. eingefügt....:rolleyes:

ist das korrekt?

Könntest du mir ein mal ein zusammengefasstes Beispiel schreiben?

gruss loopi

Link zu diesem Kommentar
Auf anderen Seiten teilen

Ich wage zu bezweifeln, dass du eine ofstream-Variable namens cout anlegen kannst. Eine Variable dieses Namens gibt es nämlich schon.

In einem neuen Bereich kann er das schon. Die andere Variable ist dann natürlich nicht mehr unter dem Namen sichtbar, man kann sie in seinem Fall aber über den kompletten Namen mit vorangestelltem Namespace erreichen.

Link zu diesem Kommentar
Auf anderen Seiten teilen

hi Bubble. Danke für deinen Eintrag.

Ich habe leider ein grösseres Brett vor dem Kopf...:upps

bevor ich mich hier weiter in Probleme:old könnte ein netter User mir einen Lösungsansatz vorschlagen.:confused::rolleyes:

p.s. würde sogar das Projekt zur Verfügung stellen

Ich werde wohl nie Programmierer....:helau:

greetz loopi

Link zu diesem Kommentar
Auf anderen Seiten teilen

ist das so nicht möglich?

void __fastcall TForm1::Timer9Timer(TObject *Sender)

{

using namespace std;

PerformanceGraph1->DataPoint(clRed,Data1);

PerformanceGraph1->DataPoint(clBlue,Data2);

PerformanceGraph1->DataPoint(clYellow,ReadAllDigital()*15);

PerformanceGraph1->Update();

ofstream cout;

cout.open("logfile "__DATE__".csv", ofstream::cout | ofstream::app);

cout << "Datum,";

cout << "Zeit,";

cout << "Data1," ;

cout << "Data2"<< endl ;

cout << __DATE__",";

cout << __TIME__",";

cout << "Wert vom Data1,";

cout << "Wert vom Data2"<<endl;

cout.close();

}

//----------------------------------------

Fehlermeldung:

[C++ Fehler] Unit1.cpp(392): E2451 Undefiniertes Symbol 'cout'

kann ich das nicht definieren?

wenn ja-->wo?:confused:

Link zu diesem Kommentar
Auf anderen Seiten teilen

sorry aber das klappt irgendwie nicht :eek:rolleyes::(

im moment habe ich das problem so "gelöst"

void __fastcall TForm1::Timer10Timer(TObject *Sender)

{

using namespace std;

time_t Zeitstempel;

tm *nun;

Zeitstempel = time(0);

nun = localtime(&Zeitstempel);

ofstream cout;

cout.open("Logfile_"__DATE__".txt", ofstream::out | ofstream::app);

ich weiss.... es ist nicht einfach, wenn man keine ahnung hat :)

Link zu diesem Kommentar
Auf anderen Seiten teilen

im moment habe ich das problem so "gelöst"

void __fastcall TForm1::Timer10Timer(TObject *Sender)

{



  using namespace std;                   



  time_t Zeitstempel;                 

  tm *nun;                               

  Zeitstempel = time(0);             

  nun = localtime(&Zeitstempel);  


  ofstream cout;                       

  cout.open("Logfile_"__DATE__".txt", ofstream::out | ofstream::app);

}
Sieht aus, wie von hier kopiert. folglich eher so:

char * fileName;

asprintf(&fileName, "Logfile_%d%d%d.txt", nun->tm_year+1900,nun->tm_mon+1, nun->tm_mday);

cout.open(fileName, ofstream::out | ofstream::app);

free(fileName);

so oder so ähnlich.

Link zu diesem Kommentar
Auf anderen Seiten teilen

Sieht aus, wie von hier kopiert.

:cool: ja das stimmt, aber deine Lösung scheint mir auch sehr einleuchtend... doch leider versteh ich nicht alles...

wieso machst du asprintf und nicht printf..?

und wieso gibt es mir eine fehlermeldung wie folgt?

[C++ Fehler] Unit1.cpp(469): E2268 Aufruf der undefinierten Funktion 'asprintf'

obwohl ich oben

#include <stdio.h>

deklariert habe?

gruss loopi

Link zu diesem Kommentar
Auf anderen Seiten teilen

wieso machst du asprintf und nicht printf..?

asprintf alloctiert einen Pointer und schreibt eine Zeichenkette rein.

printf gibt eine Zeichenkette aus.

Da ich ja die Zeichenkette weiter unten verwenden will und nur zu faul war jetzt großartig was mit malloc/new zu machen, hab ich die Funktion verwendet.

und wieso gibt es mir eine fehlermeldung wie folgt?

[C++ Fehler] Unit1.cpp(469): E2268 Aufruf der undefinierten Funktion 'asprintf'

Vielleicht kein Linux. :rolleyes:

War ja nur ein Beispiel, wie es ungefähr geht.

Ergo:

__DATE__ wird immer nur beim kompilieren mit dem aktuellen Datum ersetzt.

Ergo2:

Wenn du schon was mit localtime erzeugst, solltest du auch die Variable verwenden.

Link zu diesem Kommentar
Auf anderen Seiten teilen

Dein Kommentar

Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung wiederherstellen

  Nur 75 Emojis sind erlaubt.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...