Fehler beim Laden von bmp im Client Read event



  • Hi ihr,

    ich bin grade dabei mit dem BCB 6 ein kleines Kartenspiel zu entwicklen, welches auch Netzwerkfähig sein soll.

    Nun habe ich folgendes Problem, wenn ich im OnClientRead-Event ein Bitmap laden will, bringt er mir immer den Fehler "Zugriffsverletzung bei Adresse so und so".Ich habe kleinen blassen Schimmer wo der herkommt. Wäre nett wenn einer von euch mir helfen könnte.Falls ihr weitere Infos braucht, sagt einfach bescheid. Unten habe ich den Code des Events.

    void __fastcall TForm1::CSocket1Read(TObject *Sender,
          TCustomWinSocket *Socket)
    {
     char Empfangsbuffer[50];
    
     strcpy(Empfangsbuffer,Socket->ReceiveText().c_str());
    
     Team[0].Hand[0].Bild->Picture->Bitmap->LoadFromFile("D:\\C++_Projekte\\Projekt_Arschloch2\\Karten\\1_1");
    
    }
    

    mfg, Quink



  • Hallo

    Warum benutzt du überhaupt das char-Array und strcpy? Immerhin ist ReceiveText doch schon AnsiString. Die Zugriffsverletzung könnte zum schon alleine dadurch kommen das in ReceiveText mehr als 49 Zeichen stehen, die dann nicht ins Array passen. Da könntest du schon mal mit strncpy anstelle von strcpy vermeiden.

    Desweiteren ist für uns hier im Forum auch nicht nachprüfbar ob die nächste Zeile nicht auf Elemente zugreift die es nicht gibt. Benutzt den Debugger und schau nach was genau die Ursache ist.

    bis bald
    akari



  • ich habe das Array eingebaut weil ein Bekannter von mir meinte es wäre sinnvoll. Da ich noch ein totaler Anfänger bei der Netzwerkprogrammierung bin, habe ich mich einfach mal auf ihn verlassen.

    Und was den Debugger angeht...hier bin ich ungefähr genauso erfahren wie in der Netzwerkprogrammierung 🙂 .

    Aber was ich garantieren kann, die Elemente, sprich die Bilder, sind vorhanden. Wenn ich diesen Befehl außerhalb des Events aufrufe funktioniert alles wunderbar. Nur sobald ich auf Methoden oder Eigenschaften von TImage zugreife bringt er die Zugriffsverletzung.



  • Wie sind denn Team und Hand deklariert, und wie werden sie befüllt?



  • ich habe das Array eingebaut weil ein Bekannter von mir meinte es wäre sinnvoll. Da ich noch ein totaler Anfänger bei der Netzwerkprogrammierung bin, habe ich mich einfach mal auf ihn verlassen.

    Und was den Debugger angeht...hier bin ich ungefähr genauso erfahren wie in der Netzwerkprogrammierung.

    Dann solltest du dich erstmal mit den Grundlagen beschäftigen.
    Zuviele neu Dinge auf einaml anzugehen, kann nur im Chaos enden.

    Und deine paar Codezeilen lassen schon Böses erahnen...

    Zur Netzwerkprogrammierung schau dir am Besten mal das Beispiel "Examples/Internet/Chat" in deinem BCB-Ordner an.

    Und den Debugger lernst du am besten kennen, in dem du einen Haltepunkt (Breakpoint) mit F5 in einer Codezeile setzt und dir dann die einzelnen Menüpunkte unter "Start" anschaust (Tastaturkürzel F7, F8, Strg+F5, Strg+F7 etc.)


Anmelden zum Antworten