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 Alf Ator
Thema: Fragen zur Schnittstelle Sharp7 (C# - S7)
Am im Forum: Code-Reviews

Hallo Tommylik

Ich vermute, dass result noch gefüllt werden kann, z.b. ob die DBRead-Operation erfolgreich war.

[Edit]
Ich habe jetzt doch mal nachgeschaut, in der von dir verlinkten Seite kann man ein Beispiel dazu finden:


private ComponentResult LeakResult()
{
    ComponentResult Result = new ComponentResult();
    byte[] Buffer = new byte[26];
    // Reads the buffer.
    Client.DBRead(100, 0, 26, Buffer);
    // Extracts the fields and inserts them into the struct
    Result.SerialNumber = S7.GetCharsAt(Buffer, 0, 12);
    Result.TestResult = S7.GetIntAt(Buffer, 12);
    Result.LeakDetected = S7.GetRealAt(Buffer, 14);
    Result.TestDateTime = S7.GetDateTimeAt(Buffer, 18);
    return Result;
}


Gruß
Alf

Thema: Formularwechsel mit .DLL funktioniert nicht
Am im Forum: GUI: Windows-Forms

Zitat von Loofsy
Ich lösche den Panelinhalt mit Clear(); und füge den neuen Inhalt mit Add(form) ein.


Dann müsste ja alles funktionieren. ;-)

Aber jetzt mal ernsthaft, ich kann mit den wenigen Angaben die du machst wenig anfangen.
Versuche mal deinen Text zu lesen und stell dir vor, du weißt nicht worum es geht.
Ich kann hier also nur raten. Hast du denn die Assembly in dein Projekt eingebunden, baut es?

Gruß
Alf

Thema: Formularwechsel mit .DLL funktioniert nicht
Am im Forum: GUI: Windows-Forms

Hallo Loofsy

Wie sieht denn der Code in deinem Button-Klick aus?

Gruß
Alf

Thema: [gelöst] Aus mehrere XML Dateien Daten extrahieren
Am im Forum: Datentechnologien

Zitat von IchAJ
Noch eine Frage: wie kann ich das Thema schließen?

Wie schon geschehen, einfach im Titel ein [gelöst] davor schreiben.

Thema: API zu einer Klasse, Grundschwatzfrage
Am im Forum: Grundlagen von C#

Hallo panicJonny

Zitat von panicJonny
Da hab ich mir gedacht, ich mache für häufige Datentype spezielle Methoden.

Zum Beispiel StringConverter.ToInt(string).

Wäre das eigentlich zu viel des Guten und fallen euch andere Lösungen ein?

Das kannst du schon so machen. Das ist für die BasisTypen ja eine nette Verbesserung der Lesbarkeit.

Du könntest das auch noch als Extension-Method anbieten:


var result = "123".ToInt();

Gruß
Alf

Thema: Wie kann ich zwei bool Werte invertieren?
Am im Forum: Grundlagen von C#

Hallo LaTuor

Zitat von LaTuor
Wenn ich den Radio anmache geht der Bool von aus=true in aus=false und gleichzeitig geht ja ein=false zu ein=true. Wie macht man das?


public bool IsAngeschaltet { get; set; }
public bool IsAusgeschaltet => !IsAngeschaltet;

Gruß
Alf

Thema: Wie kann ich aus .NET Core via COM-Call eine .NET Framework Assembly aufrufen, die Reports erzeugt?
Am im Forum: Entwicklungs- und Laufzeitumgebung (Infrastruktur)

Zitat von Abt
Die letzten Monate haben eher gezeigt, dass so eine "Zwitter-Runtime" mit .NET Core -> NET Framework -> COM keine gute Idee ist und das nicht so super toll funktioniert.

Ich gehe sogar soweit zu behaupten, dass COM niemals mehr benutzt werden sollte und jeder! andere Ansatz besser (weniger schlecht) ist.


Noch zur Sache:
Du könntest den Report-Teil ja als eigene Applikation laufen lassen.
Werf ihm die Daten als XML hin und lass eine deine Report-App drüber laufen, oder biete das ganze als REST-Service an. Gibt da einige Möglichkeiten.

Thema: Wie kann ich die Tasten left, right, up down an ein serielles Gerät senden?
Am im Forum: Basistechnologien und allgemeine .NET-Klassen

Hi Wollez

Schau mal in das Keys Enum, was du genau sendest:

Die Frage ist auch noch, wann du deinen .Write-Befehl überhaupt absetzt. Im KeyDown-Event oder so?
Bist du mal mit dem Debugger dahin?

Bei SendKeys.Send steht in der Doku übrigens {DOWN} und nicht {down}. Kein Plan ob das einen Unterschied macht, aber als Entwickler solltest du auf so Kleinigkeiten achten.

Gruß
Alf

Thema: [Gelöst] Wie kann ich mit möglichst kurzer Syntax Items in einem Dictionary adressieren?
Am im Forum: Basistechnologien und allgemeine .NET-Klassen

Hallo pollito

Du kannst noch nameof() verwenden:


public string Nummer => this.Fields[nameof(Nummer)];

public Dictionary<string, string> Fields = new Dictionary<string, string>()
{
    {nameof(Nummer), "Das ist NUMMER"},
};


Ansonsten noch ein Link zur Info: DynamicObject Class
Sowas sollte aber nur in absoluten Ausnahmefällen Anwendung finden.

Gruß
Alf

Thema: [SUCHE] Tool, welches unter Win10 Einstellungen prüft und nach einer Vorgabe anpasst
Am im Forum: Smalltalk

Über das Rechte-System lassen sich die Einstellungen auch im Detail vornehmen.

Du kannst den Rechner auch im sogenannten Kiosk-Mode laufen lassen.
Beispiele:
https://docs.microsoft.com/en-us/windows/configuration/kiosk-single-app
https://www.wintotal.de/tipp/windows-10-kiosk-modus/

Vor 20 Jahren habe ich die Schul-PCs bei Bedarf mit einem Image überbügelt. Die Benutzer-Profile lagen im Netz.
Du könntest auf dem IPC auch eine Virtuelle Maschine laufen lassen und das entsprechende Image immer wieder herstellen.

Thema: [SUCHE] Tool, welches unter Win10 Einstellungen prüft und nach einer Vorgabe anpasst
Am im Forum: Smalltalk

Hallo Krumnix

Zitat von Krumnix
bei unseren Maschinen liefern wir einen IPC mit.

Was ist denn ein IPC? Ein Industrie PC?


Zu deiner Frage:
Du kannst und solltest über das Rechte-System verhindern, dass die Benutzer auf dem PC 'rumspielen'. Der Benutzer im 'IPC' sollte in einem eingeschränken Kontext laufen. Das ist aber ein ziemlich weites Feld, in das du dich erstmal einlesen solltest.

Gruß
Alf

Thema: Wie kann ich RGBW-Code zu RGB/HSL-Code umwandeln?
Am im Forum: Grafik und Sound

Zitat von Lucky_001
Aber was auch gut sein kann ist dass ich die formel nicht richtig benutzt habe.
Denn ich weiß nicht was RGB sein soll.

Deswegen ist es so wichtig, dass du als Fragesteller erklärst, was du schon versucht hast und woran es scheitert. Das du dich mit dem Thema RGBx beschäftigst, bin ich davon ausgegangen, dass du weißt was das ist.

R, G und B stehen für den jeweiligen Farbanteil: (Rot, Grün, Blau). (255, 0, 0) ist reines Rot.

RGBW hat noch einen Weißanteil, damit kann man ungefähr die Helligkeit steuern.

Willst du RGBW in RGB umwandeln, dann geht diese 'Helligkeits'-Information verloren.
Das musst du dann durch eine entsprechende Umrechnung kompensieren.

Beispiel:
Du hast RGBW (120,50,20, 60):

Der Rot-Anteil (R) ist 120.
Den Rotanteil (R') für das Ergebnis kannst du mit der Formel ausrechnen:
RGBW=RGB+(255-RGB)*W/3/255

G + B erstmal ignorieren und etwas umstellen:
R' = R - [(255-R) * (W/3/255)]

R' = 120 - [(255-120) * (60/3/255)]
R' = ~110

Das Gleiche für G und B machen und du erhälst:
(110, 56, 29)

So könntest du es mal probieren. Wie es sich auf dem entsprechenden Gerät tatsächlich verhält, ist natürlich noch so eine Sache. Exakt gleich wird es sich nicht einstellen lassen.


PS:
Ich möchte an der Stelle noch erwähnen, dass ich keine Ahnung von dem Thema habe. Also wenn ich groben Unfug erzählt habe, mich bitte darauf aufmerksam machen.

Thema: Wie kann ich RGBW-Code zu RGB/HSL-Code umwandeln?
Am im Forum: Grafik und Sound

Woher weißt du denn, welches Ergebnis richtig ist?

Thema: Wie kann ich RGBW-Code zu RGB/HSL-Code umwandeln?
Am im Forum: Grafik und Sound

Ja, das umgekehrte Problem scheint öfter der Fall zu sein.

Ich habe meine google-Künste nochmal angeworfen und bin auf diesen Link gestoßen:
RGBW and RGBA to RGB conversion for colour presets

Thema: Wie kann ich RGBW-Code zu RGB/HSL-Code umwandeln?
Am im Forum: Grafik und Sound

Dann versuche es mal mit dem zweiten Punkt, den ich erwähnt habe:

Zitat von Alf Ator
Bitte lese dir auch Wie poste ich richtig? durch. Im speziellen Punkt fünf.


Was genau hast du schon probiert, woran genau hapert es?

Thema: Wie kann ich RGBW-Code zu RGB/HSL-Code umwandeln?
Am im Forum: Grafik und Sound

Hallo Lucky_001

Meine google-Suche spuckt folgendes aus:
Converting an RGBW color to a standard RGB/HSB representation

Hilft dir das?

Bitte lese dir auch Wie poste ich richtig? durch. Im speziellen Punkt fünf.

Gruß
Alf

Thema: Kopierte List<T> Änderung in der Kopie ändert auch Oroginal
Am im Forum: Grundlagen von C#

Hallo Emskop

Du hast zwar eine zweite Liste, aber die Objekte die du da rein machst, sind die selben! wie die aus der ersten List. Stichwort Reference Type.
Google spuckt unter anderem das hier aus: https://www.tutorialsteacher.com/csharp/csharp-value-type-and-reference-type

Ansonsten kannst du das letzte Objekt einer Liste zu einer anderen hinzufügen indem du nur das letzte der neuen Liste hinzufügts:


LastData.Add(Lst_TL_Data.Last());

Übrigens ist Lst_TL_Data ein ungeschickt gewählter Name:
Heißt das Last_TL_Data oder List_TL_Data?

Ein kleiner Buchstabe, der die Lesbarkeit deutlich erhöht.


Gruß
Alf

Thema: Automatisch generierte Pfad
Am im Forum: Grundlagen von C#

Hier mal händisch runtergeschrieben:


private void Form1_FormClosing(object sender, FormClosingEventArgs e)
{
	var dialogResult = MessageBox.Show("Speichern?","Zeiterfassungstool", MessageBoxButtons.YesNoCancel);

	switch (dialogResult)
	{
		case DialogResult.Yes:
		{
			SaveData();
			// Application wird nach dem Speichern beendet
		}
		case DialogResult.No:
		{
			// Application ohne speichern beenden
		}
		case DialogResult.Cancel:
		{
			// Application doch nicht schließen
			e.Cancel = true;
		}
	}
}

private void SaveData()
{
	var myDocumentsPath = Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments);
	var fileName = $"Zeitbuchung_{DateTime.Now.ToString("yyyyMMdd_HHmmss")}.txt";
	var fullFilePath = Path.Combine(myDocumentsPath, fileName);
	
	var stringBuilder = new StringBuilder();
	foreach (var row in dataGridView1.Rows)
	{
		foreach(var column in row.Columns)
		{
			stringBuilder.Write(column.Value);
		}
		stringBuilder.WriteLine();
	}
	File.Write(fullFilePath, stringBuilder.ToString());
}


Edit:
Bitte auch beachten, was die anderen geschrieben haben.

Thema: Visual Studio 2019 - Class View bzw. Code Behind einer Form fehlt im Projektmappen-Explorer
Am im Forum: Entwicklungs- und Laufzeitumgebung (Infrastruktur)

Hallo Gasimodo

Ich habe keine Ahnung, ob und wie man das einstellen kann.

Falls ich mal in die andere Ansicht muss, benutze ich die Tastenkombination 'F7' bzw. 'Shift+F7'.

Gruß
Alf

Thema: Wie beim OpenFileDialog nach Dateiendung filtern?
Am im Forum: Grundlagen von C#

Zitat von BerndFfm
Es gibt außerdem "Path.GetExtension()".

Für Datei- und Ordneroperationen bitte gerne die Klassen aus dem System.IO-Namespace (oder passendes Äquivalent) verwenden.

Thema: Wie kann ich aus meinem Programm auf eine externe DLL/API zugreifen?
Am im Forum: Grundlagen von C#

Hallo -eichi-

Erstmal vorne weg, wir helfen hier gerne, aber bitte lese dir [Hinweis] Wie poste ich richtig? durch.
Insbesondere Punkt 2.2 Keine Crossposts (https://ww3.cad.de/foren/ubb/Forum22/HTML/005523.shtml).

Zitat von -eichi-
Jedoch bringt er mir immer den Fehler das "ReadBodyName" nicht als extern oder abstrakt gekennzeichnet ist , wenn ich "extern" davor schreibe bringt er mir die Fehler:
- extern muss dem membertyp/namen vorangehen
- Methode muss einen Rückgabetyp besitzen
- der Name Obj ist im aktuellen kontext nicht vorhanden

Das Keyword extern ist dafür da um externe Methoden zu deklarieren. Wenn man zum Beispiel eine C++-dll einbindet. Megadotnet.dll ist eine .NET-dll und der C#-Compiler kann die Deklaration aus der dll entnommen werden. Die Lösung hat Abt schon beschrieben.

Ich habe auf die schnelle keine Beschreibung der API gefunden. Kannst du bitte einen entsprechenden Link schicken?

Gruß
Alf

Thema: Wann setze ich IEnumerable und yield ein?
Am im Forum: Grundlagen von C#

Hallo JimStark

Das mit den Bildern ist eigentlich ein gutes Beispiel. Angenommen du willst eine Vorschau mit maximal 10 Bildern anzeigen, aber nicht alle 4000 Bilder gleichzeitig laden, dann kannst du mit yield nur jeweils die benötigten Bilder für die Vorschau laden.

Dein Code ist nicht ganz korrekt.


public IEnumerable GetAllImages(IEnumerable<string> imagePathes)
{
  foreach (var imagePath in imagePathes)
  {
       yield return Image.FromFile(imagePath]);
  }
}


Edit: siehe auch Abts Kommentar.
Gruß
Alf

Thema: Wie kann ich nach Button-Click Ladeanzeige anzeigen bis Form öffnet?
Am im Forum: GUI: Windows-Forms

Hallo Rico913

Du kannst dich einfach an die entsprechenden Events hängen:

https://docs.microsoft.com/en-us/dotnet/framework/winforms/order-of-events-in-windows-forms

Gruß
Alf

Thema: CultureInfo de-DE hat Punkt statt Komma als Dezimaltrennzeichen
Am im Forum: Basistechnologien und allgemeine .NET-Klassen

Hallo ChilliShelly

Das hängt mit sehr hoher Wahrscheinlichkeit mit den Regional-Einstellungen auf den jeweiligen Rechnern zusammen. Check das doch mal.

Gruß
Alf

Thema: Wie implementiere ich einen Zurück-Button in einer App-Navigation mit MVVM?
Am im Forum: GUI: WPF und XAML

Zitat von MrSparkle
- Die Navigation in einen NavigationService auslagern und diesen (z.B. per Dependency Injection) an alle ViewModels übergeben. Dann kannst du diesen Service von überall verwenden, um zu einer Seite zu navigieren, und das MainViewModel kann auf die Änderungen reagieren.

Hallo CombatKarl

Das was du vorhast, kann schnell komplex werden, wie du das schon merkst. Mit einem NavigationService kannst du die Navigations-Logik aus den Views heraushalten.
Versuch dich doch mal mit dem oben genannten Stichwort. NavigationService + MVVM
Ich habe z.B. das hier gefunden:
https://marcominerva.wordpress.com/2020/01/13/an-mvvm-aware-navigationservice-for-wpf-running-on-net-core/

Gruß
Alf

Thema: Komplexe Objekte Vergleichen
Am im Forum: Basistechnologien und allgemeine .NET-Klassen

Hallo Biggi12

Wenn deine Klassen generiert worden sind, kann es sein, dass sie das Keyword partial vor dem class haben. Dann kannst du die generierte Klasse mit eigenem Code erweitern.

Ansonsten gäbe es da auch noch den https://www.nuget.org/packages/equalidator/.

Gruß, Alf

Thema: Coding Styles Horror
Am im Forum: Smalltalk


if (true) // wg. Scope innerhalb switch-case
{
    ...
}

Thema: Daten zwischen mehreren Fenstern teilen
Am im Forum: Grundlagen von C#

Zitat von JimStark
Du kannst auch einfach eine static Klasse machen mit einer List<Einnahme>() auf die beide Formen zugreifen können.

Bitte nicht, vor allem nicht zustandsbasiert.

Siehe Beispielsweise hier:
https://blog.aspiresys.pl/technology/why-static-classes-are-evil/

Thema: Daten aus pdf im xml-Format oder doch eher in einem anderen Format zur Verfügung stellen?
Am im Forum: Rund um die Programmierung

Hallo gkd

Zitat von gkd
Nachdem ich ihn davon überzeugt hatte, dass man Daten aus pdf-Files sehr gut exportieren kann

Kannst du uns davon auch überzeugen?


Abgesehen davon, ob json oder xml, es kommt natürlich auf den Anwendungsfall an. Brauche ich xml nicht aus einem bestimmten Grund, verwende ich eher json, weil es etwas schlanker ist und mit newtonsoft so schön einfach zu verwenden.

Gruß
Alf

Thema: Code aus Klasse ausgliedern
Am im Forum: Grundlagen von C#

Hallo adhome

Ich möchte dein Beispiel mal aufgreifen.

Zitat von adhome
Klasse Auto hat Instanzen der Klasse Autositz und Fahrer.
Nun will die Klasse Autositz rausfinden welcher Fahrer gerade im Auto ist.
Er müsste somit die Klasse Auto fragen. Nur wie greift Autositz auf Auto zu, wenn es nicht sowas wie eine Parent Eigenschaft gibt.

Es gibt bei modernen Autos die Möglichkeit, die Sitzeinstellung zu speichern und per Knopfdruck auszuwählen. Das heißt der große Fahrer mit den langen Beinen muss sich nicht ins Auto zwängen, weil seine Frau vorher gefahren ist, sondern er drückt auf einen Knopf und der Sitz fährt automatisch auf seine Position.

Wenn ich die Anforderung so lese, dann kommt mir die Idee, dass wir eine Klasse SitzEinstellung brauchen. Die Klasse Sitz muss den Fahrer nicht kennen, sondern hat eine Methode FahreInPosition(Sitzeinstellung). Aufgerufen wird diese Methode (je nach Anwendungsfall) vom Auto, denn da ist ja auch der Knopf dran.

Durch diese Denke ergeben sich fast automatisch übersichtlichere Klassen, mit spezifischer Verantwortung.


Nach DomainDrivenDesign könnte in diesem Beispiel das Auto das AggregateRoot sein. Es gibt ein bestimmtes Auto (Entity), in das ein bestimmter Fahrer einsteigt (nur eine Id notwendig). SitzEinstellung wäre dann ein ValueObject, Sitz eventuell auch. Die Kommunikation mit der Umwelt, oder dem Programm wird über das AggregateRoot Auto gemacht.

DomainDrivenDesign soll nicht überall angewendet werden, gehört meiner Meinung nach aber zur Bettlektüre vom professionellen Entwickler, da es das Denken ungemein erweitert.


Gruß
Alf