Kommandozeilenparameterproblem? - Funktion läuft nicht?



  • ich hab folgendes Problem - wenn ich mit Visual mein Program compiliere und eine Funktion laufen lasse haut das problemlos hin wenn ich aber das mit Kommandozeilenparameter starte und dann eine bestimmte Funktion (genau die gleiche wie vorher im Visual aufgerufen) laufen lassen will geht sie nicht? ich lasse die gleiche funktion aufrufen?

    thx



  • Meine Kristallkugel sagt mir....

    ....
    ....
    ....

    Du hast da einen Fehler in Deinem Programm.



  • ??meine Kristallkugel sagt mir leider nicht welchen - was kann da anders sein wenn ich das Programm mit Kommandozeilenparameter starte im gegensatz zu visual ? schaut visual vielleicht über was hinweg?



  • Wenn ich so gut raten könnte das ich jetzt Dein Problem finden würde hätte ich letztes WE Lotto gespielt.

    Ein paar Informationen wären nicht schlecht.



  • ok bin draufgekommen dass er mit Kommandozeilenparameter nur bis zur file.open() kommt!

    struct Bla *bla = NULL;
    bla = pB->Read(bla); <-Funktionsaufruf
    
    struct Bla* BLUB::Read(string filename) const{
    	struct Bla* blub = NULL;
    	ifstream file;	
    	file.open(filename.c_str());
          cout<<"blub";  <-- wird ausgegeben
    	if (file.is_open()){  <------------springt nicht in if scheint als ob file 
                                   nicht geöffnet werde kann?? warum ?? mit Visual 
                                   springt er rein
              cout<<"blab";  <-- wird nicht ausgegeben
              ................ 
              ...............
    


  • Den Code würde ein vernünftiger Compiler nicht mal annehmen.

    struct Bla *bla = NULL;
    bla = pB->Read(bla); // <-- ist bla auf einmal ein string, oder etwas aus dem sich ein string konstruieren lässt? Ich glaube nicht.
    
    struct Bla* BLUB::Read(string filename) const{ // Read erwartet aber einen string
      // ...
    

    Das einzige, wie ich mir das erklären kann, ist, dass du entweder eine zweite Read-methode hast, die einen Bla-Pointer entgegennimmt und den eigentlichen Fehler produziert, oder dass Visual C++ den Bla-Pointer implizit in einen char-Pointer umwandelt und durch irgendwelche seltsamen Eigenheiten (char*) NULL irgendeinen sinnvollen Wert enthält. Wobei nicht mal Visual C++ so verrückt sein dürfte, von daher würde ich auf ersteres tippen. Mehr kann ich aber ohne funktionierendes Orakel auch nicht sagen, da brauch ich mehr Info. Welchen Wert beinhaltet filename in Bla::Read denn, wenn du nen Parameter und wenn du keinen Parameter angibst, und wie sieht deine main-Funktion aus?



  • also das ist einfach nur falsch abgeschrieben übergeben wurde da schon einen string -> bla = pB->Read(bla);

    struct Bla* BLUB::Read(string filename) const{
        struct Bla* blub = NULL;
        ifstream file;    
        file.open(filename.c_str());
          cout<<"blub";  <-- wird ausgegeben
        if (file.is_open()){  <------------springt nicht in if scheint als ob file 
                                   nicht geöffnet werde kann?? warum ?? mit Visual 
                                   springt er rein
              cout<<"blab";  <-- wird nicht ausgegeben
           ..........
        }
    return blub;
    }
    
    void Con(string bl, string bsp ){
    	BLUB* pBit = new BLUB();
    	if(pBit->ReadBitFile(bl)) {
    		struct Bla* blub = NULL;
    		blub = pBit->Read(bsp);
    		if(blub != NULL) {
                 ..................-> geht in else Zweig weil Null zurückkommt?
    }
    
    int main (int argc, char *argv[]) {
    	Con("bla.bmp","bsp.txt");	
    	return 0;
    };
    


  • jetzt debug doch mal und sag dann welchen Wert fileName beim Funktionsaufruf hat. So kann man doch mal rein gar nix sagen...

    Mfg, smasher1985



  • ich sehe da nirgends eine parameter abfrage, dennoch sieht das gtanze für mich sehr merkwürdig auf, da du eine komische Klasse Bla hast, merkwürdige funtionsnamen, und eine sehr komische formulierung.

    schreib bitte mal genau strukturiert, wann was passiert, oder schreib mal einen kompletten Code hier rein, in dem der ´Fehler auftritt, aber so kann dir keiner genau sagen, wo dein Problem liegt.

    ps.: Leider kann man nichts zum Problem Programmargumente sagen, wenn du garnicht mit welchen arbeitest


Log in to reply