Funktionsufruf schlägt fehl woran kann das liegen?
-
Hallo
ich möchte stink einfach eine Funktion aufrufen die mir etwas erledigt und dann wieder zurückspringt.
habe die funktion fearben in der haupt.h definiert und zwar so
int faerben(int);so in der haupt.cpp in der die haupt.h includiert wurde will ich die Funktion so aufrufen
faerben(intAnzZeichenAktuell);die Funktion sieht folgendermaßen aus
int faerben(int intAnzZeichenAktuell2) { String STZeile; STZeile=rftAWL->Lines->Strings[x]; rftAWL->SelStart=intAnzZeichenAktuell2; // Beim ersten zeichen anfangen rftAWL->SelLength = STZeile.Length(); // Länge diretk aus dem String bestimmen rftAWL->SelAttributes->Color=clRed; rftAWL->SelLength = 0; // Auswahl rückgängig machen rftAWL->SelStart = intAnzZeichenAktuell2+STZeile.Length()+1; rftAWL->SelAttributes->Color=clWindowText; return; }so und diese Fehlermeldungen bekomme ich vom Borland
[C++ Fehler] Haupt.cpp(1703): E2141 Fehler in der Deklarationssyntax
[C++ Fehler] Haupt.cpp(1732): E2139 In Deklaration fehlt ;
[C++ Fehler] Haupt.cpp(1732): E2134 Abschließendes } fehltWoran kann das liegen sehe ich den Wald vor lauter Bäumen nicht mehr oder mach ich effektiv was falsch.
zur in formation ich hatte das ganze zuerst als void funktion definiert alsvoid faerben(int);dies führte zu den selben Fehlermeldungen
Vielen Dank schonmal für eure Hilfe
Felix
-
Irgendwo in deinem Code fehlt ein '}', das kann durchaus schon in der Header-Datei sein.
-
ne eigentlich net weil ich eine Zeile vorher bereits eine Funktion deklariert habe die ohne Probleme läuft.
-
so hab mal ne zeile vorher im Code mitkopiert
int open_com(void); //geht int send(unsigned char);//geht int close_com(void);//geht int faerben(int);//geht nicht
-
Hallo
was passiert denn, wenn du die fragliche Zeile mit
int faerben(int);komplett auskommentierst? Wenn Jansen mit seiner Vermutung recht hat (die ich übrigens teile) dann springt der Fehler einfach auf die nächste Zeile.
bis bald
akari
-
Mal ne Frage. Warum soll kein }-Zeichen fehlen können, wenn die Funktionen, die vor dieser Funktion deklariert sind funktionieren. Das ist doch logisch, dass die, die vor dem Fehler definiert wurden funktionieren.
Ich verstehe die Logig nicht.
MfG René
-
Die Logik dahinter für mich ist wenn ich kein '{' gemacht habe kann ja auch kein '}' fehlen. Weil vorher lief es ja
00:26:38 29.11.2005 Titel: Zitieren
Hallo
was passiert denn, wenn du die fragliche Zeile mit
C/C++ Code:
int faerben(int);
C/C++ Code:
int faerben(int);
C/C++ Code:
int faerben(int);komplett auskommentierst?
Wenn ich die Funktion auskomenntiere ist der Fehler weg.
mfg Felix
-
Ich hab jetzt grad nochmal in der Hilfe gewälzt und für mich sieh esso aus als ob Borland aus der Funktion eine struct machen möchte.
-
in der Fehlermeldung stehen doch die Zeilen wo der Fehler auftritt.
welche Zeilen sind denn das? eventuell spielt auch die Zeile darüber eine Rolle
-
wäre interessant zu wissen, welche zeilen im code das sind, die er anmeckert und nicht nur die fehlermeldungen!
sieht eher so aus, dass ein header vergessen wurde, einzubinden. ausserdem wie ist rftAWL deklariert, als globale variable?
-
also die Fehler meldung 1
[C++ Fehler] Haupt.cpp(1703): E2141 Fehler in der Deklarationssyntax
bezieht sich auf
int faerben(int intAnzZeichenAktuell2) {//<--diese Zeile String STZeile;die anderen beiden Fehler Meldungen,
[C++ Fehler] Haupt.cpp(1732): E2139 In Deklaration fehlt ;
[C++ Fehler] Haupt.cpp(1732): E2134 Abschließendes } fehltsind ausserhalb des Codes d.h. am Ende des Editors
-
rftAWL ist eine Richtextbox und ist definiert
-
wie ist rftAWL deklariert, als globale variable? hast du system.hpp inkludiert fuer AnsiString?
Ein Fehler ist nicht immer dort zu suchen, wo man ihn vermeintlich angezeigt bekommt!
Zeig mal deinen Header und den obersten Teil der cpp
-
Also jetzt nochmal genauer
die Schritte (die mit dem rftAWL) läufen ausserhalb der von mir selbst erzeugten Funktion ohne Probleme d.h. ich hab die schritte bereits vorher getestet und wollte sie nun um Modularer zu werden in einen Funktionsaufruf packen (zwecks übersicht) klappt aber offensichtlich net. Ich gehe daher, da es ausserhalb der Funktionen ohne Probleme funktioniert, davon aus, das es an der Funktionsdeklaration liegt, ich weiß nur net was da net stimmen soll!!!!!
MfG Felix
-
Falls es doch einigen etwas bringt wer weiß das schon hier nochmal meine Ikludierten Files
#include <vcl.h> #include <stdlib.h> #include <stdio.h> #include <windows.h> #include <winbase.h> #include <winuser.h> #include <dir.h> #include <string.h> #include <process.h> /* _beginthread, _endthread */ #include <windows.h> //fuer serielle Kommunikation #include <iostream.h> //fuer cout, cin #include <conio.h> //fuer Fkt. getch(), clrscr(); #include <ctype.h> //fuer toupper() #pragma hdrstop #include "Haupt.h" #include "Info.h" #include "Compiler.h" #include "Discomp.h" #include "Senden.h" #include "Empfangen.h" #include "Optionen.h" #define Byteanzahl 3000 //--------------------------------------------------------------------------- #pragma package(smart_init) //#pragma link "ComDrv32" #pragma resource "*.dfm" TfrmHaupt *frmHaupt; #define COM_BUFFER_SIZE 16 // Read- und Write-Buffer-Size HANDLE hCom;so das ist der obere Teill meiner .cpp-Datei
und hier ist die Header Datei
/*************************************************************************/ /* Projekt: Entwicklungsumgebung für SPS-System */ /* */ /* Datei: Haupt.h */ /* */ /* Aufgabe: Headerfile fr SPS.C */ /* */ /* Programmierer: Timo Heitz und Andreas Bttner, TEL96AT */ /* */ /*-----------------------------------------------------------------------*/ /* Funktionen: */ /* */ /* */ /*-----------------------------------------------------------------------*/ /* Hz 06.04.99 */ /* */ /*************************************************************************/ #ifndef __Haupt_h #define __Haupt_h //--------------------------------------------------------------------------- #include <Classes.hpp> #include <Controls.hpp> #include <StdCtrls.hpp> #include <Forms.hpp> #include <ComCtrls.hpp> #include <ExtCtrls.hpp> #include <jpeg.hpp> #include <Graphics.hpp> #include <Menus.hpp> #include <Dialogs.hpp> #include <ComDrv32.hpp> #include <Printers.hpp> /*-----------------------------------------------------------------------*/ /* allgemeine Definitionen */ /*-----------------------------------------------------------------------*/ #define Anfangs_Kennung 0xFA #define Ende_Kennung 0xFE #define Byteanzahl 3000 #define Sicherheit 500 #define StackSize 8192 /*-----------------------------------------------------------------------*/ /* Klassen */ /*-----------------------------------------------------------------------*/ class TfrmHaupt : public TForm { __published: // Von der IDE verwaltete Komponenten TPageControl *TPage; TTabSheet *regHauptmenue; TButton *btnCompile; TButton *btnSenden; TButton *btnEmpfangen; TButton *btnOptionen; TButton *btnHilfe; TButton *btnEnde; TTabSheet *regAnweisungsliste; TTabSheet *regListdatei; TTabSheet *regBinaerdatei; TImage *Image1; TEdit *Edit4; TEdit *Edit3; TPanel *Panel1; TPanel *Panel2; TMainMenu *mnuHauptMenue; TMenuItem *mnuDatei; TMenuItem *mnuDateiNeu; TMenuItem *mnuDateiOeffnen; TMenuItem *mnuDateiSpeichern; TMenuItem *mnuN1; TMenuItem *mnuDateiDrucken; TMenuItem *mnuN2; TMenuItem *mnuDateiBeenden; TMenuItem *mnuBearbeiten; TMenuItem *mnuBearbeitenAusschneiden; TMenuItem *mnuBearbeitenKopieren; TMenuItem *mnuBearbeitenEinfgen; TMenuItem *mnuBearbeitenLoeschen; TMenuItem *mnuN3; TMenuItem *mnuBearbeitenFinden; TMenuItem *mnuBearbeitenErsetzen; TMenuItem *mnuHilfe; TMenuItem *mnuHilfeInhalt; TMenuItem *mnuN5; TMenuItem *mnuHilfeUeber; TRichEdit *rftAWL; TOpenDialog *odgOpen; TSaveDialog *sdgSave; TPrintDialog *pdgPrint; TFindDialog *fdgFind; TReplaceDialog *rdgReplace; TRichEdit *rftListdatei; TRichEdit *rftBinaer; TImage *Image2; void __fastcall btnHilfeClick(TObject *Sender); void __fastcall btnEndeClick(TObject *Sender); void __fastcall Info1Click(TObject *Sender); void __fastcall TPageChange(TObject *Sender); void __fastcall mnuFileExitClick(TObject *Sender); void __fastcall mnuHilfeUeberClick(TObject *Sender); void __fastcall mnuDateiBeendenClick(TObject *Sender); void __fastcall mnuDateiNeuClick(TObject *Sender); void __fastcall mnuDateiOeffnenClick(TObject *Sender); void __fastcall mnuDateiSpeichernClick(TObject *Sender); void __fastcall mnuDateiDruckenClick(TObject *Sender); void __fastcall FormCreate(TObject *Sender); void __fastcall mnuHilfeInhaltClick(TObject *Sender); void __fastcall mnuBearbeitenAusschneidenClick(TObject *Sender); void __fastcall mnuBearbeitenKopierenClick(TObject *Sender); void __fastcall mnuBearbeitenEinfgenClick(TObject *Sender); void __fastcall mnuBearbeitenLoeschenClick(TObject *Sender); void __fastcall mnuBearbeitenFindenClick(TObject *Sender); void __fastcall mnuBearbeitenErsetzenClick(TObject *Sender); void __fastcall fdgFindFind(TObject *Sender); void __fastcall rdgReplaceFind(TObject *Sender); void __fastcall rdgReplaceReplace(TObject *Sender); void __fastcall btnCompileClick(TObject *Sender); void __fastcall btnSendenClick(TObject *Sender); void __fastcall btnEmpfangenClick(TObject *Sender); void __fastcall btnOptionenClick(TObject *Sender); void __fastcall FormClose(TObject *Sender, TCloseAction &Action); void __fastcall CommPortDriverReceiveData(TObject *Sender, Pointer DataPtr, int DataSize); // void __fastcall btnFUPClick(TObject *Sender); void __fastcall Image2Click(TObject *Sender); void __fastcall rftAWLKeyPress(TObject *Sender, char &Key); private: // Anwenderdeklarationen AnsiString sTitel; AnsiString sFileName; void __fastcall SaveFileName(AnsiString FileName); void __fastcall CheckFileSave(TObject *Sender); void __fastcall PrintFooter(TRect& rect, int nLineHeight); void __fastcall Beenden(TObject *Sender); public: // Anwenderdeklarationen __fastcall TfrmHaupt(TComponent* Owner); }; //--------------------------------------------------------------------------- extern PACKAGE TfrmHaupt *frmHaupt; //--------------------------------------------------------------------------- #ifndef __Haupt_h__ #define __Haupt_h__ /*-----------------------------------------------------------------------*/ /* projektglobale Variablen */ /*-----------------------------------------------------------------------*/ unsigned char Schnittstelle; bool NOP_Anzeige; char Pfad_Sps_awl[MAXPATH] ,Pfad_Sps_lst[MAXPATH] ,Pfad_Sps_bin[MAXPATH]; char Pfad_SPS_Bin_txt[MAXPATH], Fup_exe[MAXPATH]; char Pfad_SPSCompErg[MAXPATH], SPS_ini[MAXPATH]; HANDLE COM_Port, h_PROGRESS, h_SENDEN, h_EIGENSCHAFTEN, h_EMPFANGEN; bool Comp_Erg=false; bool discompilieren=false; WORD w_PROGRESS; char StartVerzeichnis[MAXPATH]; long LetzterStart=0; /*-----------------------------------------------------------------------*/ /* lokale Funktionsprototypen fr SPS.C */ /*-----------------------------------------------------------------------*/ //int Menue(); //void Editieren(); //void Anzeigen_LST(); //void Anzeigen_BIN(); //void Optionen(); //void Hilfe(); char *aktuellerPfad(char *path); void threadSenden(void *threadno); void threadSendenProgress(void *threadno); void threadEmpfangenFenster(void *threadno); bool Schnittstellenergebnis(void); int open_com(void); int send(unsigned char); int close_com(void); int faerben(int); /*-----------------------------------------------------------------------*/ /* externe Funktionsprototypen */ /*-----------------------------------------------------------------------*/ extern void Init_Seriell(void); //extern void Schreib_Bin(FILE *f,char b); extern void Senden(void); extern int Holen(void); extern void Discompiler(void); extern void Compiler(void); /*-----------------------------------------------------------------------*/ /* lokale Funktionen und Modulglobale Variablen */ /*-----------------------------------------------------------------------*/ unsigned char acDATEN[Byteanzahl+Sicherheit]; bool b_ABBRUCH=false; //wenn false, dann nicht abbrechen bool bSTARTPROGRESS=false; /*-----------------------------------------------------------------------*/ #endif /* __Haupt_h__ */ #endif /* __Haupt_h */ /*************************************************************************/Brauche dringend hilfe hab noch 30 min bis mein Dozent was sehen will

-
Setz doch deine globalen Variablen als "extern" in den Header (plus einer "richtigen" Definition im CPP-File) und nimm alles aus dem Header heraus, was man "außen" nicht sehen soll (modulglobale Variablen und lokale Funktionen).
-
wie du jetzt selber siehst, ist faerben keine member deiner klasse TfrmHaupt, allerdings versuchst du auf ein element dieser klasse von aussen zu zugreifen ohne die klasse selbst anzusprechen.
-
Hallo Sunday also du scheinst da problem jetzt wohl richtig gedeutet z haben mitlerweile erkennt er die Funktion als Funktion, nur kennt er die Richttextbox nicht mehr wie muß ich die den Deklarieren, bzw wie kann ich weiter auf die Eigenschaften von der Richtextbox zugreifen.
MfG Felix
-
Du brauchst ein Objekt vom Typ TfrmHaupt, dann kannst du dessen Member-Variablen verändern. Woher du das bekommst, hängt von deinem Design ab (globale Variable oder Zugriffsfunktion bieten sich an).
-
also an alle Helfer ein Dankeschön
folgendes war das Problem.
Ich hatte tatsächlich 10 Zeilen oberhalb eine } beim auskommentieren mit ausgeklammert. daher hat der Compiler versucht us der Funktion eine Struktur zubauen wobei er kläglich gescheitert ist.
Also mein Fehler
-
Kein Kommentar ...
