Fehler im Programmcode
-
Ich hab das jetzt gemacht aber jetzt kommt wieder diese Fehlermeldung:
[C++ Fehler] Test_u.cpp(27): E2451 Undefiniertes Symbol 'tmrFahrt'
-
Leg dich fest, ob es tmrFahrt oder timerFahrt heißen soll!
-
hab ich...das wahren zwei verschiedene dateien ..... in dieser datei heist die komponente tmrFahrt
-
Barnibas schrieb:
hab ich...das wahren zwei verschiedene dateien ..... in dieser datei heist die komponente tmrFahrt
Soll das denn der gleiche Timer sein oder ein anderer?
Wie auch immer: Es existiert keine Variable mit diesem Namen. Du hast den Bezeichner zwar irgendwo eingeführt (deklariert), aber nirgendwo definiert. Das ist wieder dein Problem mit dem Unterschied zwischen Deklaration und Definition. Siehe zum Beispiel:
http://www.c-plusplus.net/forum/61231-full
-
ich habe den beitrag zum Thema Deklarieren und Definieren zwar noch nicht gelesen, aber ich glaube auch, dass das gar nichts damit zu tun hat.
Ich habe zu Testzwecken einen Button eingebaut mit dem Zweck den Timer "tmrFahrt" zu aktivieren. Mit exakt der gleichen Zeile, die auch in meiner Funktion steht. Da funktioniert es und der Timer an sich arbeitet auch wie er soll. Der Timer startet wie er soll. Daher glaube ich, dass C++ ein Problem hat, denn außerhalb einer Funktion funktioniert der Befehl, aber innerhalb nicht. Ich habe davon unabhängig auch die Funktion getestet, die ohne diesen Befehl einwandfrei arbeitet. So langsam drehe ich durch
-
C++ hat mit Sicherheit kein Problem sonder du.
Die OnClick-Funktion deines neuen Buttons hat ja schon deine Oberfläche ordentlich deklariert und definiert. Deswegen geht es. Schau einfach mal in deine Headerdatei (Form1.h) und suche die passende Deklaration.
Lies dir bitte erstmal wirklich was zum Thema Deklaration durch.
-
aber warum funktioniert der Befehl dann im Timer und in der Ereignisroutine des Buttons, aber in der Funktion nicht?
-
Die Funktion lassAufzugFahren gehörte ursprünglich nicht zur Klasse TForm1 war also eine freie Funktion. Damit hat sie aber keinen Zugriff auf den Timer tmrFahrt der ja Member von TForm1 ist.
Dann hast du einfach TForm1:: vor lassAufzugFahren geschrieben. Damit hast du die Definition geändert und dem Compiler gesagt, dass deine Funktion jetzt zu TForm1 gehört. Du hast sie aber nicht in der Headerdatei deklariert. Dann meckert dein Compiler wieder weil Deklaration und Definition halt zusammenpassen müssen.Lies bitte was zu den C++ Grundlagen. Ich würde dir sogar raten nur noch einfache Konsolenprogramme zu schreiben ohne viel Hilfe durch die GUI (wahrscheinlich der BCB).
-
hilfe so kompliziert hätte ich mir das ganze gar nicht vorgestellt
ok ich guck mir das alles mal an.....das programm muss ich schreiben, weil das ein schulprojekt ist.
-
Barnibas schrieb:
aber warum funktioniert der Befehl dann im Timer und in der Ereignisroutine des Buttons, aber in der Funktion nicht?
Weil die zu TForm1 gehören und Deine Funktion eben nicht.
Schau in die Headerdatei, da sind sowohl Dein Timer als auch die Ereignisroutine inmnerhalbclass TForm1 { ... ... ... }
deklariert.