Funktionen tipps, hints automatische Funktionsliste



  • Hallo,

    ich bin gerade frisch auf den c++ builder umgestiegen,
    nun wollte ich fragen ob es irgendwo ne möglichkeit gibt eine unterstützung für funktionen einzuschalten die die möglichen funktionen anzeigt, z.b. nach einem punkt also z.b. array.length()/size() etc., bei ein paar schlüsselbegriffen wie cin und cout scheint das programm dies automatisch zu tun, aber ansonsten nicht.

    Vielen Dank für die Hilfe

    mfg Nickolaus



  • Nennt sich CodeInsight, Standard-Tastaturbefehl ist Shift+Leertaste (Properties, member etc.) bzw. Shift+Strg+Leertaste (Funktionsparameter).
    Wenn du uns noch deine BCB-Version verrätst, können wir dir auch sagen, ob und wie gut das bei dir funktionieren sollte.



  • guten morgen...
    habe momentan aktuelle bcb version testweise am laufen also bcb 2010



  • Nickolaus schrieb:

    bei ein paar schlüsselbegriffen wie cin und cout scheint das programm dies automatisch zu tun, aber ansonsten nicht.

    Eigentlich sollte C++Builder das so gut wie immer tun.

    Kannst du anhand eines Beispielprogrammes illustrieren, wo es wider Erwarten nicht funktioniert?



  • ganz simpel eigentlich, ich hab zum beispiel nen string definiert sagen wir string s; und wenn ich jetzt s. schreibe, erwarte ich eigentlich eine unterstützung, aber das programm lädt nur kurz, das merk ich auch, macht aber nix.



  • Hast du denn mal getestet, ob er dein Programm überhaupt kompiliert?



  • klar compilieren und alles funktioniert wunderbar schreibe ja schon die ganze zeit dammit



  • Dann sollte es funktionieren.

    Hast du ein vollständiges Beispiel, also ein fehlerfreies Stück Code, an dem ich das vergleichsweise testen könnte?



  • z.b. gehe ich davon aus, wenn ich folgende funktion schreibe:

    void replaceChars(string& s, char source, char destination)
    {
    	string::iterator it = s.begin();
    	while ( it != s.end())
    	{
    		if (*it == source) {
    			*it = destination;
            }
    		it++;
    	}
    }
    

    das der c builder mir bei "s." eine liste von möglichen funktionen anzeigt.



  • Hab gerade gesehen, wenn ich:

    for (int i = 0; i < s.length(); i++) {
    
    }
    

    sowas schreibe, zeigt der mir bei "s." ne liste mit allen möglichen funktionen an, aber das scheint nur zu sein, wenn ich in so eine automatische erweiterung, oder wie ich das nennen soll, also was bei for, if,... etc. passiert rein schreibe.



  • mhhh..... bei while macht er es nicht???



  • Nickolaus schrieb:

    z.b. gehe ich davon aus, wenn ich folgende funktion schreibe:

    void replaceChars(string& s, char source, char destination)
    {
    	string::iterator it = s.begin();
    	while ( it != s.end())
    	{
    		if (*it == source) {
    			*it = destination;
            }
    		it++;
    	}
    }
    

    das der c builder mir bei "s." eine liste von möglichen funktionen anzeigt.

    Ja, davon gehe ich auch aus, und das tut er bei mir auch, mit Ausnahme der ersten Zeile (string::iterator it = s.begin()). Grund dürfte sein, daß der Compiler die Ergebnisliste nach den zulässigen Typen filtert, jedoch Typedefs wie die folgenden nicht während des Kibitzing (das ist der Compilermodus, der für Code Completion verwendet wird) auflösen kann:

    template <typename T>
        struct MyIterator
    {};
    
    template <typename T>
        struct MyString
    {
        typedef MyIterator <T> iterator;
        iterator get (void) { return MyIterator (); }
    };
    

    Daher kann der Compiler, wenn du

    MyString<char> c;
    MyString <char>::iterator i;
    i = c.
    

    schreibst, nicht die Identität von MyString<char>::iterator und MyIterator<char> feststellen und zeigt deshalb nur eine leere bzw. gar keine Liste an. Das ist wohl als Bug zu bezeichnen.

    Wie gesagt, in der while-Schleife funktioniert es bei mir.



  • ok...naja
    dann muss ich mal gucken eventuell neu-installieren und gucken ob es dann funktioniert


Anmelden zum Antworten