Neue funktion in der TMain klasse deklarieren?
-
hallo..
ich habe in meinem source code eine neue funktion in der ich auch auf elemente der TForm zugreifen möchte. z.b. label, combobox etc...
im sourcecode sieht das so aus:void TMain::BeginFileWork()
im header habe ich dann das ganze so deklariert:
private: // Anwender-Deklarationen public: // Anwender-Deklarationen __fastcall TMain(TComponent* Owner); void BeginFileWork();das compilieren klappt zwar und ich kann im sourcecode auf die elemente wie gewohnt zugreifen, aber nach dem ausführen kackt das programm ab wenn ich BeginFileWork(); aufrufe..

-
Dann zeig mal mehr Quelltext, z.B. den der Funktion BeginFileWork()
-
borddy schrieb:
... nach dem ausführen kackt das programm ab wenn ich BeginFileWork(); aufrufe..
Das ist auch nicht wirklich eine Fehlerbeschreibung... Ein bißchen genauer könnte es schon sein.
Schon mal Haltepunkte in der Funktion gesetzt und mit dem Debugger reingesehen?
-
der witz ist, in der BeginWorkFile funktion stehen gerade mal drei zeilen code drin. also muss der fehler an der deklaration in der klasse liegen da ich mit klassen noch nie zu tun hatte kann es gut sein das ich dort den fehler gemacht habe. code habe ich ja schon gepostet aber hier nochmals.....
Unit1.h
class TMain : public TForm { __published: // Von der IDE verwaltete Komponenten ... ... ... ... private: // Anwender-Deklarationen public: // Anwender-Deklarationen __fastcall TMain(TComponent* Owner); void BeginFileWork(int, int); //HIER......... };Unit1.cpp
void TMain::BeginFileWork(int noMoveStyle, int miMoveStyle) { MessageBox(NULL,"hmm","",48); //nur für test zwecke.... //<--- some code........ //the end... DateiListe->Clear(); WListe->Clear(); }was ist nun falsch? oder habe ich alles richtig deklariert?
sobald ich in der BeginWorkFile funktion bin krieg ich diesen fehler:Division durch null.
-
Und wie rufst Du die Funktion auf - und von wo?
Gruß,
Alexander
-
borddy schrieb:
class TMain : public TForm { __published: // Von der IDE verwaltete Komponenten ... private: // Anwender-Deklarationen public: // Anwender-Deklarationen __fastcall TMain(TComponent* Owner); void BeginFileWork(int, int); //HIER......... };schreib hier mal:
void BeginFileWork(int noMoveStyle, int miMoveStyle);
-
Alexander:
wie: BeginFileWork(parameter, parameter);
wo: Wenn man auf einen button klickt.Linnea:
Meines erachtens hat dies doch keinen einfluss...?
-
...
[Edit]wo genau bricht das Programm denn ab? also in welcher Codezeile?
-
@Linnea: Sollte in der Tat keine Probleme machen.
@broddy: wenn wir dir helfen sollen, dann solltest du was in "some code" steht wohl auch posten. Ausserdem bleibt Joes Frage: Wo bleibt der Debugger stehen?
-
Wo genau bleibt der Debugger denn stehen??? Ich vermute Du unterschlägst uns den Codeteil, in dem der Fehler auftritt...
-
nein! :p
dort wo some code steht, steht auch nur das
das war vielmehr ein kommentar für mich das ich dort noch einiges dann schreibe...in der zwischenzeit habe ich den fehler bzw. die ursache gefunden.
ich verwende eine skin komponente. wenn ich diese auf inaktive setze kommt der fehler tatsächlich nicht mehr. warum dieser fehler jedoch genau nach dem aufruf der BeginFileWork funktion auftritt ist mir noch ein rätzel. bevor ich diese funktion im header deklariert habe und sie dann aufruf, ging alles gut mit der skin komponente...
-
Hmmm... kanns sein, dass deine Skin-Kompo irgendwas an der Form-Klasse rummurkst? Funktionierts, wenn du der Funktion nen anderen Namen verpasst?
-junix
-
kanns sein, dass deine Skin-Kompo irgendwas an der Form-Klasse rummurkst?
des wüsst ich jetzt ned...Funktionierts, wenn du der Funktion nen anderen Namen verpasst?
leider nein
-
Hallo, Ich hatte ebenfalls das problem das ich meine Funktion wie beschrieben deklariert habe, aber Sie wurde nicht aufgerufen.
Ich habe die Deklaration dann im Header nach
.
.
.
public:
};
void Funktion()geschrieben. So hat es funktuiniert. Auf die Form Komponenten habe ich dann mit
Main->label... zugegriffen.
Weis einer vieleicht warum es nicht geht wenn ich meine Funktion als public: deklariert habe? und was ist der unterschied wenn ich es außerhalb deklariere?
-
Ich habe schon häufig derartige Methoden erstellt und habe noch nie die geschilderten
Probleme gehabt. Aber mit den spärlichen Informationen ist es natürlich schwer zu helfen.Gruß,
Alexander