Laden...

Profil von lukasrad02

myCSharp.de - Member Mitglied seit
L
lukasrad02
myCSharp.de - Member
0
Themen
11
Beiträge
Dabei seit
02.06.2019
Letzte Aktivität
vor 17 Stunden
Erstellt vor 2 Jahren

Hi Apollo56,

ich weiß leider nicht genau, welche zwei Variablen Du meinst, die Du hinzufügen möchtest. Dein struct hat ja aktuell schon zwei Variablen. Daher versuche ich mal, wie Frage ein wenig umzuformulieren:

Du hast das struct "Eintrag" mit den Variablen string Betreff und decimal Betrag. Nun möchtest Du über irgendeinen Weg festlegen können, ob der Betrag eine Einnahme oder eine Ausgabe ist.

Trifft das den Kern Deiner Frage? Falls ja, dann habe ich hier ein paar Denkanstöße für Dich:

  • Du kannst komplett auf eine weitere Variable verzichten, indem Du Einnahmen immer als positive und Ausgaben immer als negative Zahlen speicherst. Damit kannst Du auch den aktuellen Kontostand (ich nehme mal an, etwa das soll das Programm verwalten) ganz einfach ermitteln, indem Du den Betrag alle "Einträge" zusammenaddierst, ohne, dass Du jedes Mal schauen musst, ob der Eintrag eine Einnahme oder Ausgabe ist.
  • Du könntest eine bool'sche Variable (Wahrheitswert) einführen, etwa bool istEinnahme. Wenn es eine Einnahme ist, setzt du istEInnahme auf true, ansonsten auf false. Das ist eine recht einfache Lösung, aber kann nicht gut erweitert werden. Wenn Du zum Beispiel später noch zwischen erhaltenen Überweisungen und erhaltenen Zinsen unterscheiden willst, geht das nicht mehr mit einer einzigen bool-Variable.
  • Du kannst über Enumerationen (enum) arbeiten, ein Beispiel dazu ist unten

public enum EintragTyp
{
    Einnahme,
    Ausgabe
    // Hier könntest du noch weitere Typen definieren, etwa Zinsen, Überweisungen vs. Kartenzahlungen etc
}

public struct Eintrag
{
   public string Betreff;
   public decimal Betrag;
   public EintragTyp Typ;

   public Eintrag(string betreff, decimal betrag, EintragTyp typ)
   {
       Betreff = betreff;
       Betrag = betrag;
       Typ = typ;
   }
}

// Neue Einträge könnten dann wie folgt erstellt werden:
Eintrag eintrag1 = new("Demo-Einnahme", 25, EintragTyp.Einnahme);
Eintrag eintrag2 = new("Demo-Ausgabe", 13, EintragTyp.Ausgabe);

Viele Grüße
Lukas

Erstellt vor 3 Jahren

Hallo theuserbl

du schreibst, dass du die .NET Framework Anwendung nicht mit dem neuen .NET ausführen konntest:

Aber ich hatte mit dem .NET Framework auf Windows ein kleines Hallo-Welt Programm geschrieben gehabt und zu Hallo.exe kompiliert. MIt dem .NET Framework läuft es auch super.

Und was liefert ein ".\dotnet.exe .\Hallo.exe" ?

  
A fatal error was encountered. The library 'hostpolicy.dll' required to execute the application was not found in 'D:\dotnet7\'.  
Failed to run as a self-contained app.  
  - The application was run as a self-contained app because 'D:\dotnet7\Hallo.runtimeconfig.json' was not found.  
  - If this should be a framework-dependent app, add the 'D:\dotnet7\Hallo.runtimeconfig.json' file and specify the appropriate framework.  
  

Das ist auch das erwartete Verhalten. .NET Framework und .NET sind zwei unterschiedliche Laufzeitumgebungen und (abgesehen von ein paar Brücken dazwischen, zum Beispiel .NET Standard) nicht kompatibel. Wenn du also Anwendungen mit der dotnet.exe, die du heruntergeladen hast, ausführen willst, dann müssen diese auch entsprechend für .NET kompiliert worden sein.

Eine beispielhafte Anleitung, wie du .NET Anwendungen entwickeln kannst, hat M.L. dir bereits verlinkt. Dafür brauchst du auch nicht die csc.exe, die du in der zip-Datei vermisst hast, da es inzwischen auch eine neue Compiler-Plattform für .NET gibt. Mehr Informationen zu den Unterschieden von .NET Framework und .NET findet du auch unter [FAQ] Das .NET Ökosystem - .NET, .NET Core, .NET Standard, NuGet und Co.

Viele Grüße
Lukas

Erstellt vor 3 Jahren

Hallo René,

zu Büchern kann ich dir leider nichts empfehlen, aber als du auch Spiele als eine Möglichkeit erwähnt hast, musste ich an AntMe denken. Die Idee dabei ist, dass du eine "KI" programmierst, die deine Ameisen steuert und somit deinem Ameisenvolk beim Überleben, Futtersuche etc. hilfst. Dabei wird C# als Programmiersprache verwendet und man kann den Code auch direkt in Visual Studio schreiben, hat also kaum Einschränkungen in dem, was man umsetzen kann.

Ich bin bisher leider nicht dazu gekommen, es einmal selbst auszuprobieren, deswegen kann ich nicht sagen, wie gut man dabei ans Programmieren herangeführt wird und für welche Altersgruppe es geeignet ist, aber es einmal auszuprobieren sollte ja nicht schaden.

Viele Grüße
Lukas

Erstellt vor 3 Jahren

Hallo Toren,

bisher prüfst du ja noch nicht alle Möglichkeiten, wie Spieler 1 gewinnen könnte ab. Da gibt es ja zum Beispiel:


XXX
OOI
III

oder auch


XOI
XIO
XII

und viele weitere Kombinationen auf dem Feld, die bedeuten, dass Spieler 1 gewonnen hat. Bist du sicher, dass du in deinen Tests die Eingabe so gemacht hat, dass deine Gewinn-Methode es überhaupt erkennen kann? Denk dabei auch daran, dass du zwar erst nach der Spalte (x-Koordinate) und dann nach der Zeile (y-Koordinate) fragst, das Array aber als [y,x] abspeicherst. Vielleicht hast du da auch einen Fehler gemacht und deswegen eine Konstellation zum Testen gewählt, die von der Methode noch gar nicht erkannt wird.

Außerdem kannst du dir mal die Reihenfolge der Methondenaufrufe in der do-while-Schleife deiner Main-Methode ansehen. Wann genau wird geprüft, ob ein Spieler gewonnen hat? Brichst du deinen Test vielleicht ab, bevor das überhaupt geprüft wird?

Viele Grüße
Lukas

Erstellt vor 4 Jahren

Hallo Kikolo,

alle deiner Methoden sind generisch, zu erkennen am Typparameter T. Zusätzlich ist die Methode public static IEnumerable<IEnumerable<T>> Permute<T>(this IList<T> v) eine Erweiterungsmethode, zu erkennen am this vor dem ersten Parameter. Das bedeutet, dass sie wie eine Methode des Typs, den du erweiterst (hier ILIst<T>), aufgerufen werden kann. Weitere Informationen dazu findest du auch in der Doku https://docs.microsoft.com/en-us/dotnet/csharp/programming-guide/classes-and-structs/extension-methods (Docs)

Erstellt vor 4 Jahren

Hi,

ich gehe davon aus, dass du mit den Daten z.B. Benutzereingaben meinst. Diese kannst du doch einfach per Datenbindung zwischen View und ViewModel austauschen, sodass du sowohl lesend als auch schreibend auf die Daten zugreifen kannst, siehe [Artikel] MVVM und DataBinding. Dass das ViewModel die View nicht kennt, ist nischt schlimm, weil der Command ja in der gleichen Instanz des ViewModels aufgerufen wird, in der du auch alle Daten gebunden hast.
Oder meinst du irgendwelche speziellen Daten, die du nicht dadurch abdecken kannst?

Grüße
Lukas

Erstellt vor 5 Jahren

Du musst den Punkt als Dezimaltrenner verwenden.
Außerdem musst du ein String-Literal immer in Anführungszeichen angeben, der Beispielcode sollte so gar nicht kompiliert werden können.

Erstellt vor 6 Jahren

Nach dem Löschen aller Cookies für mycsharp.de funktioniert es bei mir nun auch wieder. Vielen Dank für den Tipp!

Erstellt vor 6 Jahren

Die Forumsettings sind seit ca. 12 Jahren so, dass Du Dich nicht mit zwei Geräten zeitgleich anmelden kannst.
Ist leider so ein phpBB Ding.

Ich habe mich seit gut einer Woche nicht mehr über das WIndows-System angemeldet und fliege auf dem Linux-Rechner trotzdem immer noch raus.

Das Löschen des Cookie Caches scheint das Problem bei mir gelöst zu haben.

Das probiere ich mal aus und melde mich, ob es etwas gebracht hat.

Erstellt vor 6 Jahren

Ich habe genau das gleiche Problem: ich melde mich an, lese einige Beiträge und verlasse dann die Seite, ohne mich abzumelden. Wenn ich einige Zeit später (vllt 1h) wieder das Forum aufrufe (ohne den Browser zwischendrin geschlossen zu haben), bin ich wieder abgemeldet.
Wenn ich mich richtig erinnere, tritt das Problem bei mir auf, seitdem ich von verschiedenen Systemen/Geräten auf das Forum zugreife. Anfangs, als ich immer nur vom gleichen PC aus zugegriffen habe, wurde ich nicht abgemeldet.

Die jeweiligen genutzten Systeme sind:

  1. Win10, aktuelle FF-Version (69.0.1, 64-bit)
  2. Linux Mint, aktuelle FF-Version (69.0.1, 64-bit)