mikrocontroller.net

Forum: PC-Programmierung c# von kopf bis fuß


Autor: Bob Hulu (Firma: hinter den 7 bergen) (bob128)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi,

bin noch c# Anfänger und arbeite gerade das Buch "c# von Kopf bis fuß" 
durch. Ich bin jetzt angelangt bei dem ersten Workshop es geht um eine 
Hunderennbahn. Ich habe folgendes Problem.

Dieser Code steht in meinem Formular Form1.cs:

 private void button1_Click(object sender, EventArgs e)
        {

            if (label2.Text == "Tim")
            {
                if ( (Gamer[0].WetteAbgeben((int)numericUpDown1.Value, 
(int)numericUpDown2.Value)) == true)
                {
                    spiel.MeinTextbox = textBox1;
                    spiel.BeschreibungAbrufen();
                }
                else
                    MessageBox.Show("Spieler hat nicht genug Geld");
            }
            else if (label2.Text == "Tom")
...........

ich rufe die methode "wetteabgeben" auf und übergebe zwei int werte :

Dieser Code steht in einer anderen Klasse "Spieler.cs":

 public bool WetteAbgeben(int betrag, int hund)
        {
            //Setzt eine Wette und speichert sie in MeineWette
            //Liefert true, wenn der Spieler genug Geld hat
            if (betrag > 0 && betrag >= 5)
            {
                Meinewette = new Wette() { Betrag = betrag, Hund = hund, 
Wetter = this };
                return true;
            }
            else return false;
        }

diese beiden int Werte sollten eigentlich in "Betrag" und "Hund" 
eingetragen werden aber nach dieser anweisung sind sie beide immer noch 
null auch der Parameter "Wetter" ist danach auf null

Autor: Andreas Kanzler (scavanger)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
So schlecht zu sagen, das Problem liegt glaube ich in der Klasse Wette.

> if (betrag > 0 && betrag >= 5)

Warum überprüfst du betrag auf auf grösser 0? Wenn er grösser/gleich 5 
ist ist auch grösser 0 ;-)

> if ( (Gamer[0].WetteAbgeben((int)numericUpDown1.Value,
> (int)numericUpDown2.Value)) == true)

Der klassische Anfängerfehler.
Das "== true" weglassen, da die Funktion WetteAbgeben ja schon einen 
boolschen Ausdruck zurückliefert, den brauchst du nicht nochmal zu 
überprüfen.
Was du damit eigentlich ist sagt ist
if (True == True)
...
bzw
if (False == True)
...

Autor: Bob Hulu (Firma: hinter den 7 bergen) (bob128)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
ich hab alles nochmal über den haufen geworfen und neu angefangen jetzt 
gehts schon besser aber trotzdem danke für den tip

Autor: Bob Hulu (Firma: hinter den 7 bergen) (bob128)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
mal ne andere frage ich habe im Form1.cs diesen button hier:

 private void radioButton1_CheckedChanged(object sender, EventArgs e)
        {
            Gamer[0].LabelAktualisieren();
            Gamer[0].Meinewette.BeschreibungAbrufen();
        }

mir gehts es um die methode "BeschreibungAbrufen()" in der Klasse 
Wette.cs

public string BeschreibungAbrufen()
        {
            //Liefert einen String der den Wetter den gesetzten Betrag
            //und den gewetteten Hund angibt ("tim wettet 8 € auf Hund 
4").
            //Ist der Betrag null, wurde nicht gewettet ("Tim hat nicht 
gewettet");

            if (Wetter.Meinewette.Betrag == 0)
            {
                return Wetter.MeinTextbox.Text = Wetter.Name + " hat 
nicht gewettet";
            }
            else
            {
                return Wetter.MeinTextbox.Text = Wetter.Name + " wettet 
" + Wetter.Meinewette.Betrag + " € auf Hund" + Wetter.Meinewette.Hund;
            }
        }

diese Methode sollte dafür sorgen das beim Starten des Programms die 
if-Anweisung ausgeführt wird weil ja noch nicht gewettet wurde aber in 
der Textbox steht gar nichts warum erkennt das Programm nicht das in 
Betrag im Moment noch eine 0 drin steht?

Autor: Bob Hulu (Firma: hinter den 7 bergen) (bob128)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
ok habs nochmal bissle verändert aber es klappt immer noch nicht:
public partial class Form1 : Form
{
Windhund[] hunde = new Windhund[4];
Spieler[] Gamer = new Spieler[3];
Wette spiel = new Wette();

public Form1()
{
InitializeComponent();

Gamer[0] = new Spieler { Name = "Tim", Geld = 50, Meinewette = null, MeinRadiobutton = radioButton1, MeinTextbox = textBox1, MeinLabel = label2};
Gamer[1] = new Spieler { Name = "Tom", Geld = 75, Meinewette = null, MeinRadiobutton = radioButton2, MeinTextbox = textBox2, MeinLabel = label2 };
Gamer[2] = new Spieler { Name = "Jan", Geld = 45, Meinewette = null, MeinRadiobutton = radioButton3, MeinTextbox = textBox3, MeinLabel = label2 };

Gamer[0].LabelAktualisieren();
Gamer[1].LabelAktualisieren();
Gamer[2].LabelAktualisieren();

Gamer[0].Meinewette.BeschreibungAbrufen();
Gamer[1].Meinewette.BeschreibungAbrufen();
Gamer[2].Meinewette.BeschreibungAbrufen();

}

dabei sollen diese Anweisungen

Gamer[0].Meinewette.BeschreibungAbrufen();
Gamer[1].Meinewette.BeschreibungAbrufen();
Gamer[2].Meinewette.BeschreibungAbrufen();

Auf dem Formular diesen text hier einfügen "Spielername hat noch nicht 
gewettet" also z.B. Gamer[0] => "Tim hat noch nicht gewettet"

die Methode "BeschreibungAbrufen()" in der Klasse "Wette.cs"

sieht so aus:
public string BeschreibungAbrufen()
{
//Liefert einen String der den Wetter den gesetzten Betrag
//und den gewetteten Hund angibt ("tim wettet 8 € auf Hund 4").
//Ist der Betrag null, wurde nicht gewettet ("Tim hat nicht gewettet");

if (Wetter.Meinewette.Betrag == 0)
{
return Wetter.MeinTextbox.Text = Wetter.Name + " hat nicht gewettet";
}
else
{
return Wetter.MeinTextbox.Text = Wetter.Name + " wettet " + Wetter.Meinewette.Betrag + " € auf Hund" + Wetter.Meinewette.Hund;
}
}

es tut sich aber gar nichts im Formular in der Textbox obwohl Betrag ja 
noch null ist der Button "wettet" wurde noch nicht betätigt und somit 
müsste da noch 0 drinstehen irgendjemand ne idee?

Autor: Markus E. (engelmarkus)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
return Wetter.MeinTextbox.Text = Wetter.Name + " hat nicht gewettet";

Was soll das deiner Meinung nach bewirken?

Autor: Bob Hulu (Firma: hinter den 7 bergen) (bob128)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
wie gesagt bin noch c# anfänger ich wollte damit bewirken das in der 
jeweiligen textbox dieser string eingetragen wird

Autor: Markus E. (engelmarkus)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Dann musst du aber das "return" weglassen... damit kannst du ein 
Ergebnis einer Funktion zurückgeben:
int addieren(int z1, int z2) {
  return z1 + z2;
}

int ergebnis = addieren(3, 5);

// ergebnis ist jetzt 8

Autor: Bob Hulu (Firma: hinter den 7 bergen) (bob128)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
was ist wenn ich so schreiben würde :

....
string botschaft;

return botschaft=Wetter.MeinTextbox.Text = Wetter.Name + " hat nicht gewettet";

würde das so gehen und sinn machen? :-)

Autor: Markus E. (engelmarkus)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ich weiß echt grad nicht was du willst... so vielleicht?
public string BeschreibungAbrufen() {
  if (Wetter.Meinewette.Betrag == 0) {
    Wetter.MeinTextbox.Text = Wetter.Name + " hat nicht gewettet";
    return Wetter.Name + " hat nicht gewettet";
  }
  // ...
}
Das setzt jetzt zum einen den Text in der "MeinTextbox" auf "... hat 
nicht gewettet" und gibt danach diesen string zusätzlich noch zurück.


Für eine normale Zuweisung an eine Variable brauchst du kein "return". 
Genauso wie dus hier ja auch gemacht hast:
Wette spiel = new Wette();

Autor: Bob Hulu (Firma: hinter den 7 bergen) (bob128)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
alles im programm läuft bis auf diesen scheiss ich weiß net was der von 
mir will (siehe screenshot)

Autor: Markus E. (engelmarkus)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Sagt er doch... "Wetter ist NULL" :) .
Spieler Wetter;

Wetter.MeineWette.Betrag = 0;
Kann nicht gehen, weil Wetter nur eine Referenz ist, aber auf noch nix 
"zeigt". Neue Objekte von Klassen musst du immer so erstellen:
Spieler Wetter = new Spieler();
Erst jetzt darfst du "Wetter" auch verwenden.

Das sollte in dem Buch aber auch erklärt werden :) .

Autor: Bob Hulu (Firma: hinter den 7 bergen) (bob128)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
nö geht leider immer noch nicht alles im Programm läuft bis auf diesen 
scheiss ich könnte kotzen ich will nur die variable "Betrag" für jeden 
Gamer abfragen und dann einen string an die zugehörige textbox senden 
ungefähr so:
Gamer[0].MeinTextbox.Text = Gamer[0].Meinewette.BeschreibungAbrufen();
            Gamer[1].MeinTextbox.Text = Gamer[1].Meinewette.BeschreibungAbrufen();
            Gamer[2].MeinTextbox.Text = Gamer[2].Meinewette.BeschreibungAbrufen();

aber es kommt immer dieser nullref. fehler

ps: hab deinen vorschlag ausprobiert aber der fehler bleibt

Autor: Markus E. (engelmarkus)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Vielleicht liegts jetzt daran:
Meinewette = null
Ganz oben, wo du die neuen Spieler erzeugst...

Autor: Andreas Kanzler (scavanger)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Genau,

Wetter.Meinewette hast du beim Programmstart auf NULL festgelegt, damit 
existiert Wetter.Meinewette.Betrag gar nicht, also kann sie auch nicht 0 
sein, daher die Fehlermeldung.

Du musst überprüfen ub das Objekt null ist bevor auf auf die Eigenschaft 
zugreifst, also muss die if Abfrage in deinen Screenshop so laufen:
if (Wetter.Meinewette == null || Wetter.Meinewette.Betrag == 0)
...

Autor: Bob Hulu (Firma: hinter den 7 bergen) (bob128)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
vielleicht bringt es was wenn ich den ganzen code für die beiden klassen 
uploade die soviel ärger machen ich weiß net mehr weiter :-)
namespace hunderennen
{
    
    public partial class Form1 : Form
    {
        Windhund[] hunde = new Windhund[4];
        Spieler[] Gamer = new Spieler[3];   
        Wette spiel = new Wette();
        
        public Form1()
        {
            InitializeComponent();

            Gamer[0] = new Spieler { Name = "Tim", Geld = 50, Meinewette = spiel, MeinRadiobutton = radioButton1, MeinTextbox = textBox1, MeinLabel = label2};
            Gamer[1] = new Spieler { Name = "Tom", Geld = 75, Meinewette = spiel, MeinRadiobutton = radioButton2, MeinTextbox = textBox2, MeinLabel = label2 };
            Gamer[2] = new Spieler { Name = "Jan", Geld = 45, Meinewette = spiel, MeinRadiobutton = radioButton3, MeinTextbox = textBox3, MeinLabel = label2 };

            Gamer[0].LabelAktualisieren();
            Gamer[1].LabelAktualisieren();
            Gamer[2].LabelAktualisieren();

            Gamer[0].MeinTextbox.Text = Gamer[0].Meinewette.BeschreibungAbrufen();
            Gamer[1].MeinTextbox.Text = Gamer[1].Meinewette.BeschreibungAbrufen();
            Gamer[2].MeinTextbox.Text = Gamer[2].Meinewette.BeschreibungAbrufen();
            
        }

        private void radioButton1_CheckedChanged(object sender, EventArgs e)
        {
            Gamer[0].LabelAktualisieren();
        }

        private void radioButton2_CheckedChanged(object sender, EventArgs e)
        {
            Gamer[1].LabelAktualisieren(); 
        }

        private void radioButton3_CheckedChanged(object sender, EventArgs e)
        {
            Gamer[2].LabelAktualisieren();
        }

        private void button1_Click(object sender, EventArgs e)
        {
            bool spielerhatgeldjaodernein;
          
            if (label2.Text == "Tim")
            {
                spielerhatgeldjaodernein=Gamer[0].WetteAbgeben((int)numericUpDown1.Value, (int)numericUpDown2.Value);
               // MessageBox.Show(Gamer[0].Meinewette.Betrag.ToString() + Gamer[0].Meinewette.Hund.ToString());

                if (spielerhatgeldjaodernein == true)
                {
                    Gamer[0].Meinewette.BeschreibungAbrufen();
                    Gamer[0].LabelAktualisieren();
                }
                else
                {
                    Gamer[0].MeinTextbox.Text = "Spieler hat nicht genug Geld";
                    Gamer[0].LabelAktualisieren();
                }
            }
            else if (label2.Text == "Tom")
            {
                spielerhatgeldjaodernein = Gamer[1].WetteAbgeben((int)numericUpDown1.Value, (int)numericUpDown2.Value);
                // MessageBox.Show(Gamer[0].Meinewette.Betrag.ToString() + Gamer[0].Meinewette.Hund.ToString());

                if (spielerhatgeldjaodernein == true)
                {
                    Gamer[1].Meinewette.BeschreibungAbrufen();
                    Gamer[1].LabelAktualisieren();
                }
                else
                {
                    Gamer[1].MeinTextbox.Text = "Spieler hat nicht genug Geld";
                    Gamer[1].LabelAktualisieren();
                }
            }
            else if (label2.Text == "Jan")
            {
                spielerhatgeldjaodernein = Gamer[2].WetteAbgeben((int)numericUpDown1.Value, (int)numericUpDown2.Value);
                // MessageBox.Show(Gamer[0].Meinewette.Betrag.ToString() + Gamer[0].Meinewette.Hund.ToString());

                if (spielerhatgeldjaodernein == true)
                {
                    Gamer[2].Meinewette.BeschreibungAbrufen();
                    Gamer[2].LabelAktualisieren();
                }
                else
                {
                    Gamer[2].MeinTextbox.Text = "Spieler hat nicht genug Geld";
                    Gamer[2].LabelAktualisieren();
                }
            }
           
        }

        private void button2_Click(object sender, EventArgs e)
        {
            hunde[0] = new Windhund { Bild = pictureBox2 };
            hunde[1] = new Windhund { Bild = pictureBox3 };
            hunde[2] = new Windhund { Bild = pictureBox4 };
            hunde[3] = new Windhund { Bild = pictureBox5 };

            bool laeuft = false;
            

            while (laeuft == false)
            {
                for (int i = 0; i <= 3; i++)
                {
                    laeuft = hunde[i].Laufen();

                    if (laeuft)
                    {
                        if (i == 0)
                        { i++; } //weil sonst wurde in der messagbox Hund 0 rauskommen

                        for (int s = 0; s < Gamer.Length; s++)
                        {
                            Gamer[s].Einkassieren(i);
                            Gamer[s].LabelAktualisieren();
                        }
                        
                        MessageBox.Show("Hund Nummer:  " + i + " hat gewonnen !");

                        for (int m = 0; m <= 3; m++)
                        {
                            hunde[m].StartpositionEinnehmen();
                        }
                                              
                        break;
                    }//ende if
                }//ende for
            }//ende while
        }

    }
}

namespace hunderennen
{
    public class Wette
    {
        public int Betrag; //der gesetzte Geldbetrag
        public int Hund; // die Nummer des gewetteten Hundes
        public Spieler Wetter; //der wettende Spieler
        

        public string BeschreibungAbrufen()
        {         
            //Liefert einen String der den Wetter den gesetzten Betrag
            //und den gewetteten Hund angibt ("tim wettet 8 € auf Hund 4").
            //Ist der Betrag null, wurde nicht gewettet ("Tim hat nicht gewettet");  
            string botschaft;

            if (Wetter.Meinewette == null || Wetter.Meinewette.Betrag == 0)
            {                
                botschaft = Wetter.MeinTextbox.Text = Wetter.Name + " hat nicht gewettet";
                return botschaft;
            }
            else
            {
                botschaft = Wetter.MeinTextbox.Text = Wetter.Name + " wettet " + Wetter.Meinewette.Betrag + " € auf Hund " + Wetter.Meinewette.Hund;
                return botschaft;
            }  
           

                             
        }

        public int Auszahlen(int sieger)
        {           
            //der parameter ist der sieger des rennens. gewann der hund,
            //wird der gewettete betrag zurückgeliefert, andernfalls die
            //negation des gewettetn betrags
            if (Wetter.Meinewette.Hund == sieger)
            {
                int gewinn;
                return gewinn = Wetter.Geld + Wetter.Meinewette.Betrag;
            }
            else
            {
                int verlust;
                return verlust = Wetter.Geld - Wetter.Meinewette.Betrag;
            }
        }
    }
}

alles im Programm funktioniert bis auf diese Methode 
"BeschreibungAbrufen()"

Autor: Lasse S. (cowz) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Scheint ja n tolles Buch zu sein.

Was ist denn die aktuelle Fehlermeldung?

Autor: Lasse S. (cowz) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
So, ich hab nochmal drüber geguckt:
if (Wetter.Meinewette == null || Wetter.Meinewette.Betrag == 0)
   {                
      botschaft = Wetter.MeinTextbox.Text = Wetter.Name + " hat nicht gewettet";
      return botschaft;
   } else ...

Was passiert denn, wenn Wetter == null ist? Und das ist doch, soweit ich 
das sehe (die Klasse Spieler fehlt) hier der Fall, oder?

Gruß
CowZ

Autor: Bob Hulu (Firma: hinter den 7 bergen) (bob128)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
das buch is eigentlich nicht schlecht nur nach ein paar wenigen kapiteln 
kommt das erste große projekt wo auch sachen drankommen die nicht im 
buch erklärt wurden da musste ich ds inet zu rate ziehen für den 
workshop gibts eben keine musterlösung aber jetzt sitz ich schon solange 
an der dran das will ich unbedingt rauskriegen  :-)

Autor: Andreas Kanzler (scavanger)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
            string botschaft;

            if (Wetter.Meinewette == null || Wetter.Meinewette.Betrag == 0)
            {                
                botschaft = Wetter.MeinTextbox.Text = Wetter.Name + " hat nicht gewettet";
                return botschaft;
            }
            else
            {
                botschaft = Wetter.MeinTextbox.Text = Wetter.Name + " wettet " + Wetter.Meinewette.Betrag + " € auf Hund " + Wetter.Meinewette.Hund;
                return botschaft;
            }  

Da kann gar nicht funktionieren, lass die Hilfsvariablen weg, sondern 
gib den String zurück. Und die Textbox hat in der Klasse nichts 
verloren.

z.B. so:
return Wetter.Name + " hat nicht gewettet";

Autor: Bob Hulu (Firma: hinter den 7 bergen) (bob128)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
ja das mit der textbox stimmt die hat da wirklich nix zu suchen aber ich 
hab mal gedebuggt fogendes passiert:

wenn in der initialisierung Meinewette=null ist

kommt der fehler schon beim aufruf der methode
Gamer[0].MeinTextbox.Text = Gamer[0].Meinewette.BeschreibungAbrufen();

wenn die Initialisierung auf Meinewette=spiel oder Meinewette= new 
Wette()
geändert wird kommt der fehler erst bei der if abfrage:
if (Wetter.Meinewette == null || Wetter.Meinewette.Betrag == 0)

Autor: Bob Hulu (Firma: hinter den 7 bergen) (bob128)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
ok ich habs jetzt:
public Form1()
        {
            InitializeComponent();

            Gamer[0] = new Spieler { Name = "Tim", Geld = 50, Meinewette = null, MeinRadiobutton = radioButton1, MeinTextbox = textBox1, MeinLabel = label2};
            Gamer[1] = new Spieler { Name = "Tom", Geld = 75, Meinewette = null, MeinRadiobutton = radioButton2, MeinTextbox = textBox2, MeinLabel = label2 };
            Gamer[2] = new Spieler { Name = "Jan", Geld = 45, Meinewette = null, MeinRadiobutton = radioButton3, MeinTextbox = textBox3, MeinLabel = label2 };

           
            for (int i = 0; i <  Gamer.Length; i++)
            {
                Gamer[i].LabelAktualisieren(); 
            }
            
            for (int s = 0; s < Gamer.Length; s++)
            {
                Gamer[s].Meinewette = new Wette();
                Gamer[s].WetteAbgeben(Gamer[s].Meinewette.Betrag, Gamer[s].Meinewette.Betrag);
                Gamer[s].Meinewette.BeschreibungAbrufen(); 
            }
            
        }

ich weiß das in der methode die Gui textbox nicht hätte beschrieben 
werden sollen aber in dem workshop ging es eben darum von anderen 
klassen diesen spagat zu der Gui Klasse Form1.cs zu machen und ja ich 
weiß dafür is OOB Pragrammieren eigentlich net gedacht bitte nicht 
gleich auf den deckel hauen ich bin nur froh das es jetzt geht.

wenns noch interessiert habe es durch debuggen rausbekommen als aller 
erstes ist diese Initialisierung nicht falsch "Meinewette = null"

aber bevor man methoden mit dieser instanz aufrufen kann  ist diese 
anweisung entscheidend:

Gamer[s].Meinewette = new Wette();

ich habe immer noch die gleiche abfrage in der methode
if (Wetter.Meinewette.Betrag == 0)

nur nach der methode wetteabgeben sind die gamer und damit auch wetter 
erst vorhanden und initialisiert und erst jetzt kann ich den betrag 
abfragen also gute nacht ich bin k.o. :-)

Autor: Andreas Kanzler (scavanger)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Na dann, Glückwunsch!

ja, GUI Elemnte von anderen Klassen verändern zu lassen ist "Bäh".

Noch was:
            for (int i = 0; i <  Gamer.Length; i++)
            {
                Gamer[i].LabelAktualisieren(); 
            }

Nicht schön, dafür gibt's die foreach-Schleife:
foreach (Spieler gamer in Gamer)
   gamer.LabelAktualisieren();

Gilt natürlich auch für die for-Schleife darunter...

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.