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 Papst
Thema: Array-Elemente in Zeichenfolge gliedern
Am im Forum: Grundlagen von C#

Hi,

woran scheiterst du?

Deine Datei wird vermutlich 32 mal den Inhalt des Arrays enthalten.
Logisch, was du machen musst, in dem Stil, in dem du bereits angefangen hast.

Beim Schreiben zählst du mit, wenn du 33 Zeichen geschrieben hast, schreibst du als nächstes ein NewLine (anstatt mitzählen kannst du auch rechnen i %33 == 0).

Beim lesen verwirfst du einfach die NewLine und setzt dir einen String zusammen den du jedesmal, wenn i %11 == 0 per Console.WriteLine schreibst, alternativ kannst du hier genauso arbeiten wie beim schreiben und nach 11 Zeichen ein NewLine einfügen.

Tipps:

  • stream.WriteByte(array) schreibt nur das aktuelle Zeichen, nicht alle
  • Console.WriteLine schreibt die Zeichen + ein NewLine, Console.Write würde nur die Zeichen schreibenm, die du möchtest
  • Environment.NewLine enthält einen Zeilenumbruch als 2 Zeichen (Windows)
  • % ist der Modulo Operator
  • [/list]

Thema: DateOnly und TimeOnly - die neuen Typen in .NET 6
Am im Forum: Basistechnologien und allgemeine .NET-Klassen

Ich sehe sehr häufig noch datetime Implementierungen -auch bei uns im Unternehmen.
Für Endanwender wird das meist dann sichtbar, wenn Charts angezeigt werden, die machen dann lustige Sprünge oder zeigen nur 23h Daten an Tagen mit Zeitzonenw-Offset-Wechsel.

Thema: Tagsüber andere Aktionen als abends / Unterschiedliche Aktionen zu unterschiedlichen Zeiten
Am im Forum: Grundlagen von C#

Neben TimeOnly wird es auch DateOnly geben.
Die Use Cases sind ziemlich gut im Blog erklärt: Date, Time, and Time Zone Enhancements in .NET 6

Thema: Tagsüber andere Aktionen als abends / Unterschiedliche Aktionen zu unterschiedlichen Zeiten
Am im Forum: Grundlagen von C#

Uhrzeiten sind einfacher mit einem TimeSpan (Api-Docs) zu vergleichen. DateTime (Api-Docs) bietet dafür die Property TimeOfDay.

Ab .NET 6 gibt es dann übrigens passend dafür TimeOnly (Api-Docs).

Gleichzeitig bitte mit bedenken, dass DateTime keine Zeitzonen Informationen hat: [FAQ] DateTime vs. DateTimeOffset und der Umgang mit Zeiten in .NET

Thema: String auf mehrere Zeilen prüfen
Am im Forum: GUI: Windows-Forms

Bei Plattform spezifischen Sachen bitte immer mitdenken, dass die auswertende Plattform eine andere sein kann, als die eingebende.

Beispiel: Eingabe unter Windows im Browser auf eine ASP.NET Core Seite, die unter Linux läuft!

Thema: Authentifizierung über externe Provider
Am im Forum: Web-Technologien

Authorisation ist nicht das gleiche wie Authentifizierung.

OIDC Provider attestieren dir die Authentifizierung, nicht aber die Authorisierung.
Je nachdem, wie komplex diese ist, kann z.B. Microsoft Azure AD das übernehmen und Rollen mitliefern, das wird schon schwieriger, wenn du mehrere ID Provider anbieten willst.

Thema: RestAPI oder vergleichbares
Am im Forum: Datentechnologien

Am besten beschäftigst du dich einmal mit JSON im allgemeinen und mit dem, was .NET dir für JSON bietet.

Die von dir verwendete Json.Net Library kann dir noch eine ganze Menge manuelle Arbeit abnehmen, wenn du sie richtig bedienst.

JObject und JArray sind dabei Klassen, die du fast nicht brauchst und in deinem Fall eher eine Krücke sind und viel manuelle Arbeit machen.

https://www.newtonsoft.com/json/help/html/SerializingJSON.htm

Thema: RestAPI oder vergleichbares
Am im Forum: Datentechnologien

Der Server gibt (zumindest wenn ich ihn aufrufe) kein json zurück. Auch dann nicht, wenn ich Accept: application/json mitsende.

Du müsstest im Slim Framework also dafür sorgen, dass er Json zurückgibt. In PHP gibt es dafür die Funktion json_encode.

P.S.: Du solltest gleich von anfang an darüber nachdenken, deinen Server durch Authentifizierung abzusichern.

Thema: Wie mache ich einen Server Multitaskingfähig?
Am im Forum: Netzwerktechnologien

Ich dachte es wäre David Fowler gewesen, finde bei ihm aber kein passendes Repository - vielleicht hat er es aber auch gelöscht, weil immer wieder Leute dort issues aufgemacht haben.

Edit: habs gefunden
davidfowl/MultiProtocolAspNetCore

Thema: Wie mache ich einen Server Multitaskingfähig?
Am im Forum: Netzwerktechnologien

Ich bin da völligst bei Abt, Grundlagen sind das Problem.

Die Basis ist hier ja Netzwerk. TCP/IP funktioniert über Ports & Sockets. Dabei gilt, ein Port kann dabei nur einen Socket aufnehmen, diese Verbindung ist ein Socket. Der Socket ist immer eine Kombination aus lokaler IP+Port und Remote IP+Port.
Wenn du möchtest, dass sich mehrere Clients auf einen Server Port verbinden können, musst du nach der Verbindung den Socket wieder vom Port trennen.

Grundsätzlich kannst du das natürlich gerne selber implementieren - aber es gibt so viele fertige Lösung, die du verwenden könntest und die dir immense Vorteile bringen.

Auch "Websachen" basieren auf eben diesen Verbindungen und "Websachen" sind für Datenaustausch gemacht - auch low-level Verbindungen können darüber realisiert werden.
mit ASP.NET Core hat Microsoft hier etwas weiter gedacht, denn das Framework bietet auch die Möglichkeit andere Endpunkte als Web Endpunkte zu nutzen. Es gibt dazu auch ein Beispiel repository von einem Microsoft Mitarbeiter - leider finde ich es auf die schnelle nicht.
Allerdings denke ich, dass du es dir wesentlich einfacher machen würdest, wenn du viel höher in der Schicht ansetzt (sofern es natürlich die Anforderungen zulassen) und beispielsweise gRPC, oder ähnliches verwendest.


P.S.: Über Anforderungen lässt sich immer diskutieren. Die Anforderung sollte dabei aber nicht sein "Entwickel einen Handshake", sondern sollte sich mehr auf "was soll denn eigentlich passieren" funktionieren.

Thema: Programm beenden über das Nertzwerk
Am im Forum: Rund um die Programmierung

Da gibts sogar schon einen FAQ Artikel von...
[FAQ] Anwendung von Netzlaufwerk starten

Das Szenario schreit nach einer besseren Strategie zur Softwareverteilung.

Edit: Ups, erst den Thread lesesn, dann posten.
Dann wäre es wohl Zeit für einen solchen Artikel.
Der Punkt mit dem Netzlaufwerk ist - neben den Problemen, die du selber siehst - dass Netzlaufwerke prinzipiell als nicht vertrauenswürdig und das zurecht.

Thema: Gibt es eine Lösung, um eine Website in Chrome zu blockieren?
Am im Forum: Smalltalk

Viele der AdBlock Extensions erlauben es eigene Liste zu führen. <- Funktioniert überall, für den PC auf dem es installiert ist
Pi-Hole ist ein Projekt so etwas mit einem Raspberry Pi im eigenen Netzwerk aufzusetzen <- Funktioniert nur Zuhause, für alle Geräte im Heimnetzwerk

Thema: Anzahl Checkbox checked als Wert für for Schleife
Am im Forum: Grundlagen von C#

Zitat von Tommylik
Jetzt meine Frage vorweg: Wie kommst du auf Data Binding wenn ich so wenig Infos gebe?
Die Antwort hat Abt dir gleich mitgegeben: Weil man das immer tun sollte

Mit Databinding würdest du jetzt einfach die ViewModel Instanzen zählen, bei denen die IsChecked Property true ist.

Verstehe ich richtig, dass du nur über die Checkboxen iterieren willst Checked sind, aber deren Index brauchst um Controlnamen zusammenzubauen?
Dann kannst du entweder die Lösung von BerndFfm nehmen oder auf etwas Linq zurückgreifen. Databinding wäre aber trotzdem zu empfehlen - damit würdest du die Logik auch anschaulicher bekommen.


CheckBox[] checkboxes = ...;
var boxes =  checkboxes.Select((checkbox, idx) => new { Index = idx, Box = checkbox }).Where(checkbox => checkBox.Box.Checked);
foreach (var box in boxes)
{

}

Thema: Blazor Server AuthorizeRouteView
Am im Forum: Web-Technologien

Erstelle dir Basiskomponenten und lasse die tatsächlichen Komponenten davon erben.
So kannst du Sachen, die du immer Injected haben willst und Attribute, die du immer haben willst direkt einmal einbauen und dann verwenden.

MyComponentBase --> Erbt von ComponentBase
Hier kannst du Property Injection nutzen, für alles was du benötigst

MyAuthorizedComponentBase --> Erbt von MyComponentBase
hat das Authorize Attribut.

Thema: HTML-String als Download bereitstellen
Am im Forum: Basistechnologien und allgemeine .NET-Klassen

Kann es sein, dass es nur darum geht, dem Benutzer zu fragen, wo die Datei gespeichert werden soll und "Download" als "Speichern unter..." Dialog gemeint ist?

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

Bearbeite bitte deinen Post und setze den Code in C# Code Tags, dann kann man ihn auch lesen... niemand möchte das so versuchen zu entschlüsseln.

Thema: Code Sharing between Projects
Am im Forum: Web-Technologien

Ohne die genaue Antwort zu wissen - schau doch mal wie andere Blazor Libraries das machen.

Z.B.: Blazorise, dort findest du css Dateien immer untern _content/Lib
Start - Blazorise

Thema: Wie komplexes c# Datenobjekt über das Internet an c# Anwendung senden?
Am im Forum: Netzwerktechnologien

An sich ist es immer eine gute Idee die Kontrolle über das Datenobjekt zu haben, dass du zwischen Diensten hin und herschiebst.
Prinzipiell würde ich schauen, dass du ein Objekt erzeugst, dass alle Informationen enthält, die du in SERVER B benötigst und es dann aus dem Ergebnis der Bibliothek befüllen.

Alles andere kann unter Umständen auch lustige Nebenwirkungen haben, z.B. wenn es sich nicht um reines Datenobjekt handelt und darin Logik enthalten ist. Vor allem dann, wenn diese auf externe Ressourcen zugreift, die in SERVER B nicht verfügbar sind oder einen Verbindungsaufbau benötigen.

Thema: Paralleler always running Code am besten implementieren vom WPF Projekt.
Am im Forum: Basistechnologien und allgemeine .NET-Klassen

Prinzipiell ist der Lebenszyklus einer Desktop Applikation erst einmal an die Darstellung eines Fensters gebunden.
Was du beschreibst klingt eher nach einem Dienst als einer Desktop Applikation.

Wie viel Worker du machen solltest hängt nachher davon ab, wie viel die einzelnen Crawler machen (Bei Crawling wichtig: Die Webseiten-Eigentümer müssen genau dieses erlauben, was idr. nicht erlaubt ist) und wie nutzbar der PC noch sein soll.

Mit den Chrome selber habe ich leider keine Erfahrung, es klingt aber eher, als hättest du eine Reihe von Aufgaben, die abzuarbeiten und ggf. nicht endlich sind.
In dem Fall würde ich vermutlich eher auf ein Consumer/Producer Pattern gehen und aus einem IHostedService heraus neue Tasks starten.

Thema: Erstellung Worddatei- Problem: Meldung Unbehandelte Ausnahme
Am im Forum: Office-Technologien

Hast du die Meldung einmal gegoogelt?

Ich würde tippen auf ein Problem mit dem installierten Office. Du benötigst immer exakt dieselbe Version von der Bibliothek und dem installierten Office.

Schau die mal Bibliotheken an, die auf das Dokumtentenformat gehen. z.B. ClosedXML

Thema: Dokument mit C# und HTML
Am im Forum: Web-Technologien

Fun Fact: Eine ASP.NET Core / 5 Anwendung ist auch eine Konsolenapplikation

Schau mal, was Abt oben geschrieben hat. Mit den Infos solltest du problemlos jede Menge Anleitungen finden, wie das in einer Console ohne ASP funktioniert

Zitat von Abt
Die Standard Engine von ASP.NET nennt sich Razor. Wir generieren auf dieser Engine zum einen den HTML Code des Forums (als Teil der ASP.NET Render Pipeline) und zum anderen auch den HTML-Code der E-Mails (ohne ASP).
Dazu braucht man auch kein extra NuGet Paket mehr, nur noch IRazorViewEngine Interface (Microsoft.AspNetCore.Mvc.Razor)


Thema: Excel Daten in richTextBox anzeigen
Am im Forum: GUI: WPF und XAML

glandorf hat ja die Lösung schon geschrieben, als Tipp kann ich dir noch mitgeben: Setz dir einen Breakpoint an die Stelle wo die Zelle ausgelesen wird (es gibt auch Conditional Breakpoints, die nur bei einem bestimmten Wert von i triggern) und schau, was das Zellenobjekt für Informationen für dich hat.

Thema: Excel Daten in richTextBox anzeigen
Am im Forum: GUI: WPF und XAML

Hi,

wir wissen leider überhaupt nicht, wie du das Excel liest und es nach RTF konvertierst.

Ohne mich genau auszukennen und zu wissen wie du das machst kann ich bloß ins blaue raten, ich würde aber tippen, dass du entweder die Formatierung beim auslesen verlierst oder diese nicht rtf kompatibel ist und du sie entsprechend vor dem Anzeigen des Textes konvertieren/den anzuzeigenden Text formatieren müsstest.

Thema: dotnet error mit VS auf MacOS Arm (Apple Silicon)
Am im Forum: Entwicklungs- und Laufzeitumgebung (Infrastruktur)

Ich meine gestern gelesen zu haben, dass die .NET 6 Preview Apple Silicon unterstützt.

Thema: Hello World! myCSharp auf .NET
Am im Forum: Ankündigungen

Es ist der Wahnsinn, was Abt und gfoidl da die letzten Wochen auf die Beine gestellt haben und das ganze unentgeltlich und in Ihrer Freizeit!
Meinen größten Respekt!

Thema: Binding aus mehreren JOIN
Am im Forum: Datentechnologien

Mit was arbeitest du? Plain SQL mit ADO.NET (o.ä.)?

Prinzipiell gehst du so vor:

- Daten abfragen
- über die Daten iterieren & die Daten in ein Objekt Projezieren (1)
- die Daten an deine Darstellung anpassen (2)


in (1) erhälst du die Zeilen in einer Klasse wie


class MitarbeiterZuweisung 
{
  public int MitarbeiterId {get; set;}
  public string Name {get; set; }
  public string Baustelle {get ;set;}
  public int Tag {get; set; }
}

in (2) gehst du her und passt es so an, wie du es anzeigen willst. Du musst also die Zeilen nach MitarbeiterId gruppieren. Das geht am einfachsten via LINQ:


var groupedByEmployee = rows.GroupBy(r => r.MitarbeiterId);
Jetzt musst du die erhaltenen Daten nur noch in eine ObservableCollection<T> überführen, wobei T eine von dir erstellte Klasse ist, die dein View benötigt.

Thema: DataGidView DataBinding WPF wahrscheinlich Verständnisproblem
Am im Forum: GUI: WPF und XAML

Ein Binding muss bei WPF immer auf eine Property gehen, niemals auf eine Member Variable.

Wenn trotzdem noch nichts angezeigt wird, benötigst du INotifyPropertyChanged in deinem ViewModel, wenn du Veränderungen im Code an der gebundenen Collection machen willst, sollte es eine ObservableCollection sein.

Thema: Wieso liefert 'dotnet --list-sdks' einen 'Nicht gefunden' Fehler?
Am im Forum: Entwicklungs- und Laufzeitumgebung (Infrastruktur)

Wenn du die SDK's listen willst, solltest du anstatt der runtime den SDK installieren.

-> SDK zur Entwicklung
-> Runtime zum ausführen

Thema: Womit erstelle ich am besten Live-Diagramme?
Am im Forum: Rund um die Programmierung

Wenn es "nur" ein Chart ist (also z.B. LineChart), da brauchst du das nicht selber programmieren und zeichnen. Dafür gibt es zuhauf fertige Bibliotheken, die dir das abnehmen.

OxyPlot, D3, ...

Thema: Wie kann ich im IIS Server einen Benutzer im App-Pool mit Schreibrechten auf einen Folder erstellen?
Am im Forum: Web-Technologien

Das Vorgehen ist im Prinzip ganz einfach.

--> Wenn der Benutzer auch auf die DB zugreifen können soll und du den WindowsAuth dafür verwenden willst, wird es wohl ein AD User werden müssen.

Wenn der Benutzer angelegt ist, gehst du in den IIS Manager, dann auf Application Pools, erstellst einen neuen Application Pool oder wählst den vorhandenen aus und weist ihm den Benutzer zu.
Danach musst du nur sicherstellen, dass die Site im IIS auf dem Application Pool läuft. Das stellst du bei der Site ein.