Laden...

Forenbeiträge von Papst Ingesamt 441 Beiträge

20.10.2021 - 17:06 Uhr

Hi,

was hast du denn bisher probiert? Das Forum ist dazu da dir bei konkreten Problemstellungen zu helfen, nicht dir ein Programm zu schreibem.
Ich habe vor Jahren mal mit iText gearbeitet, soweit ich mich erinnere könnte das funktionieren.

10.10.2021 - 20:34 Uhr

Hi,

bei WPF verwendet man am besten DataBinding.
Damit würdest du dir den meisten Code dort sparen und vermutlich auch dein Problem beheben.

05.10.2021 - 19:52 Uhr

Wie Abt geschrieben hat, kannst du Tasks parallel laufen lassen mit Task.WhenAll:


Task t1 = RunFirst("...");
Task t2 = RunSecond("...");

await Task.WhenAll(t1, t2);

Ein Thread erwartet ein Delegate, da kannst du nicht einfach Parameter übergeben. Mit einem Delegaten (in dem Fall eine Action<T>) würde das so aussehen:


new Thread(() => RunFirst("..."));

Die Lösungen dazu hättest du mit den gegebenen Stichworten (Task.WhenAll und delegate) in der Doku und bei einer Google Recherche gefunden 🙂

05.10.2021 - 19:47 Uhr

Hi,

schau mal diesen Artikel an, das sollte genau das sein, was du suchst:
[FAQ] Kommunikation von 2 Forms

30.09.2021 - 11:47 Uhr

Es erscheint keine Fehlermeldung, allerdings werden auch keine Daten gefiltert.
Habe ich etwas vergessen?

Es erscheint keine Fehlermeldung, weil du eine ggf. erscheinende Unterdrückst.
Weißt du, was der Catch Block macht?

30.09.2021 - 09:22 Uhr

Das DaraGrid in WinForms habe ich nie verwendet, würde aber um dem Problem weiter einzugrenzen:
Schau was an der Klasse, mit der es funktioniert hat anders ist oder versuche es mit einem minimalen Beispiel in einem separaten Projekt einzugrenzen.

28.09.2021 - 12:32 Uhr

Hi,

ich kenne die Lob nicht, habe selber mit MQTTNet gute Erfahrungen gemacht.
Ohne weitere Details können wir dir leider nicht helfen.

Du solltest dir anschauen, ob du die folgenden Fragen beantworten kannst:

  • Gibt es eine Exception?
  • funktioniert die zweite App ohne die erste?
  • verwendest du evtl. denselben lokalen Port?
  • funktioniert es an einem anderen pc?
  • unterbindet das ggf. Der Broker? (Credentials, IP?)
28.09.2021 - 11:23 Uhr

Ist das deine eigene Applikation?

Falls ja: Portable bedeutet im Endeffekt ja nur, dass die Applikation keine weiteren Abhängigkeiten hat, als die die sie mitbringt.
Das funktioniert in der .NET Welt 5.0) relativ simpel über self-contained.

Datei Verknüpfungen mit einem Portable Programm werden nicht funktionieren, denn die Verknüpfung in Windows muss wissen, wo das Programm liegt zum starten. Das ist bei einem Portable nicht gegeben.

20.09.2021 - 08:35 Uhr

Erstelle dir eine Klasse, die der Struktur deines Abfrageergebnisses gleicht. Lese die Daten in eine Liste dieser Klasse, diese kannst du im DataGrid anzeigen.

17.09.2021 - 11:34 Uhr

Wenn du lediglich die Deklaration der Klassen nutzt.


Rechteck rechteck = new Rechteck();
Quadrat quadrat = new Quadrat();


Dann wird kein Code außer der ausgewählte Konstruktor ausgeführt.
Wenn du die Berechnungen sehen willst musst du die passenden Methoden aufrufen:


quadrat.Umfang();

Ruhe dir selber einen Gefallen und verwende keine Umlaute bei Bezeichnern (Fläche).
In der Regel verwendet man englische Bezeichner, es ist einfacher, sich das gleich von Anfang an anzugewöhnen.

17.09.2021 - 11:31 Uhr

Du setzt keinen Initialen Wert.

Mach es dir einfacher und verwende Databinding in WPF. [Artikel] MVVM und DataBinding

26.08.2021 - 19:01 Uhr

Ist schon eine Weile her, aber ich vermute du prüfst die falsche Property.

Path.GetExtension(sFD.FileName)

Sollte dir das korrekte Ergebnis geben. In Filter steht immer der Filter.

26.08.2021 - 16:18 Uhr

SignalR ist ein Protokoll Framework mit verschiedenen Implementierungen für Clients. Server gibt es meines Wissens nur in .NET.

Wichtig ist: es sollte auf dem Client laufen. Bei Python Webapps habe ich zuwenig Erfahrung um das direkt sagen zu können - prinzipiell würde ich aber tippen, dass der Python Anteil auf dem Server läuft. Damit hättest du vermutlich erst einmal keine Push Möglichkeit an den Client (oder es wird ein Teil versteckt).

Aber Google hilft dir da sicher weiter - hat Abt ja bereits geschrieben.

22.08.2021 - 23:42 Uhr

Was hast du denn bisher probiert? Bzw., was funktioniert nicht?
Was genau möchtest du erreichen?

Dieses Beispiel auf StackOverflow ist doch sehr überschaubar: how-do-i-capture-the-mouse-move-event

22.08.2021 - 23:34 Uhr

Im Machine Learning Kontext gibt es hier Modelle, die so etwas können.
Zumindest, wenn du nicht vorab definierte Antworten bekommen kannst.

Edit: Natural Language Processing war das Stichwort, dass mir nicht eingefallen ist.

20.08.2021 - 16:11 Uhr

Welchen Typ hat denn die Property Tools? Die zeigst du nirgendwo, dass ist doch die, die abgemartert ist, diese müsste etwas sein,dass IEnumerable implementiert.

18.08.2021 - 21:41 Uhr

Dann ist dein Problem wohl, dass dein Code gar nicht aufgerufen wurde.
Das hättest du mit dem Debugger und einem Breakpoint herausgefunden (war das dass „passiert nichts“?).

Um 8m gleichen Kontext zu bleiben: du müsstest das richtige Event von deinen Uli Elementen abonnieren und dort deinen Code auswerten.

Zwei Tipps:
Auch Convert.ToDouble (Api-Docs) wirft eine exception , wenn keine lesbare Zahl eingegeben wird. Convert ist in dem Kontext nicht die korrekte Klasse, nutze besser double.TryParse (Api-Docs).

Verwende Databinding, das wirkt erst einmal komplexer, nimmt dir aber später viel Arbeit ab!

18.08.2021 - 21:33 Uhr

Speichere das Datum besser als DateTimeOffset in der Datenbank, dann benötigst du nicht so viele Konvertierungen.
[FAQ] DateTime vs. DateTimeOffset und der Umgang mit Zeiten in .NET

Mit DateTimeOffset.ToLocalTime (Api-Docs) bekommst du generell die lokale Uhrzeit. Ich bin mir nicht sicher, wie sich das bei Blazor Server auswirkt. Probier es am besten einfach aus.

17.08.2021 - 17:20 Uhr

Wann wird denn deine InitializeValues Methode aufgerufen?
Schau mit dem Debugger, was in den einzelnen Variablen steht.

P.S.: das wird knallen, wenn keine Zahl eingetragen ist.

17.08.2021 - 15:05 Uhr

Microsoft verkauft dir erst einmal gar nichts, sondern sie bieten dir mit der Klasse HttpClient eine weiterentwickelte Klasse, die neuere und performantere Paradigmen nutzt.

Das unterliegende Prinzip (=http) ist jedoch dasselbe, alleine die API ist anders für dich.
Du hast eine ganze Menge Werkzeuge an der Hand, um festzustellen was nicht funktioniert.

Du kannst einzelne Schritte mit dem Debugger testen, damit siehst du auch, ob der Code ausgeführt wird.
Du kannst Wireshark oder einen Debugger Proxy wie Fiddler nutzen um dir Unterschiede zwischen den http requests anschauen.

Da hilft herumschreien, dass der WebClient aber funktioniert halt gar nicht.

13.08.2021 - 15:49 Uhr

Du musst den Task awaiten.

So kommst du an das Ergebnis.

Wann willst du die Informationen via http abrufen? Dort kannst du await nutzen.
Ein Event handler darf async void sein.

13.08.2021 - 12:36 Uhr

YAT scheint ein Terminal zu sein (Eigentlich eine Console, wenn ich die Übersicht auf Sourceforge richtig gedeutet habe) (siehe: https://www.hanselman.com/blog/whats-the-difference-between-a-console-a-terminal-and-a-shell)

Wenn du in einem eigenen Programm Daten verarbeiten willst (nicht in der Console), glaube ich ehrlicherweise nicht, dass YAT da das richtige ist.
Ein TCP basierter Server ist relativ simpel gebaut z.B. mit einem TcpListener. Ob der geeignet ist, liegt an deinen Anforderungen - ich würde allerdings immer dazu raten Server Applikationen auf etwas bestehendes aufzusetzen und z.B. Kestrel zu nehmen.
Kommt natürlich auf die Anforderungen an - das wird sich nicht lohnen, wenn du "nur mal etwas ausprobieren willst".

10.08.2021 - 21:40 Uhr

Wenn du nicht musst (z.B. Legacy Applikation), würde ich dir davon abraten DataTable zu nutzen. Die ist relativ alt und hat viel overhead.

Wenn du kein SQL schreiben möchtest, schau dir ORM's wie EntityFrameworkCore an.

09.08.2021 - 18:01 Uhr

Die meisten Browser erlauben dir das gespeicherte Passwort wieder auszulesen.

09.08.2021 - 16:38 Uhr

Am einfachsten du vergleichst die Requests und schaust dir den Unterschied an. Ein Dictionary gibt es auch in .NET.

Mit dem HttpClient sieht das ganze in C# dann auch nicht mehr so aufwendig aus, in grob etwa so:


var cl = new HttpClient();
cl.BaseAddress = new Uri("https://jenkins");
cl.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Basic", "base64encoded");

var validationResult = await cl.PostAsync("/pipeline-model-converter/validate", new FormUrlEncodedContent(new Dictionary<string?, string?>()
{
	["jenkinsfile"] = "jenkinscontent"
}));

string result = await validationResult.Content.ReadAsStringAsync();

Edit: stimmt, mit dem json hatte ich mich in meinem Eingangsposting vertan.

08.08.2021 - 19:28 Uhr

Der Unterschied zwischen dem Python Script und dem C# Aufruf, zumindest was mir so auffällt:* Bei Python machst du erst einen Get Request, danach den Post.

  • Bei Python sendest du einen POST Request mit JSON Payload; bei C# einen Form Encoded Post Request mit JSON Payload

Verwende für HttpRequests besser den HttpClient (Api-Docs) anstatt des WebClient, der gilt seit einigen Jahren als depreceated.

24.07.2021 - 20:38 Uhr

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]
19.07.2021 - 21:26 Uhr

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.

19.07.2021 - 20:24 Uhr

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

19.07.2021 - 19:15 Uhr

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

07.07.2021 - 19:39 Uhr

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!

28.06.2021 - 21:32 Uhr

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.

19.06.2021 - 13:58 Uhr

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

18.06.2021 - 17:43 Uhr

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.

18.06.2021 - 14:37 Uhr

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

17.06.2021 - 22:21 Uhr

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.

17.06.2021 - 09:36 Uhr

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.

12.06.2021 - 11:33 Uhr

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

08.06.2021 - 22:11 Uhr

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)
{

}

04.05.2021 - 16:46 Uhr

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.

19.04.2021 - 20:08 Uhr

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?

19.04.2021 - 20:04 Uhr

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.

15.04.2021 - 17:11 Uhr

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

11.04.2021 - 19:13 Uhr

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.

10.04.2021 - 20:02 Uhr

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.

31.03.2021 - 16:29 Uhr

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

26.03.2021 - 11:28 Uhr

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

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
>

24.03.2021 - 16:11 Uhr

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.

22.03.2021 - 20:43 Uhr

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.

17.03.2021 - 20:46 Uhr

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