Anfänge mit Visual Studio 2008



  • zeig auch mal die zeile 36 und die zeile davor.



  • #include "stdafx.h"
    
    int b_costs[2][2][2]; // <-- Zeile 3
    b_costs[1][1][1] = 90; // <-- Zeile 36
    

    Dazwischen liegen nur Kommentare und dahinter nichts mehr.



  • Antispy schrieb:

    #include "stdafx.h"
    
    int b_costs[2][2][2]; // <-- Zeile 3
    b_costs[1][1][1] = 90; // <-- Zeile 36
    

    Dazwischen liegen nur Kommentare und dahinter nichts mehr.

    komisch. der code sieht für mich ganz ok aus.
    ups,
    die zuweisung
    b_costs[1][1][1] = 90;
    geht ja gar nicht im global scope.

    int b_costs[2][2][2]; // <-- Zeile 3
    void init_costs()
    {
       b_costs[1][1][1] = 90;
    }
    
    void init_costs();//diese zeile könnte fein in einen header gehen, der einfachheit halber aber mal schnell so
    int main()
    {
       init_costs();
    ...
    }
    


  • Ich habe nun mal alle Kommentare entfernt und nun sieht meine building_costs.cpp folgendermaßen komplett aus (Zeile 1-5):

    #include "stdafx.h"
    
    int b_costs[2][2][2];
    
    b_costs[1][1][1] = 90;
    

    Die Fehlermeldung ist folgende:

    Kompilieren...
    building_costs.cpp
    .\building_costs.cpp(5) : error C4430: Fehlender Typspezifizierer - int wird angenommen. Hinweis: "default-int" wird von C++ nicht unterstützt.
    .\building_costs.cpp(5) : error C2369: 'b_costs': Neudefinition; unterschiedliche Feldindizes
    .\building_costs.cpp(3): Siehe Deklaration von 'b_costs'
    .\building_costs.cpp(5) : error C2440: 'Initialisierung': 'int' kann nicht in 'int [1][1][1]' konvertiert werden
    Es gibt keine Konvertierungen von Arraytypen, obwohl es Konvertierungen von Verweisen oder Zeigern in Arrays gibt



  • Antispy schrieb:

    Ich habe nun mal alle Kommentare entfernt und nun sieht meine building_costs.cpp folgendermaßen komplett aus (Zeile 1-5):

    Schau dir nochmal volkard's letzten Post an.



  • ohh.. hatte gar nicht gesehen, dass das editiert wurde.

    Das scheint aber soweit zu klappen 🙂

    Jetzt versuche ich bei einem Onklick eines Buttons den Wert eines Labels zu ändern:

    Label1->Text=b_costs[1][1][1];
    

    hier bekomm ich jetzt aber leider folgende Fehldermeldung:

    error C2065: 'b_costs': nichtdeklarierter Bezeichner



  • Was mich komisch dünkt, ist dass der Borland Builder das durchgehen lässt...



  • Antispy schrieb:

    ohh.. hatte gar nicht gesehen, dass das editiert wurde.

    Das scheint aber soweit zu klappen 🙂

    Jetzt versuche ich bei einem Onklick eines Buttons den Wert eines Labels zu ändern:

    Label1->Text=b_costs[1][1][1];
    

    hier bekomm ich jetzt aber leider folgende Fehldermeldung:

    error C2065: 'b_costs': nichtdeklarierter Bezeichner

    int main(array<System::String ^> ^args) 
    { 
    extern int b_costs[2][2][2];
    

    hatte ich nicht so gedacht, sondern eher

    extern int b_costs[2][2][2]; 
    int main(array<System::String ^> ^args) 
    {
    

    ich vermute, dein
    Label1->Text=b_costs[1][1][1];
    ist nicht in der main()

    kannst auch
    extern int b_costs[2][2][2];
    in jede funktion klatschen, wo es gebraucht wird. also als erste zeile in die OnClick()



  • Der Code für den Button befindet sich in der Form1.h

    private: System::Void button1_Click(System::Object^  sender, System::EventArgs^  e) {
    			 b_main_wood->Text=b_costs[1][1][1];
    }
    

    b_main_wood ist dabei der Name des Labels.



  • private: System::Void button1_Click(System::Object^  sender, System::EventArgs^  e) {
                                extern int b_costs[2][2][2]; 
    			 b_main_wood->Text=b_costs[1][1][1];
    }
    

    dürfte klappen.



  • kannst auch
    extern int b_costs[2][2][2];
    in jede funktion klatschen, wo es gebraucht wird. also als erste zeile in die OnClick()

    Da erscheint dann diese Meldung:

    Form1.h(2571) : error C2664: 'void System::Windows::Forms::Control::Text::set(System::String ^)': Konvertierung des Parameters 1 von 'int' in 'System::String ^' nicht möglich
    Es ist kein benutzerdefinierter Konvertierungsoperator verfügbar, oder
    Es ist keine Standardkonvertierung von der mittels Boxing geschachtelten Form des arithmetischen Typs in den Zieltyp vorhanden.



  • ich kenne die richtigen funktionen nicht, aber

    private: System::Void button1_Click(System::Object^  sender, System::EventArgs^  e) {
       extern int b_costs[2][2][2]; 
       System::String^ str;
       str += b_costs[1][1][1];
       b_main_wood->Text=str;
    }
    

    geht, wenn ich http://heifner.blogspot.com/2007/02/int-to-string-under-managed-c.html recht verstehe.
    vielleicht ist

    private: System::Void button1_Click(System::Object^  sender, System::EventArgs^  e) {
       extern int b_costs[2][2][2]; 
       b_main_wood->Text=System.Convert.ToString(b_costs[1][1][1]);
    }
    

    netter.



  • Das ist genial!!
    Das funktioniert super!! 🙂

    Vielen Dank für die nette und super schnelle Hilfe so spät abends 🙂

    Wünsche noch einen schönen Abend und guten Rutsch ins neue Jahr 🙂


Anmelden zum Antworten