Eigene funktion via header einer anderen form bekannt machen
-
natürlich sind die header in den cpp includiert...nicht im header des anderen...
ich sehe das problem, das in keiner der header dateien die von mir "erzeugte" funktion vorkommt...
und das wollte ich ja nachholen...mit void configlesen(); im header von form1 in der die funktion sitzt...
aber dann kommt immer dieser unresolved external...
-
Hallo
kann es sein, das du die Funktion im CPP-File nicht als Member, im Header aber in die Deklaration des Forms aufgenommen hast? Verleg im Header die Funktion außerhalb der Klasse, oder schreib im CPP-File noch den Namen der Formklasse davor, wie bei den anderen Methoden.
bis bald
akari
-
danke...das hat geklappt...
-
hallo!
das mit dem in der anderen form bekannt machen isst wunderbar gegangen indem ich die funktion ausserhalb des srukts angekündigt habe, aber wenn cih die funktion nun von form2 aufrufe, wird sie nicht auf form1 ausgeführt....!!!!!
HILFEEEEEEEE
-
Hallo
wie bitte?

Was verstehst du denn unterwird sie nicht auf form1 ausgeführt....
?
Zeig doch mal, was besagt Funktion macht.Im Zweifelsfall eben die zweite Variante nehmen, und die Funktion zu einem Member von dem Form machen, in dem sie wirken soll.
bis bald
akari
-
Inhalt Form1
//--------------------------------------------------------------------------- #include <vcl.h> #pragma hdrstop #include "FonMonitor.h" #include "Einstellungen.h" #pragma package(smart_init) #pragma link "Trayicon" #pragma resource "*.dfm" #include <stdio.h> TForm1 *Form1; FILE *datei; String test; int start = 0; void configneueinlesen(); //--------------------------------------------------------------------------- __fastcall TForm1::TForm1(TComponent* Owner) : TForm(Owner) { } void configneueinlesen() { char buf[10]; char msg[1]; if((datei = fopen("config.cfg","rt")) != NULL ) { /* Setzt den Dateizeiger auf den Anfang der Datei */ fseek(datei, SEEK_SET, 0); /* Liest die Daten und zeigt sie an */ fread(buf, strlen(msg)+1, 5, datei); test = buf; //ShowMessage(test.ToInt()); fclose(datei); }Inhalt header Form1
#include "Trayicon.h" #include <Menus.hpp> //--------------------------------------------------------------------------- void configneueinlesen(); class TForm1 : public TForm { __published: // Von der IDE verwaltete KomponentenInhalt Form2
void __fastcall TForm2::Button1Click(TObject *Sender) { configneueinlesen(); }So, und die funktion config...in form1 wird nicht durch button click auf form2 ausgelöst...
-
Hallo
sollte aber.
Bist du dir denn sicher, das Form2::Button1Click() überhaupt aufgerufen wird? Das es wirklich einen Button als OnClick Event zugewiesen ist?
Ansonsten setzt mal einen Breakpoint auf den Aufruf in Button1Click() und geh Schritt für Schritt mit dem Debugger den Ablauf durch.Aßerdem empfehle ich dir, statt fopen,fseek... und so lieber TStringList zu nehmen. Such im Forum mal danach.
bis bald
akari
-
ja, der button click wird ja von mir ausgeführt...handelt dann auch noch den ganzen code der noch im button klick drin ist ab und dann kommt er bei configneueinlesen an und murrt auch nicht...nur das die funktion nicht in form1 ausgeführt wird...
lese da nämlich etwas as datei...und wenn ich das ganze breakpointe und schritt für schritt durchgehe, sehe nich, das er die funktion nicht anspringt...und die werte sich ach nicht verändern...
Ideen???
-
Hallo
Langsam weiß ich nicht, wie ich dir noch helfen soll... irgendwas machst oder meinst du falsch, aber ich verstehs nicht. Der Quellcode ansich ist jedenfalls zumindestens korrekt.
und wenn ich das ganze breakpointe und schritt für schritt durchgehe, sehe nich, das er die funktion nicht anspringt
Wenn du mit dem Ablauf über in Button1Click() über configneueinlesen() bist, drück mal statt F8 für gesamte Routine besser F7 für einzelne Anweisung. Dann muß er in die Funktion configneueinlesen() hineingehen.
und die werte sich ach nicht verändern
Meinst du die Werte im Speicher oder die angezeigten Werte? So wie du das hast, wird der Wert nur in Test geschrieben. Dort kannst den auch mit dem Debugger anschauen. Auf der Oberfläche must du den aber noch selber aktualisieren.
bis bald
akari
-
hab es gefunden....dank dir...denke ich...*GRINS*
meine deklacration im header funzte so nicht richtig...
es geht nur wenn ich das void davor weglasse...
im header steht nun nur configneueinlesen();
dann springt er in die funktion...mit void configein... nicht...das verstehe mal wer will...ich nicht...aber danke...da wäre ich ohne dich nie drauf gekommen...
immer diese betriebsblindheit...