Codeguard und Dateioperationen



  • Hallo,
    ich nutze zwar den C++Builder, aber das ist doch eher Builder-unabhänig?

    Was ist mit dem Zeiger auf TLog?

    Gruß Udo



  • Udo11 schrieb:

    Hallo,
    ich nutze zwar den C++Builder, aber das ist doch eher Builder-unabhänig?

    CodeGuard ist kein Standardtool sondern nur bei den C(++) Compilern von Borland dabei.

    Udo11 schrieb:

    Was ist mit dem Zeiger auf TLog?

    Keine Ahnung, Du hast ja nicht den Quelltext Deiner "TForm-Klasse" geliefert.

    mfg Martin



  • Wenn das nicht hierher paßt, dann bitte ins richtige Forum verschieben.

    Gruß Udo



  • Was passiert, wenn du den Parametertypen der Write() Funktion auf const std::string& änderst?



  • Gleiche Fehlermeldung von CodeGuard.

    Gruß Udo



  • Udo11 schrieb:

    Gleiche Fehlermeldung von CodeGuard.

    Gruß Udo

    Ist dir eigentlich aufgefallen, daß CodeGuard in beiden Fällen unterschiedliche Pointer anmeckert:

    Falscher Parameter: Falsches Datei- oder Pipe-Stream (0xB53C84) wurde an die Funktion weitergegeben.

    Falscher Parameter: Falsches Datei- oder Pipe-Stream (0xB53C3C) wurde an die Funktion weitergegeben.

    mfg Martin



  • Ja, das ist mir aufgefallen, es gibt aber noch einen Unterschied:

    Fehler 00001. 0x310000 (Thread 0x0C94):
    Falscher Parameter: Falsches Datei- oder Pipe-Stream (0xB53C84) wurde an die
    Funktion weitergegeben.
    fputs(0x0013F1EC ["yyyy"], 0x00B53C84)

    Vielleicht ist der von Bedeutung?

    Gruß Udo



  • Da ist kein Unterschied, das ist die gleiche Zahl.
    Dass sich logfile verändert, würde mir dagegen schon eher verdächtig vorkommen. Lass dir mal den Wert von logfile direkt nach der Instanziierung von MyLog ausgeben und danach immer wieder. Wenn der Wert gleich bleibt, CodeGuard aber trotzdem meckert, liegt der Fehler bei CodeGuard.



  • Hallo,

    da die Variable mylogfile private ist, habe ich die Funktion zur Ausgabe des Wertes in di Klasse aufgenommen:
    im Header:

    int GetMyLogFile() const;
    

    Implementation:

    int TLog::GetMyLogFile() const {
    	return (int)&mylogfile;
    }
    

    Der Wert der Ausgabe ändert sich während der Programmlaufzeit nicht.

    Gruß Udo



  • Udo11 schrieb:

    Hallo,

    da die Variable mylogfile private ist, habe ich die Funktion zur Ausgabe des Wertes in di Klasse aufgenommen:
    im Header:

    int GetMyLogFile() const;
    

    Implementation:

    int TLog::GetMyLogFile() const {
    	return (int)&mylogfile;
    }
    

    Der Wert der Ausgabe ändert sich während der Programmlaufzeit nicht.

    Gruß Udo

    Ich würde mal auch nicht die Adresse deines Pointers untersuchen sondern den Inhalt.

    mfg Martin



  • Hallo,

    ich habe jetzt herausgefunden, das der CodeGuard-Fehler mit dem übergebenen String in der Funktion write(std::string) zusammenhängt.

    Bei folgendem Funktionsaufruf wird der Fehler gemeldet:

    MyLog->Write("ein Beispielstring");
    

    folgender Funktionsaufruf läuft ohne Fehler:

    MyLog->Write(AnsiString("ein Beispielstring").c_str());
    

    Im zweiten Fall wird ja ein char* übergeben und im ersten Fall ein wchar_t* oder?

    Wenn das jetzt doch eher VCL-Sache ist, dann bitte ins richtige Forum verschieben.

    Gruß Udo


Anmelden zum Antworten