"lineString" scheint ein komplexes Objekt zu sein das verschiedene "Geometries" und "Points" enthält. Daher kann das rein vom Inhalt her nichts sein was aus einem einzigen double stammt. Erst recht nichts was man durch einen Cast einfach konvertieren könnte.
Ich würde sagen da trifft beides zu. Zum einen falsches Feld und zum anderen muss es eine Konvertierungsroutine geben.
Nachdem du einen Gewinner ermittelt hast, könntest du aus der Prüfmethode heraus springen.
Die Variablen initialisieren wäre kein Schaden. Wird nicht sogar angemeckert dass die keinen eindeutigen Wert bekommen?
Zur Prüfung an sich fällt einem sicherlich das ein oder andere ein.
Zum Beispiel könntest du eine Zeile (Spalte, Diagonale) komplett durchlaufen, dir merken wie viele gleiche Farben du bis zur aktuellen Position schon hintereinander gefunden hast und wenns die vierte mit gleicher Farbe ist, ist das Spiel zu Ende.
Aber ob sich das in der Praxis tatsächlich lohnt?
was passiert wenn der Buchstabe NICHT dem gedrückten entspricht ???
Dann wird er nicht "aufgedeckt". Ansonsten passiert erst mal nichts.
Gehen wirs mal durch. Man gibt ein A ein.
Du prüfst die erste Stelle. Die ist kein A. Wird jetzt schon der Galgen weiter gezeichnet? Nein!
Du prüfst die zweite Stelle. Die ist auch kein A. Es wird immer noch nicht gezeichnet.
Du prüfst die ... Stelle. Die ist ein A. Gut dass du den Galgen noch nicht weiter gezeichnet hast!
Oder: du hast alle Stellen geprüft und nirgends war ein A dabei. DANN kannst du den Galgen weiter zeichnen.
Während du die einzelnen Stellen durchgehst, musst du dir merken ob mindestens eine davon den eingegebenen Buchstaben enthält. Am besten in einem Bool, den du für jede passende Stelle auf true setzt.
Nach der Schleife über die Stellen weißt du dann ob dieser Buchstabe ein Treffer war.
Vermutung rein vom ansehen deines Codes.
Wenn man einen Buchstaben eingibt, prüfst du für JEDE Stelle, ob sie diesen Buchstaben enthält oder nicht. Wenn nicht, zeichnest du den Galgen für JEDE falsche Stelle ein Stück weiter.
Das heißt, ein Wort mit 5 Buchstaben von denen einer der gedrückte ist, zeichnet den Galgen trotzdem um 4 Teile weiter.
Tatsächlich solltest du zuerst prüfen ob es eine Stelle mit dem Buchstaben gibt. Wenn ja, ALLE passenden Buchstaben aufdecken. Wenn nein, den Galgen um EIN Stück erweitern.
Was soll "_ = pictureBox1.CreateGraphics();" sein? Das kann m.M. raus.
die Ausdrücke werden dadurch zum Teil unendlich lang. Hier ein sehr einfaches Beispiel:
Console.WriteLine(TestObjekt.Field[Testklasse.fld.item1]);
58 Zeichen sind doch traumhaft kurz, bezogen auf die Anzahl Zeichen :-)
Ich beziehe die Begriffe "lang" und "kurz" gerne auf die Zeit die man beim Lesen und Verstehen braucht, nicht auf die Länge der Zeile.
Ich würde daher sogar fld noch ausschreiben. Wenn du später wieder in deinen Code schaust und nicht mehr auswendig weißt was das bedeuten soll, ärgerst du dich dass du "damals" nicht ein paar Buchstaben mehr verwendet hast, um zu beschreiben was das sein soll.
Mit den bisherigen Antworten bekommst du deinen Code verkürzt und er bleibt trotzdem noch lesbar und verständlich.
Der Vergleich von zwei Objektvariablen ergibt, ob beide Variablen auf das selbe Objekt zeigen.
Bei einem String will man aber in der Regel nicht wissen ob zwei Stringvariablen auf das selbe Stringobjekt zeigen, sondern ob die Strings vom Inhalt her gleich sind. Der Vergleich von Strings ist daher überschrieben und vergleicht den String Inhalt.
Bildlich: Du hast zwei verschiedene Zettel, also verschiedene Objekte. Auf beiden steht der gleiche Text.
Der Objektvergleich ergibt "sind nicht gleich", denn es sind zwei separate Zettel.
Der Textvergleich ergibt "ist gleich", denn es ist der selbe Text.
Für deinen Vergleich ist das sehr wichtig, denn bisher vergleichst du das Objekt btnStart.Content das selbe Objekt ist wie der String "Start". Das dürfte nicht der Fall sein.
Was du stattdessen wissen willst ist, ob in btnStart.Content der Text "Start" steht.
Die Warnung zeigt an, dass du an dieser Stelle etwas tust, was du eventuell nicht so haben willst.
Ich frage mich nur, warum die erste if-Anweisung vorher nicht gezogen hat.
Schau dir das auch im Debugger an. Ich sehe auf Anhieb keinen Fehler dabei.
Zitat
Was ist der Unterschied es vorher in eine Variable zu schreiben als es direkt im Vergleich zu tun?
Schon die Lesbarkeit ist um einiges besser wenn du keinen irre langen Ausdruck schreibst, sondern eine passend benannte Variable.
Wenn du das dt weglässt und die Variablen date und today nennst, wirds noch flüssiger lesbar.
Außerdem kannst du ein paar Vergleiche weglassen.
Wenn das erste if "dtValue > dtNowPlus60" nicht zutrifft, ist klar dass "dtValue ≤ dtNowPlus60" ist.
Damit reduziert sich das ganze dann zu
if (date > today+60)
return grün
else if (date ≥ today)
return gelb
else
return rot
(mit oder ohne else, wie du es schöner findest)
Anstatt System.Convert würde ich value direkt casten "(DateTime)value". Sieht auch direkt wieder kürzer aus und wenn value kein DateTime ist, knallt dir dein Programm komplett weg, anstatt mit einem eventuell falschen Wert unbemerkt falsch weiter zu machen.
Ist es wirklich die selbe Variable matFilter auf die du da zugreifst?
Falls nein - dann ist das Problem klar. Du erzeugst das Objekt in eine Variable und greifst in der zweiten Methode auf eine andere Variable zu.
Falls ja - dann wird deine Variable zwischen den beiden Methoden auf null gesetzt. Such dir alle Stellen raus die darauf zugreifen und setze einen Breakpoint drauf. Dann findest du sie.
Dann noch eine andere Idee, die Variable gehört ja zu einem Objekt. Ist dieses Objekt bei den Aufrufen der beiden Methoden auch das selbe?
Bevor man dir eine Antwort geben kann, sollte zuerst klar sein was du genau machen willst.
Unter der Beschreibung "nur 7 Zeilen mit je max 11 zeichen an platz" kann ich mir nichts vorstellen. Was bedeutet das?
Ich nutze eine Kreditkarte nur für online Bezahlungen. Oder wenns etwas größeres wirklich teures ist.
Alltägliche Einkäufe bezahle ich mit Bargeld. Es geht einfach keinen etwas an, wann ich wo war und was ich da alles gekauft habe. Wenn ich sehe was ich schon für Werbung zu sehen kriege wenn ich online einen Artikel irgendwo ansehe, will ich nicht wissen wie mein Einkaufsverhalten ausgewertet würde.
Gerade in Foren wie diesem hätte ich etwas mehr Sensibilität für diese Thematik erwartet.
Außerdem will ich nicht erst am Monatsende meine Ausgaben sehen. Ich möchte merken, oh ich hab schon wieder kaum mehr Geld, hab wohl in letzter Zeit viel ausgegeben.
Scherzkeks, offenbar reichen sie ja nicht aus sondern sind schnell unbrauchbar ;-)
Super Verarbeitung ist bei dem Preis nicht zu erwarten. Wäre denkbar dass der Prell-Effekt der Buttons sich durch mechanische Abnutzung ausdehnt und dann mehrfache Klicks erkannt werden.
Die Erkennung der Position könnte vielleicht durch Reinigen der Optik behoben werden? Weiß ich nicht aber einen Versuch wäre es wert.
Wage doch ein Experiment und nimm nächstes mal eine teuere Maus, schreib dir auf wann du die gekauft hast und vergleiche mit bisherigen Erfahrungen.
Details über den Mediaplayer kenne ich nicht, aber anhand deinem Code könnte das ein möglicher Ansatz sein.
Zitat
soll ununterbrochen stattfinde
Das tut sie auch, so schnell es geht.
Das lastet deinen Thread komplett aus, der macht so schnell es ihm möglich ist den Player zu und wieder auf.
Wahrscheinlich kommt er deswegen nicht dazu etwas abzuspielen, denn selbst nach dem Play Aufruf ist Position immer noch kurz 0 und führt dazu dass er wieder geschlossen und neu gestartet wird.
Grund ist wahrscheinlich dass Art keinen String haben will, aber du übergibst einen.
Testweise kannst du die ' ' um txtArt.Text weglassen und schauen obs dann funktioniert.
Dann aber auf jeden Fall in Parameter umändern!
Es geht darum wie es das tatsächliche Problem des Rassismus lösen soll.
Ich sehe hier genau 0 Effekt und Sinn darin.
Ich sehe einen negativen Effekt.
Der Tod von G.F. hat viele Menschen für dieses Thema sensibilisiert und wach gerüttelt.
Diskussionen um einen technischen Begriff schrecken hingegen ab. 'Um so'n Quatsch gehts da? Da hab ich selbst wichtigere Probleme.'
Sehr schlecht!
BLM braucht Interesse und Verständnis, nicht Kopfschütteln!
Warum finden in meinem Freundeskreis ausgerechnet Frauen die ach so gelobten Gendersternchen völlig peinlich und sinnlos?
Weil sie sich dadurch blamiert fühlen und sie noch keiner Frau einen gerechten Lohn beschert haben. Same here.
Zitat
Der Konsenz der Gesellschaftswissenschaftler ist hier aber nicht, dass Du mit der Keule alles sofort erschlagen kannst, sondern dass es eben die kleinen Schritte sind, die langsam die Gesellschaft bewegt.
Völlig richtig!
Was passiert hier soeben?
Woanders wird gegen Ausgrenzung, Anfeindungen, Vorurteile, bis hin zum Tod von Menschen protestiert.
Hier fährt eine Diskussion um einen technischen Begriff diesen Protesten in den Weg, man meint fast sie möchte sie in Dringlichkeit und Wirkung noch überholen.
Noch dazu ein Begriff der bis auf Zusammenhänge die keiner kennt nicht auf Slave hinweist, der nicht Unterdrückerbranch oder Sklaventreiberbranch heißt, sondern einfach nur Hauptbranch.
Ist das nicht eben die Keule mit voller Wucht?
Nennt natürlich eure Branches jederzeit wie ihr möchtet. Das stört keinen weil es sowieso kaum jemand bemerken wird (Wirkung??) und es schadet niemandem.
Aber wenn ihr es macht, dann bitte leise und mit Gespür und Respekt.
Bedenkt dass alles verschieden auf Menschen wirkt. Der starke Wunsch etwas zu tun plus die fehlende Möglichkeit in der eigentlichen Sache könnte die Sicht auf diese Wirkung verzerren.
Zitat
Das Egoismus-Argument ist - finde ich - eine Killerphrase, weil man dagegen praktisch nichts mehr einwenden kann.
Wird oft angewendet, in vielen politischen Themen. Dabei wird Nichtwissen ausgeutzt um Zusammenhänge und somit Wikungen einzusetzen die es gar nicht gibt.
Man kann schon etwas einwenden. Wissen!
Zu deinen Zahlen im Task möchte ich anmerken, schau dir genau an was du da machst.
Du erstellst EIN einziges Objekt für alle Tasks. In diesem Objekt änderst du die Zahl.
Diese Zahl gibst du in der Schleife aus nachdem der Task erstellt wurde. Da ist er aber noch nicht tatsächlich aktiv.
Was der Task zur Laufzeit tatsächlich ausliest wenn er irgendwann dran kommt, weißt du nicht.
Wenn der Task ausgeführt wird, sieht er den Wert der gerade im Objekt steht. Welcher das ist, hängt davon ab wie weit die Main Methode gerade ist.
Abhilfe: Jedem Task ein eigenes Objekt erstellen, dessen Zahl einmalig gesetzt wird und dann unverändert bleibt.
Was mir eingefallen ist, man könnte den Namen des WinForm als String an die Methode übertragen
Das funktioniert solange bis du dein Form umbenennst. Dann findet der Vergleich der Namen nichts mehr und du suchst und suchst...
Noch ein offtpoic Hinweis zu deinem Methodennamen SetzenText.
Wenn du deutsche Bezeichner willst, verwende welche.
Wenn du englische Bezeichner willst, verwende welche.
Aber verwende doch keine deutsch klingenden nicht-deutschen Bezeichner ;-)
Linien kannst du ins Bitmap zeichnen.
Wär dann zu überlegen ob du das Bild bei jeder Änderung komplett neu zeichnest, oder nur die Linien übermalst. Letzteres könnte aber zu komischen Effekten führen, also wahrscheinlich lieber alles komplett neu aufbauen.
Ich verstehe nicht worauf genau du raus willst.
Willst du "Grafiken einbinden", also bestehende Grafikteile aneinander setzen?
Oder willst du Linien selbst zeichnen?
Für beides eignet sich ein Bitmap, auf dem du arbeitest.
Das Event zum zeichnen ist nicht das richtige für diesen Zweck. Es sagt dir wenn ein Control sich neu darstellen will.
Ich glaube nicht dass deine Lösung wirklich das Problem behoben hat.
Du erstellst zuerst ein neues Objekt (new Innere) und weist das an innere zu. Dann weist du etwas ganz anderes an innere zu. Das ist als wenn du schreibst
i = 4;
i = 5;
Die Zuweisung von 4 ist überflüssig, da die 4 gleich von der 5 überschrieben wird. In deinem Fall erstellst du ein Objekt (new Innere() ) ohne es zu verwenden.
Wem hilft es, wenn mein Hauptbranch nicht mehr master heißt?
Vielleicht dir selbst, bei entsprechenden Reaktionen all derer denen du davon erzählst.
Grundsätzlich ist es doch schön wenn jemand helfen will, diese Einstellung hält die Gesellschaft zusammen.
Sich ein Ersatz Problem an sich selbst zu definieren das man in seiner Situation und Umgebung sehr einfach lösen kann, mag naheliegend sein und ein gutes Gefühl geben.
Das ist auch prinzipiell nichts schlechtes. Selbstverständlich kann jeder seine Branches nennen wie er will und sich dabei gut fühlen.
Solange man das was man tut bitte realistisch sieht und nicht das eigentliche Problem aus den Augen verliert!
Wägt gut ab wie sehr ihr eure gute Tat publiziert, wie viel Wirkung ihr ihr zusprecht und wie intensiv ihr zum nachmachen auffordert. Oder gegen Kritiker vorgehen wollt.
Zusammengefasst. Seid euch bewusst dass das schlimmste was passieren kann nicht nur ein Lächeln des Gegenüber ist. Es wäre schade wenn zu viel Engagement auf einer zu entfernten Nebenbühne bei Betroffenen eher schmerzhaft als lobenswert wirkt.
Es gibt Thread.sleep. Sollte man allerdings nicht im Hauptthread verwenden.
Und nachdem es komplexe Konstrukte gibt bei denen man mehrmals hinschauen muss um sie zu verstehen, ist etwas einfaches ja sowieso nicht mehr gewünscht :-)
Ernst gemeinter Rat.
Wenn euch jemand fragt, ob ihr einen Beitrag leisten könnt damit Menschen nicht mehr gedemütigt, beleidigt oder gar getötet werden, sagt um Himmels Willen bitte NICHT "ja, wir nennen Branches und Variablen um".