Willkommen auf myCSharp.de! Anmelden | kostenlos registrieren
 | Suche | FAQ

Hauptmenü
myCSharp.de
» Startseite
» Forum
» Suche
» Regeln
» Wie poste ich richtig?

Mitglieder
» Liste / Suche
» Wer ist online?

Ressourcen
» FAQ
» Artikel
» C#-Snippets
» Jobbörse
» Microsoft Docs

Team
» Kontakt
» Cookies
» Spenden
» Datenschutz
» Impressum

  • »
  • Portal
  • |
  • Mitglieder
Beiträge von Little Tester
Thema: Grundsätzliche Verständnisfrage zu get und get
Am im Forum: Grundlagen von C#

Danke für die schnelle Antwort.
Damals war es mir wichtig (schnell) was zu haben mit dem ich arbeiten kann (im Sinne von ich habe die Informationen die ich brauche)

Das habe ich jetzt und nun kann ich mich daran machen das nochmal ordentlich umzusetzen. In Sachen PHP ist das bereits passiert und ich habe neben komplett neuen Code (auf Basis von MVC) auch eine echt schöne GUI zusammengebaut (Die aber noch mit Platzhalterdaten gefüllt ist).

Jetzt ist der C#-Teil dran und da ich was habe das bereits schonmal funktioniert habe ich auch die Zeit und vor allem Ruhe das so anzugehen wie es empfohlen wird. Vor allem habe ich bereits grundlegend funktionierenden Code den ich nun halt so umbauen muss, dass er am Ende immer noch funktioniert. Ich muss mir jedoch keine Gedanken darüber machen, ob ich schon beim Auslesen und ggf. Konvertieren / Formatieren der Werte einen Fehler mache und es deswegen nicht funktioniert, sondern ich weis, dass wenn es nach der Umstellung nicht funktioniert ich die Umsetzung schlicht falsch gemacht habe.

Ich weis, dass das für viele nicht nachvollziehbar ist, aber mir hilft es etwas Schritt für Schritt anzugehen. Etwas von Anfang an "professionell" und "perfekt" lösen zu wollen, damit bin ich in vielen Bereichen (nicht nur in der Programmierung) zu oft auf die Nase gefallen. Deswegen mache ich Dinge inzwischen lieber erstmal rudimentär / provisorisch, sammle Erfahrung und verbessere es dann. Es ist nicht so, dass es länger dauert, sondern es wird überhaupt nur deswegen fertig und ein gutes Ergebnis. (Ist wie beim Führerschein. Anfangs ist man froh, wenn man eine Fahrstunde übersteht ohne den Motor abzuwürgen. Später ist dann selbst das Anfahren an einer Steigung kein Problem mehr.)

Thema: Grundsätzliche Verständnisfrage zu get und get
Am im Forum: Grundlagen von C#

Zitat von Abt
Zitat von Little Tester
@Abt (und alle anderen): Du kennst ja mein Projekt Systeminventory bei dem ich versuche Systeminformationen auszulesen und anzuzeigen.
Ich seh so viel Code pro Woche, wenn Du mir Montags was zeigst weiß ich Dienstagabend nicht mehr wie Dein Code aussah oder worums ging.
Ich merk mir auch nicht jedes Thema, sorry.
OK, dachte das Thema hätte einen bleibenden Eindruck hinterlassen.
Der Code sah seinerzeit so aus: (Auszug, natürlich alles in die Form1.cs geklatscht.)


// Deklaration
string computerCpu;

// Prozessor auslesen
try
{
    var searcher = new ManagementObjectSearcher("SELECT * FROM Win32_Processor");
    using (ManagementObjectCollection managementObjectCollection = searcher.Get())
    {
        ManagementObject managementObject = managementObjectCollection.OfType<ManagementObject>().FirstOrDefault();
        computerCpu = managementObject["name"].ToString();
    }
}
catch (Exception)
{
    MessageBox.Show("Problem im Abschnitt Prozessor");
}

// Ausfüllen der Label
lblComputerCpu.Text = computerCpu;
So habe ich das im Grunde mit allen Werten gemacht die ich ausgelesen habe. Am Ende hatte ich einen Schlauch von ~700-800 Zeilen Code nur um an die Informationen zu kommen und diese anzuzeigen.

Würde / Sollte man sowas mit get/set und Methoden lösen, bzw. sogar in eine Klasse auslegen (Also Klasse für alle Systemvariablen, Hardwarevariablen, Monitorvariablen, Softwareinformationen, ...)? Der Screenshot oben zeigt ja, dass ich das in entsprechende Bereiche unterteilt habe.

Thema: Grundsätzliche Verständnisfrage zu get und get
Am im Forum: Grundlagen von C#

Ich danke euch so weit.
Ich finde das Thema sehr schwierig und habe für mich, bzw. übertragen auf mein Projekt den Nutzen noch nicht so wirklich verstanden, akzeptiere aber, dass es für die Programmierung wichtig ist. Vielleicht liege ich aber auch grundsätzlich falsch und zum Auslesen der verschiedenen Systemvariablen ist das Thema überhaupt nicht wichtig und ich versuche (krampfhaft) etwas auf mein Projekt zu übertragen, was gar keinen Sinn ergeben kann?

@Abt (und alle anderen): Du kennst ja mein Projekt Systeminventory bei dem ich versuche Systeminformationen auszulesen und anzuzeigen. Hat ja in Version 1 dank eurer Hilfe auch geklappt. Kannst du die Frage einfach nur mit "Sinnvoll" oder "Nicht sinnvoll" beantworten ob das Konzept von get und set für diese Sache sinnvoll ist oder ich mich in was verrenne? Wir reden erstmal nur vom auslesen und anzeigen. API zur Übertragung an eine Datenbank oder andere Dinge sind noch kein Thema. V2 startet bei Null auf Basis von .Net 6. Ich habe nochmal ein Screen angehängt.
(Bitte keine Codebeispiele. Wenn es sinnvoll ist will ich von alleine drauf kommen und ggf. dann lieber nochmal nachfragen, ob ich es richtig umgesetzt und damit verstanden habe.)

Ich mache den Kurs jetzt weiter und vielleicht erschließt sich mir das ganze im weiteren Verlauf auch noch. Man merkt hier wirklich, dass ein guter Kurs nicht nur einfach die Grundlagen und Techniken anhand simpler Beispiele erklärt, sondern das Ganze in einem praxisbezogenem Projekt auch angewendet werden muss. Das hat mir bei PHP extrem geholfen und quasi nach ~1,5 Jahrzehnten! zum Durchbruch verholfen, weil der Dozent eines Kurses (Aktualisierte Neuauflage hier) das gemacht hat. (Ein Projekt, das mit fortschreiten des Kurses sich verändert hat und gewachsen ist.)

Thema: Grundsätzliche Verständnisfrage zu get und get
Am im Forum: Grundlagen von C#

Ich arbeite gerade einen C#-Kurs durch.

Der Kurs scheint von der Sache her nicht schlecht zu sein und alle wichtigen Themen zu behandeln. Der Dozent bemüht sich auch die Sache zu erklären, verliert sich aber dann, bzw. springt wild hin und her und lässt es an praxisbezogenen Beispielen missen.

Ich habe das mit dem get und set deswegen noch nicht so ganz kapiert und hoffe, dass ihr es besser erklären könnt.

Grundsätzlich auf mein Projekt übertragen in dem Systemvariablen (beispielsweise freier Festplattenspeicher oder verbaute CPU) vom System ausgelesen werden sollen: Brauche ich da jetzt get und set oder nur get? Ich will ja die Systemvariablen bekommen, also "get". Ich will die Variable dann nicht mehr verändern, weil ich ja die Information dann habe die ich brauche. Ich muss die Information aber auch in einer Variablen speichern um den Wert dann anzeigen zu können oder ggf. weiterverarbeiten zu können (beispielsweise in eine Datenbank übertragen). Also brauche ich doch auch "set"? Aber wenn man für sowas schon beides braucht, wofür braucht man dann NUR get und NUR set? Habt ihr mir da bitte praxisnahe Beispiele? Oder habe ich schon wieder überhaupt nix kapiert und für mein Beispiel reicht "get" aus?

Thema: Ladebildschirm UI blockiert
Am im Forum: GUI: Windows-Forms

Danke euch und Danke Abt für die Verlinkungen.
Ja, in PHP habe ich das MVC-Prinzip bereits umgesetzt. (Damit war ich die letzten Monate beschäftigt) Für die ergänzende Anwendung (ihr erinnert euch an mein Projekt zur Inventarisierung?) will ich das gerade richtig lernen, weil es nun ohne Rest-API nicht mehr gehen wird...

Das hier ist ein Programm, dass ich vor Jahren mal angefangen hatte, dann aber aufgehört habe, weil ich nicht weiter kam und es nun doch vollendet habe.
Es ist nur diese eine Sache übrig geblieben die mich nun stört und beheben will.

Was haltet ihr vom Ansatz in diesem YouTube-Video? (https://www.youtube.com/watch?v=JuIINT41Uf4) Kann man das AUCH so machen, oder sollte ich streng dem Beispielcode im verlinkten Thread folgen?

Thema: Ladebildschirm UI blockiert
Am im Forum: GUI: Windows-Forms

Ich habe mir eine Anwendung erstellt wo man mittels GridView alle Drucker eintragen kann und beim Start wird direkt geprüft, ob diese Online sind.
Das Problem ist, dass nach dem Doppelklick der EXE das Programm im Hintergrund loslegt, aber nichts darauf hindeutet, dass das Programm bereits arbeitet, weil die GUI erst geladen wird nachdem die komplette Liste durch ist und für alle Einträge das Ergebnis vor liegt. Mit zunehmender Größe der Datenbank dauert das halt immer länger. Ich brauche also einen Splashscreen / Ladebildschirm.

Auf YouTube habe ich leider nur Beispiele gefunden, wo das mit einem timer() gelöst wird, aber so ein "Fakeladebalken" bringt mir ja nichts.

Nun würde ich gerne eine der folgenden Möglichkeiten umsetzen, weis aber nicht wie:
1) Ladebalken der Durchläuft und den Fortschritt des Scanvorgangs anzeigt. Im laufenden Programm habe ich sowas bereits und wenn man dort auf "Aktualisieren" klickt oder ein festgelegtes Intervall abgelaufen ist klappt das auch.

2) Momentan ist es noch so, dass das Programm scheinbar einfriert während der Scanvorgang läuft (Egal ob beim Start oder im laufenden Programm getriggert) und dann mit einem Schlag das Ergebnis in allen Zeilen des DataGridView anzeigt. Schöner wäre es, wenn das Ergebnis Zeile für Zeile angezeigt wird sobald es vor liegt. Dann würde das Programm auch nicht "einfrieren".

Anbei mal der Code, wie er jetzt ist und der für die Angelegenheit wohl relevant ist. Ich hoffe, dass nicht alles furchtbar ist und es mit dezenten Verfeinerungen getan ist.


private void Form1_Load(object sender, EventArgs e)
{
    // Prüfen ob die Datenbankdatei existiert.
    if (File.Exists(dataSource))
    {

        // Timer starten. Intervall (in Minuten) wird in den Einstellungen festgelegt.
        timer1.Interval = Convert.ToInt32(Settings.Default["settingIntervall"]) * 60000;
        timer1.Enabled = true;
        timer1.Start();

        // Konfiguration einlesen
        foreach (string? line in deviceFile)
        {
            string[] tokens = line.Split(',');
            comboDevice.Items.Add(tokens[0]);
        }

        foreach (string? line in departmentFile)
        {
            string[] tokens = line.Split(',');
            comboDepartment.Items.Add(tokens[0]);
        }

        // Datagrid-Spaltenüberschriften generieren
        dataGridView1.Columns.Add("Column", "ID");
        dataGridView1.Columns.Add("Column", "Breich");
        dataGridView1.Columns.Add("Column", "Raum-Nr");
        dataGridView1.Columns.Add("Column", "Raum-Name");
        dataGridView1.Columns.Add("Column", "Gerät");
        dataGridView1.Columns.Add("Column", "IP");
        dataGridView1.Columns.Add("Column", "Bemerkungen");
        dataGridView1.Columns.Add("Column", "Status");

        // Datenbank auslesen.
        ReadDB();
        // Funktion ping() ausführen.
        Ping();

        }
        else
        {
                // Datenbankdatei anlegen
        }
}

public void Ping()
{

    int online = 0; // Zählt Online
    int offline = 0; // Zählt Offline
    int notDetermined = 0; // Zählt nicht ermittelte Geräte (Wenn IP nicht gültig)
    progressBar1.Value = 0; // Fortschrittsbalken

    try
    {
        // Füllen des Datagrid mit Daten aus der Datenbank.
        foreach (DataGridViewRow row in dataGridView1.Rows)
        {
            // Prüft ob eine IP-Adresse hinterlegt ist und versucht diese an zu pingen.
            try
            {
                if (row.IsNewRow)
                {
                    break; // Die letzte Zeile (die Leer sein wird) im DataGrid nicht durchlaufen.
                }

                // Ping ausführen. Warte 1,5 Sekunden pro Zeile auf Antwort.
                Ping ping = new Ping();
                PingReply reply = ping.Send(row.Cells[5].Value.ToString(), 1500);

                // Fortschrittsbalken.
                progressBar1.Maximum = dataGridView1.Rows.Count;
                progressBar1.Value++;

                // Wird ausgeführt, wenn die angepingte IP eine Antwort liefert.
                if (reply.Status.ToString() == "Success")
                {

                    // Verbindung herstellen
                    SQLiteConnection dbConnection = new SQLiteConnection("Data Source=" + dataSource + ";Version=3;"); //Create the connection with database
                    dbConnection.Open();

                    // Einfügen der Uhrzeit in die Datenbank
                    string myQuery = "UPDATE printerlist SET online = @_online WHERE id='" + row.Cells[0].Value + "'";
                    SQLiteCommand command = new SQLiteCommand(myQuery, dbConnection);

                    command.Parameters.AddWithValue("@_online", DateTime.Now.ToString("yyyy.MM.dd, HH:mm")); // Aktuelles Datum und Uhrzeit.
                    command.ExecuteNonQuery(); // Update-Befehl ausführen.
                    dbConnection.Close(); // Verbindung schließen.

                    // Schriftzug "Online" in Spalte "Online" anzeigen
                    row.Cells[7].Style = new DataGridViewCellStyle { ForeColor = Color.Green };
                    row.Cells[7].Value = "Online";

                    online++; // Zählen wie viele Geräte online sind.
                }
                else
                {

                    // Datum + Uhrzeit aus der Datenbank auslesen und unter "Online" anzeigen lassen
                    // SQlite-Verbindung herstellen
                    SQLiteConnection dbConnection = new SQLiteConnection("Data Source=" + dataSource + ";Version=3;"); //Create the connection with database
                    dbConnection.Open();

                    // SQlite-Datenbank auslesen
                    SQLiteCommand comm = new SQLiteCommand("SELECT online FROM printerlist WHERE id='" + row.Cells[0].Value + "'", dbConnection);
                    using (SQLiteDataReader read = comm.ExecuteReader())
                    {
                        while (read.Read())
                        {
                            row.Cells[7].Value = read[0].ToString();
                        }
                    }

                    dbConnection.Close(); // Verbindung schließen.
                    offline++; // Zählen wie viele Geräte offline sind.
                }
            }
            catch
            {

                // Fortschrittsbalken.
                progressBar1.Maximum = dataGridView1.Rows.Count;
                progressBar1.Value++;

                // Schriftzug "Nicht ermittelt" in Spalte "Online" anzeigen
                row.Cells[7].Value = "Nicht ermittelt";
                notDetermined++;
                continue;
            }

            lblOnline.Text = "Online: " + online;
            lblOffline.Text = "Offline: " + offline;
            lblNotDetermined.Text = "Nicht ermittelt: " + notDetermined;

        }
    }
    catch (Exception ex)
    {
        MessageBox.Show(ex.Message);
    }
}

Thema: Symbole / Legende für Changelog?
Am im Forum: Smalltalk

OK, Danke.

Thema: Symbole / Legende für Changelog?
Am im Forum: Smalltalk

Ich hatte vor einiger Zeit mal einige Changelogs gesehen, die mit Symbolen, bzw. Zeichen arbeiten, also Beispiel:


[+] = Neue Funktion / neues Feature
[-] = Entfernte Funktion / Entfernte Funktion
[~] = Diverses
usw.

Mir gefällt das System. Ich suche nun die Zeichen für

[] Update Feature / Funktion / Änderung
[] Fix
[] Deprecated 


Ich finde zu dieser Art von Changelog schreiben nichts mehr. Ist das komplett out bzw. außerhalb des Standards und man schreibt es normal, also

[Add]
[Remove]
[Update]
[Fix]
usw.

Thema: Sammelthema Wünsche und Bugreports myCSharp
Am im Forum: Wünsche und Kritik

Nur eine Kleinigkeit und im Grunde auch nicht wirklich wichtig:

[Bug] Das Registrierungsdatum ist bei den Mitgliedern auch gleichzeitig das Datum der letzten Aktivität und auch der letzte Beitrag wurde an diesem Datum erstellt.

Thema: Wie ASP.NET-Anwendungen auf sicheren Stand halten? Wie eigenes Template?
Am im Forum: Web-Technologien

@Abt: Ja, vielleicht sollte der Thread in den Smaltalk-Bereich. Dabei habe ich doch nur fragen wollen, wie man eigentlich so eine ASP-Anwendung die auf mehrere Frameworks im Hintergrund setzt auf sicheren Stand halten kann und mir ein eigenes Template einbinden kann. Ich dachte wirklich ich hätte da was gefunden was mir hilft und womit ich arbeiten und lernen kann.

Dann wurde mir gesagt, dass ich leider wieder auf dem Holzweg bin. Das ist kein Vorwurf, ganz im Gegenteil. Schlimmer wäre es, wenn ich auf der Basis des Tutorials mein Projekt dann begonnen und die Technik angelernt hätte und man mir dann bei der ersten Frage im Projekt sagt, dass das alles Mist ist. Wenn es jetzt nur ein, zwei kleine Punkte wären, die nicht ideal sind, hätte ich das vielleicht noch übergangen, aber du listest ja jede Menge auf, so dass das halt wirklich keine Basis ist. Aber so nahm der Thread seinen Lauf.

Inzwischen weis ich nicht mehr, woran ich mich orientieren soll. Sagt jetzt bitte nicht die offizielle Doku. Das diese (alleine) mir nicht hilft bzw. ausreicht sollte ja durchgesichert sein.

@Palladin007 und ThomasE: Danke für eure Worte und das eingehen.

Thema: Wie ASP.NET-Anwendungen auf sicheren Stand halten? Wie eigenes Template?
Am im Forum: Web-Technologien

Ich programmiere für mich. Von der Firma aus muss ich das nicht. Das ist alleine mein Ding. Es gehört nichtmal zu meinem Arbeitsbereich. (Wäre auch schön blöd mit meinen Fähigkeiten als Programmierer Geld verdienen zu wollen)

Ein Tutorial in Schriftform wäre natürlich auch gut. Aber halt praktisch veranlagt, wo man ein Projekt beginnt und am Ende ein Ergebnis hat. Das Visuelle ist für mich was ganz ganz wichtiges. Wo man sieht wie die Zusammenhänge sind, wie die Rädchen ineinander greifen und wo man das nicht anhand der Theorie erklärt bekommt, womöglich noch mit haufenweise Fachbegriffe. Ich glaube das sind die Worte die es richtig beschreiben. Ich brauche den praktischen Bezug.

Und nein, es ist nicht Faulheit die ich mir eingestehen muss. Bitte unterstelle mir keine Faulheit, das kann ich echt nicht haben und entspricht nicht der Wahrheit. Das ich mich in Sachen Programmierung abmühe ist doch unverkennbar? Die Frage wäre eher, ob ich mir eingestehen müsste, dass ich einfach nicht dafür gemacht bin und in dieser Sache einfach zu dumm bin. Ich weis, dass ich in anderen Bereichen besser bin und auch echt was drauf habe. Das spielt aber hier keine Rolle. Es gibt sicher auch Bereiche wo auch du die Hilfe von anderen brauchst, weil du es alleine nicht kannst. Vielleicht Steuer? Vielleicht Handwerk? Vielleicht KFZ, ... Selbst Albert Einstein war ein miserabler Schüler, gilt zugleich aber als größtes Genie und verstand Dinge die die Wissenschaft selbst heute noch versucht zu begreifen und im Grunde dann nur noch bestätigen kann das er Recht hatte.

Natürlich will ich nicht ohne Doku auskommen. Ich muss die Doku, bzw. was da steht aber erstmal verstehen bevor ich damit arbeiten kann. Vielleicht ist aber auch ein Punkt erreicht, wo es grob gesagt mit "Nachmachen" und "Auswendig lernen" nicht mehr getan ist. Aber das ist nicht Faulheit. Ich kann mir vorstellen, dass es für euch, die ihr es verstanden habt nur schwer vorstellbar ist, wie man das nicht verstehen kann. Ist doch alles logisch. Ich verstehe auch manchmal nicht, wie Leute die einfachsten Dinge am PC nicht hinbekommen und trotz mehrfacher Erklärung spätestens dann wieder hilflos sind, wenn sich auch nur die geringste Kleinigkeit ändert. Aber es ist nunmal so. Deswegen sind die Leute nicht faul, nicht dumm und nicht unwillig. Sie haben ihre Stärken nur woanders.

Es beruhigt mich ja fast, dass Abt schreibt er kennt das Phänomen. Über die 20 Jahre wo ich mich hobbymäßig (mal intensiver und mal gar nicht) mit dem Thema Scripting und Programmierung schon befasse wurde einem immer der Eindruck vermittelt, dass das nur Einbildung ist und gar nicht sein kann und es nur der eigene Unwille wäre sich mit der Thematik richtig zu befassen. Von Abt lese ich zum ersten mal, dass ich scheinbar nicht der Einzige bin der wahnsinnig mit der Theorie hadert. Wenn aber andere das Gleiche sagen und ähnliches berichten muss ja was dran sein, dass es "Theoretiker" und "Praktiker" gibt. Gibt ja schließlich auch Leute, die die Theorie super drauf haben, in der Praxis aber total versagen. Nennen sich dann oftmals Vorstände und Manager

Thema: Wie ASP.NET-Anwendungen auf sicheren Stand halten? Wie eigenes Template?
Am im Forum: Web-Technologien

Danke für eure Antworten und das ihr euch die Zeit genommen habt das Tutorial grob durch zu gucken. Ich lerne am besten am praktischen Beispiel. Ich komme mit der Theorie einfach nicht zurecht. Ihr sagt zwar immer ich soll lesen lesen lesen. Das hat bei mir noch nie funktioniert und war auch ein echtes Problem in der Ausbildung, bzw. einer Fortbildung.

Kurzer Abschweifer zu meiner Ausbildungszeit:
Im Theorieunterricht bin ich auch regelmäßig weggedöst bzw. eingeschlafen, weil ichs einfach nicht kapiert und abgeschaltet habe. Das hat(te) mit Desinteresse nichts zu tun. In der Praxis war ich hingegen immer ganz gut. Dementsprechend waren auch die Noten. Ich kann mich noch gut erinnern wie ich im Bereich "Programmierung" (Streng genommen war es damals nur HTML und C++) im theoretischen eine 5 hingelegt habe, im praktischen Teil aber eine glatte 1 hatte, was mir den Hintern gerettet hat, denn ich war drauf und dran raus zu fliegen. Von der Theorie damals im Grunde keinen Plan gehabt, die gestellte Aufgabe mit dem Bau einer HTML-Seite mit allen geforderten Funktionen aber als einer der Wenigen perfekt gelöst. Zugegeben: Wäre im praktischen Teil der Prüfung C++ dran gekommen hätte ich einpacken können. (Das lag aber am Lehrer, denn da waren alle schlecht mit Ausnahme jener die es vorher schon konnten.) Das ganze ließ sich auf ALLE anderen Bereiche übertragen, egal ob Netzwerktechnik, Elektrik, ISDN... mit Ausnahme von AWL/BWL. Da gab es nur Theorie und entsprechend war die Note. Teilweise kann ich das sogar heute noch nachweisen wenn gewünscht. Ich erzähle also keine Ausreden.

Von daher ist es auch wieder ein Stück weit frustrierend, wenn ich nun lesen muss, dass das Tutorial das ich durchgegangen bin für die Tonne war. Das Projekt konnte man soweit ja prima nachbauen und hätte mein bisheriges Frontend, also die Webseite wo ich die Daten anzeige ablösen können. Sah mir also schonmal nach einer guten Basis aus. Im Grunde fehlte ja "nur" noch die Schnittstelle zur Interaktion mit der C#-Anwendung (Rest API / Web API) und vielleicht ein anderes Template was mehr her macht.
Ich weis nun auch nicht mehr weiter... ein klassischer Fall von "wollen", aber nicht" können"?

Ich frag jetzt einfach mal gerade aus: Hat niemand von euch Lust ein vernünftiges deutsches Lerntutorial auf die Beine zu stellen? Das kann dann gerne hinter einer Paywall angeboten werden. Wie gesagt: Mich interessiert das und ich will es können. Dafür bin ich auch bereit im Rahmen meiner Möglichkeiten Geld in die Hand zu nehmen. Hab ja auch einige Udemy-Kurse gekauft, aber wenn ich fürchten muss, dass da einem nur Quatsch erzählt wird und es nicht so ist, wie es sein soll... Das gleiche wird man dann auch bei den Kursen bei Linkedin Learning fürchten müssen.
[1] Sehr theorielastig. Am Ende ein kleines Projekt, aber ohne GUI (ohne Webseite).
[2] Der gleiche Autor wie bei dem Youtube-Tutorial, nur das der Kurs ausführlicher ist. Wenn ihr aber sagt er macht das nicht richtig brauche ich gar nicht anfangen. Schade, weil sein Stil und Aussprache haben mich angesprochen.
[3] Nur mal reingeschaut.

Mir ist klar, dass ihr damit nichts anfangen könnt, weil dazu müsstet ihr die Kurse ja kaufen, bzw. ein Abo haben. Mir gehts nur darum zu zeigen, dass ich Wissen nicht zum Nulltarif erwarte und dann lieber mal in einen Kurs richtig investiere der von einem von euch stammt und man dann auch im Forum auf einer Wellenlänge ist.

Thema: Wie ASP.NET-Anwendungen auf sicheren Stand halten? Wie eigenes Template?
Am im Forum: Web-Technologien

Ich arbeite gerade dieses Tutorial durch. Er macht das sehr einsteigerfreundlich und praxisorientiert. Gefällt mir und damit kann man auch echt was anfangen. Ich finde es ja trotzdem wahnsinnig umständlich welche Dateien da alle bearbeitet werden müssen und an was man alles denken muss, nur damit beispielsweise ein weiterer Link bzw. eine weitere Seite hinzugefügt werden kann. Die Zusammenhänge muss man kennen und sind für mich stellenweise logisch nicht herleitbar. Auch wie das alles miteinander verwoben ist finde ich undurchschaubar. Alleine: Keine Chance. Aber so ist das wohl und scheinbar jetzt modern.

Wie auch immer. Der YouTuber erklärt auch, wie man seine fertige ASP.NET-Anwendung am Ende hosten kann. Ich stelle mir jetzt unweigerlich die Frage: Da werden so viele Dateien hochgeladen mit denen man im Grunde nichts am Hut hat, bzw. man weis gar nicht was die machen und ob die aktiv am Projekt beteiligt sind. Was ist eigentlich wenn da eine Sicherheitslücke ist. Log4j lässt ja beispielsweise grüßen. Wie updatet man seine Anwendungen eigentlich und stellt sicher, dass gemachte Einstellungen nicht wieder zurückgesetzt werden und es einem alles zerschießt?

Außerdem habe ich nicht rausbekommen können welche Techniken im Hintergrund alle aktiv sind. Der YouTuber erwähnt irgendwann beispielsweise, dass man das Design mittels Bootstrap-Befehle anpassen kann. Zur Zeit des Videos wurde noch auf Bootstrap 4 gesetzt. Welche Bootstrap-Version kommt in VS2022 zum Einsatz und woher weis man das. Ja, ich habe Google befragt, aber Google weis auch nichts. Welche Techniken und Frameworks sind da im Hintergrund noch so alle integriert?

Mich würde auch interessieren, wie ich ein anderes Template verwenden kann. Kann mir das bitte jemand erklären? Kann man das hier irgendwie integrieren?

Ich bin da jetzt ganz am Anfang und will da auch weitermachen, nur will ich das ja später noch weiter miteinander verweben indem ich eine WebAPI integriere um mit meinen PCs, bzw. einer C#Anwendung interagieren zu können. Das wird ja echt heftig dann. Hab jetzt schon nen kleinen Knoten.

Aber eines muss ich zugeben: Wenn man alles erstmal hergerichtet hat kann man sich wunderbar auf das Design konzentrieren und kann es von der Funktionalität trennen. Das gefällt mir. Aber muss man dafür solche Umstände betreiben?

Thema: Was will ich eigentlich lernen?
Am im Forum: Smalltalk

Einige von euch kennen mein Projekt, wo ich die Inventardaten mit einem C# Programm auslese und mittels FLURL.HTTP in eine Datenbank sende um die Einträge dann auf einer Webseite anzeigen zu lassen. Das haben wir ja über Monate durchgekaut und dank eurer Hilfe habe ich ja auch was Funktionierendes. Darum geht es aber auch -es funktioniert. Mehr aber auch nicht und professionell ist es aber nicht.

Nun will ich mir die Zeit nehmen mein bisheriges Projekt neu und professionell aufsetzen mit allem was dazu gehört. Ich bin dafür auch bereit Geld in die Hand zu nehmen und Zeit zu investieren. Das Problem: Ich weiß überhaupt nicht was ich eigentlich lernen soll, bzw. lernen will. Daher kurz nochmal mein Ziel.

Am Ende will ich
- die Systeminformationen auslesen und
- in eine Datenbank schreiben. Diese liegt bei einem Hoster, also keine direkte Kommunikation zwischen C# (WinForms) und Datenbank möglich. Ich denke wir reden hier von RestAPI?
- eine Webseite erstellen, wo ich mir die Informationen anzeigen lassen kann
- mit den PCs kommunizieren können, also beispielsweise dem Anwender über die Webseite eine Nachricht schicken oder den Standarddrucker setzen.

Beim Recherchieren und erste Lernkurse durcharbeiten habe ich aber das Gefühl mich total zu verzetteln. Ich bekomme eine solche Informationsflut, dass ich jetzt gar nicht mehr weiß, welche Techniken für mich schlussendlich von Relevanz sind und welche Techniken am Ende überhaupt miteinander interagieren können / sollen und was ich überhaupt brauche.

Ich lese da von
- ASP.Net Core
- C#
- Frameworks wie Symfony oder Laravel
- Blazor App
- Rest API / Web API / Restful API (Ist das das Gleiche?)

Bei dem Kurs, den ich gerade durch habe, befindet man sich ständig nur im "Swagger"-Modus. Ich hätte am Ende gerne was fassbares. Der Dozent hat sich mit seinem Kurs zwar echt Mühe gegeben, aber ich habe nicht kapiert, was der da gemacht hat, geschweige wie ich das auf mein Vorhaben übertragen kann.

Thema: label1.Text und +=
Am im Forum: Grundlagen von C#

Danke Abt. Jetzt wo du es schreibst...

Ich habe in eine komplett andere Richtung gedacht und gesucht, nämlich entweder nach einer Einstellung für das Label (Visible brachte nichts) oder einen Befehl.
Das war definitiv "zu einfach", weil "zu kompliziert" gedacht.

Aber wenn ich jetzt eh schon dabei bin mich zu blamieren: Gibt es eine Möglichkeit alle Labels die "label1" heißen auf "" zu setzen? Ich meine das was man bei "Text" einträgt, nicht bei "(Name)".

Thema: Codedatei auslagern und einbinden?
Am im Forum: Grundlagen von C#

Nicht "ihr", sondern "du". Ich bastel da alleine in meinem Kämmerlein und bis auf euch und den Rest des Internets habe ich auch niemanden der mir da hilft.

Und ja, mir ging es erstmal darum was funktionierendes zu haben. Das war mir extrem wichtig. Habt ihr sicher auch gemerkt. Das hatten wir (also ich und die Community) ja im letzten halben Jahr erfolgreich hinbekommen. Dafür nochmal Danke an dieser Stelle. Ich bin damit echt schon total glücklich und macht mir die Arbeit angenehmer. Jetzt habe ich den Kopf frei mich darauf zu konzentrieren das Projekt komplett neu und professioneller anzugehen.

Ich migriere das bestehende Projekt auch nicht, sondern habe es komplett neu auf Basis von VS 2022 und .net 6 begonnen. Bislang gibt es nur die GUI. Jetzt sollen Aspekte, wie ihr sie mir schon lange vorgeschlagen habt, mir aber noch zu kompliziert waren, mit einbezogen werden, beispielsweise ASP.NET Core, Rest-API und so. Auch das Web-Backend will ich anders machen und auf Grundlage von Symfony und Bootstrap arbeiten. Jetzt ist es mir auch egal, ob es länger dauert bis ich die neuen Techniken gelernt und (hoffentlich) verstanden habe denn ich habe bereits was mit dem ich arbeiten kann.

Ich habe auch auf Udemy einige Kurse zu den Themen gekauft, die ich durcharbeiten möchte.

Thema: label1.Text und +=
Am im Forum: Grundlagen von C#

Ich gehe vorsorglich schonmal in Deckung, aber ich habe ein ganz dämliches Problem.
Wenn ich die Drucker wie folgt auslese, dann funktioniert das super:


foreach (string printer in System.Drawing.Printing.PrinterSettings.InstalledPrinters)
{
    label1.Text += printer + "\n";
}
Nur leider steht vor dem ersten Drucker das "label1.Text". Wie bekomme ich das weg?

Thema: Codedatei auslagern und einbinden?
Am im Forum: Grundlagen von C#

Also wie ich die *.cs-Datei erstelle weis ich. Deswegen habe ich nicht nachgefragt.

Ich versuche genauer zu erklären, was ich vor habe.

Mein Systeminventory ist in mehrere Bereiche unterteilt. Hardware, System, Monitor, Software Allgemein und Software Lizenzkontrolle.
Nun könnte ich das alles in der Form.cs abarbeiten und habe am Ende über 1000 Zeilen Code in einer Datei. Ob das mit der kommenden Version besser wird, die komplett anders aufgezogen werden soll wird sich zeigen. Der Plan besteht nun darin für all die einzelnen Bereiche eine eigene *.cs-Datei anzulegen, also beispielsweise hardware.cs, system.cs und so weiter.

Nur mit Datei erstellen und loslegen ist es scheinbar nicht getan. Irgendwie muss ich der Datei noch sagen, dass die Form1.cs die Hauptdatei ist, in der sich u.A. alle Deklarationen, Initialisierungen oder vielleicht auch mal Methoden oder Klassen befinden, also sowas wie


bool isOnline = false;
string hardwareComputerName;

Ich denke dann wirkt alles etwas aufgeräumter und übersichtlicher.

Thema: Codedatei auslagern und einbinden?
Am im Forum: Grundlagen von C#

Ich würde gerne meinen Code etwas aufräumen und sortierter halten.
Ich dachte ich mache einfach eine eigene *.cs-Datei in das Projekt, aber so einfach scheint das nicht zu laufen. Jedenfalls wird in der neuen *.cs-Datei nichts erkannt was in der Form1.cs steht. Wie integriere ich die *.cs-Datei ordentlich in mein Projekt oder wonach muss ich suchen?

Thema: .net 6 - Dereferenzierung eines möglichen Nullverweises
Am im Forum: Grundlagen von C#

Also so 100%ig habe ich das mit den vielen Fragezeichen nicht verstanden. Vor allem das readonly string?.
Wenn man die Zeile so ließt sieht es so aus als ob der Entwickler selbst nicht sicher ist, ob die Zeile sinnvoll ist und das macht was man erwartet :D.
Den Rest habe ich dann so Verstanden:
GetExecutingAssembly()? -> Ist *was_auch_immer* vorhanden?
GetName()? -> Ist ein Name vorhanden? (Welcher Name? Von der Anwendung? Warum sollte kein Name vorhanden sein, bzw. geht doch gar nicht ohne?)
Version? -> Ist ein Wert zur Versionierung gesetzt?

Ich habe mal versucht die beiden Felder Assemblyversion und Dateiversion leer zu lassen. Das funktioniert tatsächlich und in der Projektdatei steht auch kein Wert mehr drin. Komischerweise wird mir trotzdem die Version beim Ausführen angezeigt und zwar die, die ich zuletzt drin hatte, also 2.0.0.0. Die GUI hat sich den Wert trotzdem gemerkt. Wo sie den allerdings hernimmt ist mir noch unklar.

Thema: .net 6 - Dereferenzierung eines möglichen Nullverweises
Am im Forum: Grundlagen von C#

Danke Abt. Das habe ich dann falsch verstanden. Ich dachte Paket-Version ist nur bei Veröffentlichungen beispielsweise als Nu-Get Paket von Bedeutung und hat mit der Product-Version nichts zu tun. Steht ja eigentlich auch direkt am Anfang des Abschnitts. Jetzt, wo ich den Eintrag manuell gesetzt habe sehe ich auch, dass es da übernommen wurde.

Lehrt man nicht immer und immer wieder, dass in der Programmierung Befehle eindeutig und unmissverständlich sein müssen, weil sonnst ein Ergebnis entstehen kann, das man nicht erwartet? Tolles Beispiel dafür, wenn man von ProductVersion spricht, aber die PackageVersion meint Ich meine das nicht ironisch. Ist ein sehr praxisnahes Beispiel.

Thema: .net 6 - Dereferenzierung eines möglichen Nullverweises
Am im Forum: Grundlagen von C#

Danke euch. Schon bissel umständlich, dass man die Versionsnummer so einfügen muss. Hätte man ruhig ein Feld in der GUI der Projekteigenschaften machen können, wo man auch Assembly- und Dateiversion eintragen kann. Habs jetzt über "Projektdatei bearbeiten" selbst eingefügt wie von Abt gezeigt. (Danke)

Aber aus Interesse heraus und weil es vermutlich bei anderen Gelegenheiten wieder auftreten wird. Wie behandelt man die Warnung den korrekterweise? Muss man wirklich umständlich eine Abfrage schreiben von wegen


if(Assembly-Version-Feld != leer) {
    lese aus
} else {
    feld ist leer, gibt nix auszulesen
}
Das würde ja den schönen Einzeiler kaputt machen

Außerdem finde ich es nicht 100% sauber, wenn ich einerseits die Product-Version auslese und anzeige, AutoUpdater.NET aber die Assembly-Version heranzieht. Beide Versionen können sich ja unterscheiden und dementsprechend die Fehlersuche erschweren. Was meint ihr?

Thema: .net 6 - Dereferenzierung eines möglichen Nullverweises
Am im Forum: Grundlagen von C#

Ich habe angefangen mein Projekt auf Basis von .net 6 neu zu entwickeln.
Ich bekomme bei folgender Zeile die Warnung:

Zitat
Dereferenzierung eines möglichen Nullverweises


readonly string softwareSysteminventoryVersion = Assembly.GetExecutingAssembly().GetName().Version.ToString();

Ich habe mir den Artikel der das Thema behandelt durchgelesen, aber das Problem habe ich nicht verstanden.
Wenn ich stattdessen


readonly string softwareSysteminventoryVersion = Application.ProductVersion;
verwende ist alles OK. Wo ist den da jetzt der Unterschied? Beide male will ich eine Version auslesen.
Ich hätte mit der Verwendung von Application.ProductVersion auch kein Problem, aber in den Einstellungen von Visual Studio 2022 kann ich die Version nicht ändern. Lediglich Assembly und Dateiversion kann man anpassen. Dort habe ich jeweils auch 2.0.0.0 eingetragen. Application.ProductVersion gibt mir aber Version 1.0.0 zurück. Die Erweiterung AutoUpdater.NET die ich sehr schätze erwartet außerdem ein vierstelliges Format (X.X.X.X). Gibt also dahingehend Probleme.

Thema: Visual Studio 2022 - Designer "hängt" beim Ändern von Elementen
Am im Forum: Entwicklungs- und Laufzeitumgebung (Infrastruktur)

Ich habe das neue Visual Studio 2022 in Version 17.0.2
Mein Projekt ist ein .Net 6.0 mit Zielsystem 10.0.19041.0

Die GUI ist fertig, aber mir fiel auf auf, dass wenn ich das Programm in Visual Studio 17.0.1 ausführte die Änderungen erst nach dem zweiten oder dritten mal übernommen wurden und das ausführbare Programm das Aussehen hatte, wie ich es im Designer festgelegt habe.

Jetzt mit Version 17.0.2 scheint das behoben zu sein, aber dafür "hängt" der Designer gerne mal, wenn man beispielsweise eine Group-Box in der Größe ändern will oder mehrere Labels mittels Auswahlrahmen auswählen will. Das nervt total.
Das war unter Visual Studio 2019 mit .net Framework 4.8 alles nicht der Fall. Ist das bekannt? Habt ihr diese Probleme auch?

Thema: Wie das Gerät zur Audiowiedergabe ändern?
Am im Forum: Rund um die Programmierung

Danke euch allen. Damit sollte mir weiter geholfen sein :-)

Thema: Wie das Gerät zur Audiowiedergabe ändern?
Am im Forum: Rund um die Programmierung

Es ist nur eine Kleinigkeit, aber es nervt mich mittlerweile doch.

Während mir tagsüber für YouTube und co die normalen Boxen genügen, höre ich abends gerne Musik mit meinem hochwertigeren Headset. Außerdem kann man da dann etwas lauter stellen ohne das die Nachbarn gestört werden.

Ich habe mir ja schon "Sound" aus der Systemsteuerung auf das Desktop gepackt, aber auch das ist mit mittlerweile zu aufwendig, weil es ja eigentlich auch schneller geht.

Ich würde mir gerne ein kleines Tool schreiben, dass ich einfach nur Doppelklicken muss und die Audiowiedergabe springt von der Realtek Onboard-Soundkarte auf mein Logitech-Headset, bzw. wieder umgekehrt. Wonach suche ich in C#, bzw. wie kann ich das anstellen? Geht doch sicher mit einer Hand voll Zeilen, oder?

Habe Visual Studio 2022 installiert.

Thema: Visual Studio 2022 - Wozu die Professional kaufen?
Am im Forum: Entwicklungs- und Laufzeitumgebung (Infrastruktur)

OK, Danke für die superschnellen Antworten. Da ich ausschließlich privat, bzw. für einen nicht kommerziellen Betrieb programmiere (deswegen können wir Lizenzen über Stifter-Helfen beziehen) brauche ich das nicht?

Thema: Visual Studio 2022 - Wozu die Professional kaufen?
Am im Forum: Entwicklungs- und Laufzeitumgebung (Infrastruktur)

Ich habe momentan noch die Möglichkeit Visual Studio 2022 zu extrem vergünstigten Konditionen zu bekommen, aber um ehrlich zu sein kann ich keine Unterschiede zur Community-Edition feststellen. Kann da wer nachhelfen? Welchen Grund sollte ich haben die Pro zu kaufen?

Thema: Wann wann darf man eine Frage auch in einem anderen Forum stellen?
Am im Forum: Smalltalk

Ich hatte keine Antwort bekommen und es war in einem anderen Forum zu einer anderen Sprache. Crossposting kann laut Abt unangenehme Folgen haben und ich bin auch niemand der sich nachsagen sagen will mehrere Communitys gleichzeitig zu beschäftigen oder zu ungeduldig zu sein. Nerven will ich auch nicht.
c# Datum umwandeln?
(Der Moderationshinweis)

Thema: Wann wann darf man eine Frage auch in einem anderen Forum stellen?
Am im Forum: Smalltalk

Wir hatten das Thema schon, deswegen frage ich hier auch nach. Ich habe in einem anderen Forum vor über eine Woche eine Frage gestellt, aber keine Antwort bekommen. Ich rechne auch nicht mehr damit. Das Problem konnte ich aber auch noch nicht lösen.

Ab wann ist es laut allgemeiner Netiquette legitim die Frage auch anderswo zu stellen ohne das es als Crossposting gewertet wird?