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 T-Virus
Thema: Zugriff auf Objekt, das in einem try Block erzeugt wurde
Am im Forum: Grundlagen von C#

Wenn du im Konstruktor eine Exception wirfst, würde ich das Objekt nicht außerhalb des try/catch verwenden.
Durch die Exception hast du ggf. eine fehlerhafte Instanz.

Wenn du das fertige Objekt noch irgendwo innerhalb deiner AndereKlasse brauchst, dann mach aus foo einen Member.
Dann musst du diesen nur initalisieren und wenn alles ohne Fehler durchläuft, kannst du normal damit arbeiten.
Ggf. fehlen dir hier nur die nötigen Grundlagen?

Was dannoe meint ist das using vor deiner Variable.
Damit wird dein Objekt automatisch disposed, was du hier scheinbar eigentlich nicht willst.
Hier musst du dann deine Instanz, wenn an anderen Stellen benötigt, an einer geeigeneten Stelle zu disposen.

T-Virus

Thema: Ausnahmefehler System.InvalidCastExeption
Am im Forum: Grundlagen von C#

Wie soll das jemand für dich machen?
Du zeigst weder die Zeile in der dieser Fehler auftritt, weshalb man nur raten kann.
Ebenfalls kennen wir weder deine Datenbank, Tabelle und Spalten die du hier auslesen willst.

Aktuell kann man anhand der Meldung nur daraus schließen, dass du die falsche Spalte aus deinem DataReader ausliest.
Hier scheinst du in Zeile 6 durch deine Casting den Fehler zu verursachen.
Hast du den mal in die Doku der Library geschaut, ob man die Daten nicht fertig auslesen kann?
Beim SqlServer lese ich die Daten z.B. für SqlGeometry als Bytes aus und lasse diese von SqlGeometry dann verarbeiten.
Hier muss keine extra Methode angelegt werden um die Geometry auszulesen.

Ich kann mir vorstellen, dass die Library schon eine fertige Lösung dafür anbietet.
Musst du aber selbst prüfen.

T-Virus

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

Wie sieht den deine Anforderung genau aus?
Willst du hier eine Webseite entwickeln mit dynamischen Daten z.B. aus deiner Datenbank?
Dann solltest du dir anschauen, wie man mit C# und .NET Webseiten entwickelt.

Wenn die Informationen komplett statisch sind, reicht es einmalig Html Dateien zu erzeugen und auf einem einfachen Webserver abzulegen.
Hier müsstest du deine Anforderungen bzw. dein eigentliches Ziel mal genauer erläutern.
Html Dateien kannst du sonst auch simpel mit einem Editor zusammen bauen.

T-Virus

Thema: Eigenes Netzwerk hinter Router
Am im Forum: Smalltalk

@Abt
Bei meinem Post ging ich noch fälschlicherweise von der gleichen Situation wie im Ausgangspost aus.
Den Gastzugang nutze ich auch nur bei mir um meinen Freifunk Router von meinem Netzwerk zu trennen, klang in der Art erstmal ähnlich.

Mit VLAN hab ich halt auch nichts zu tun,da fehlt mir auch die Erfahrung.
Da sich die Situation jetzt auch Richtung Büro Vernetzung geändert hat, kann ich leider auch nicht wirklich mitsprechen.

T-Virus

Thema: Mailprogramm mit Sonderzeichenfehler
Am im Forum: Rund um die Programmierung

Es gibt sonst noch BodyTransferEncoding, was ihr nicht gesetz habt.
Ggf. fehlt das noch, ansonsten gilt Abts Hinweis.
Für eine komplette Neuentwicklung würde ich auch von dem SmtpClient abraten.

MailMessage.BodyTransferEncoding Property (System.Net.Mail)

T-Virus

Thema: BinärDatei lesen mit festen Positionen und einem Start-"SuchText"
Am im Forum: Rund um die Programmierung

Noch ein Tipp in eigener Sache und etwas Offtopic.
Wenn du Stings häufig zusammen setzen oder bearbeiten musst, dann nimm den StringBuilder aus System.Text.
Direkt mit Strings zu bearbeiten erzeugt immer neue String Instanzen.
Je mehr Operationen du auf deinem String durchführst um so mehr tote Instanzen muss die .NET Runtime verwalten und löschen.
Das ist sehr unperformant, wenn man dies sher häufig macht.

T-Virus

Thema: Eigenes Netzwerk hinter Router
Am im Forum: Smalltalk

@JimStark
Wenn du jetzt schon planen musst auf dicke Hardware zusetzen, dann wäre die Fritzbox jetzt eh schon mit deinen Anforderungen überlastet.
Wirklich viele Details hast du auch bisher nicht genannt, weshalb es auch nicht möglich ist dir wirkliche Empfehlungen zu geben.

Was ist bei dir den z.B. "ein eigenes "Firmennetz", d.h. da laufen ein paar Server, NAS, paar Clients."
Wenn du hier über eine Standort Vernetzung redest, dann wäre die Fritzbox und dein WLAN am Ende der Kette angesiedelt.
Wie dein Standort dann genau Vernetzt ist, wäre für die Fritzbox egal.

Wie Stefan schreibt, kannst du dein WLAN Netz einfach in LAN 4 packen und gut ist.
Dann laufen diese auch beide über getrennte Netzte.
Wenn du dann noch eine Trennung willst, müsstest du dir ernsthaft Gedanken um einen zweiten Internetanschluss machen.
Eine physische Trennung über zwei Netzwerkkarten zu erzwingen, hätte hier nur Mehrkosten sowohl bei Hardware als auch bei Stromkosten.

Was da nicht reichen soll ist mir auch nicht ganz klar.
Wenn du dir sorgen um die Auslastung der Box oder Leitung machst, dann bist du mit einer Fritzbox mit max. GBit/s Anschlüssen eh schon falsch beraten.
Oder wo genau soll es da nicht mehr reichen?

Die Kosten für einen Hardware, die Abt vorgeschlagen hat würde ich mit einer einfachen Netztrennung auf IP Ebene lösen.
Da muss man sich keine extra Hardware ins Haus holen.

T-Virus

Thema: SQL Abfrage Problem mit Datum Formatierung
Am im Forum: Datentechnologien

@Pacher
Dann hatte ich dies falsch verstanden.
Der Lösungsansatz ist dann zwar ganz nett, hat aber auch noch Folgeprobleme.
Das ganze ist ohne SqlParameter dann auch nur schwer portierbar bzw. müsste man manuell das Format an allen Stellen einbauen.
Das nimmt die SqlParameter hier komplett ab bzw. macht es sogar überflüssig.

Tools für Sqlite gibt es wie Sand am Meer.
Z.b. gibt es DBeaver für mehrere Datenbanken oder spezifisch auch Sqlite Studio.
Mit letzterem arbeite ich aktuell noch am meisten, da es eine sehr kompakte Anwendung ist und die wichtigsten Funktionen mitbringt, die ich brauche.

T-Virus

Thema: Canon Kamera connect
Am im Forum: Grundlagen von C#

Es gibt scheinbar auch ein NuGet Paket, wenn man kurz mal nach der DLL sucht.

Info:
canon-edsdk-tutorial-in-c-sharp-canon-dlls-not-found-error

Nuget Paket:
https://www.nuget.org/packages/Canon.EDSDK/

T-Virus

Thema: SQL Abfrage Problem mit Datum Formatierung
Am im Forum: Datentechnologien

Nutzt doch bitte die Hinweise und Artikel, die wir dir geben.
Jetzt ignorierst du meinen Hinweis auf Sqlite und SqlParameter.
Damit gehst du direkt am Anfang in die völlig falsche Richtung.

Das du weiter auf Access setzen willst, mag dein Geschmack sein, im .NET Umfeld wirst du dann aber auf viele Probleme stoßen.
Die Verteilung deiner Anwendung wird dann ein ordentlicher Albtraum.
Gerade hier sind Embedded Datenbanken im Vorteil, da diese eben alles nötige über ihre Library mitbringen.
Bei Access musst du nicht nur den richtigen Treiber für die richtige Version mitliefern.
Ebenfalls muss jeder Anwender diesen auch vorab installieren, da sonst die Zugriffe auf deine Access Datei knallen.
Tools zum bearbeiten der Embedded Datenbanken gibt es wie Sand am Meer und können auch mehr als du mit Access tun kannst.
Gerade im App Bereich wird auf Sqlite gesetzt, du arbeitest also mit einer robusten Datenbank.

Das du mit der Drei Schichten Architektur noch nicht anfangen willst, ist hingegen verständlich.
Ist schon etwas gehobener Stoff, den man nach den Grundlagen wie OOP angehen sollte.
Aber bitte tue es auch, damit wird dein Code zukünftig erst wart- und auch testbar.

T-Virus

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

Weil es mir gerade aufgefallen ist, hier gibt es scheinbar einen kleinen Bug bei den neusten Themen.
Scheinbar wurde ein Thema gelöscht/verschoben aber wird immer noch in neusten Beiträgen in der Box auf der Hauptseite angezeigt.
Wenn man direkt die neusten Themen auflisten lässt, fehlt der Eintrag.
Wenn man den Eintrag aufruft, landet man auf einer 403 Fehlermeldung.

Bsp.
Installieren von und Herstellen einer Verbindung mit Northwind funktioniert nicht

T-Virus

Thema: SQL Abfrage Problem mit Datum Formatierung
Am im Forum: Datentechnologien

Man schreibt die Werte nicht direkt in die SQL Anweisungen.
Dafür gibt es SqlParameter.
Damit sicherst du deine Anweisungen nicht nur gegen SQL Injection ab sondern musst dich auch nicht um die richtige Formatierung der Werte kümmern.

[Artikelserie] SQL: Parameter von Befehlen

Zusätzlich solltest du keine DB Anbindung nicht in der UI umsetzen.
Das wird sowohl unwartbar als auch untestbar auf dauer.

[Artikel] Drei-Schichten-Architektur

Ebenfalls ist Access keine für C# empfohlene Datenbank bzw. ist es im .NET Bereich keine Lösung.
Wenn du eine Anwendungslokale Datenbank brauchst, dann nimm eine Embedded Datenbank wie Sqlite.

T-Virus

Thema: Verbindung zu MySql schlägt fehl
Am im Forum: Datentechnologien

Was du aktuell zusätzlich noch falsch machst, ist dein Verbindungshandling.
In deinem Code öffnest du zwar eine Verbindung, machst damit aber nichts.
Ebenfalls schließt du diese nicht, hier solltest du using oder wenigstens Close aufrufen, wenn du fertig bist.
Auch wird dein Befehle zum erstellen der Tabelle nicht ausgeführt.
Hier musst du die ExecuteNonQuery Methode des MySqlCommand aufrufen.

Die Zugansdaten gehören in eine Config Datei, nicht in den Code selbst.
Sich dann auch noch mit root ohne Passwort anmelden, ist schon eine krasse Sicherheitslücke.
Hier solltest du mindestens einen eigenen Benutzer anlegen und der nur auf seine Datenbank Zugriff hat.
Wenn die Anwendung verteilt laufen soll, also z.B. Zugriffe von extern auf die Datenbank, dann solltest du der Datenbank noch eine (Web)Api vorschalten.
Zugriffe von extern direkt auf eine Datenbank sind ein absolutes NoGo!

Da du hier auch mit kritischen Daten arbeitest, hast du hofentlich ein ordentliches Datenschutz Konzept.
Hier willst du sonst keine Daten wie Telefonnummern oder Emails speichern.
Ebenfalls brauchst du dann noch die Einwilligung aller Benutzer, die ihre Daten bei dir speichern sollen.
Die DSGVO hat hier einige kritische Punkte festgeschrieben, mit denen du dich vorab beschäftigen solltest.

Nachtrag:
Dein Verbindungsproblem aus deinem letzten Kommentar deutet darauf hin, dass entweder die MySQL Instanz nicht läuft.
Hier müsstest du also z.B. über ein entsprechendes Tool erstmal schauen ob du gerenell eine Verbindung aufbauen kannst.
Wenn ja, dann stimmen deine Verbindungsdaten im Code ja nicht.

Nachtrag 2:
Ebenfalls solltest du deinen Code aufteilen.
Datenbankzugriffe erfolgen bei sauberen Code nicht in der UI.

Schau dir am besten dazu noch den Artikel für die 3 Schichten Architektur an.

[Artikel] Drei-Schichten-Architektur



T-Virus

Thema: Serialisiertes PHP Objekt deserialisieren/per RegEx auslesen
Am im Forum: Basistechnologien und allgemeine .NET-Klassen

Fall es mal jemand braucht, hier noch eine Aufschlüsselung was der String im Detail bedeutet, den PHP beim serialisieren rausgibt.

Exploit PHP Deserialization

T-Virus

Thema: Erste Preview von .NET 6 veröffentlicht
Am im Forum: Szenenews

Hatte ich mir auch schon gedacht, da Heise wirklich enorm viel weggelassen bzw. auch stark verkürzt hat.
Deshalb habe ich gleich den original Blogpost dazu gepackt.

T-Virus

Thema: Json in c# vewenden
Am im Forum: Grundlagen von C#

Da du mit Newtonsoft.Json arbeitest, kannst du auch in deren Doku schauen, ist aber im großen und ganzen nicht anders als beim .NET 5 System.Text.Json

Doku

Eigentlich musst du nur die Datei in einen string lesen, z.B. über FileReadAllLines und dann über JsonConvert.Deserialize den String zu deinem Objekt konvertieren.
Kann man in 1-2 Zeilen umsetzen.

T-Virus

Thema: Erste Preview von .NET 6 veröffentlicht
Am im Forum: Szenenews

Zur Info:
Microsoft veröffentlicht erste Preview-Version von .NET 6 | heise online

Orignal Blogpost:
Announcing .NET 6 Preview 1 | .NET Blog

Sieht sehr interesant aus.
Blazor Desktop Apps müsste ich mir mal anschauen.
Für den ein oder anderen dürfte auch was tolles dabei sein.
Viel Spaß beim testen

T-Virus

Thema: Serialisiertes PHP Objekt deserialisieren/per RegEx auslesen
Am im Forum: Basistechnologien und allgemeine .NET-Klassen

Das RegEx geparse kannst du dir tatsächlich sparen.
Mir ist nur nicht klar in welchem Format hier das Objekt Serialisiert ist, sieht nicht nacht einem bekannten Format aus (Xml, Json etc.)

Ansonsten würde ich dir empfehlen, wie Witte auch schon geschrieben hat, das ganze per einfachen String Operationen umzusetzen.
Dafür RegEx nehmen wäre vermutlich nicht einfachert und müsste auch über zwei Ebenen laufen.

T-Virus

Thema: String Übergabe Methode zu Methode
Am im Forum: Grundlagen von C#

@BerndFfm
Ich würde eher erstmal empfehlen sich generell mit den Grundlagen zu befassen bevor man mit UI Entwicköung anfängt.
Gerade bei WPF geht das Code Behind basteln in die vollig falsche Richtung.
Deshalb eher erst einmal mit Konsolenanwendung die Grundlagen einarbeiten.

T-Virus

Thema: API Oder direkte SQL Abfrage
Am im Forum: Datentechnologien

Immer bei Apps gegen eine APi arbeiten!
NIE NIE NIE gegen die Datenbank direkt von Apps aus arbeiten.
Du legst damit die Datenbank direkt ins Netz offen, dann braucht man sich auch nicht über Datenlecks wundern.
Ebenfalls musst du dann in der App die Zugangsdaten zur DB verteilen, was Einbrüche noch weiter erleichtert.

Bei einer Api ist die Datenbank abgeschottet.
Ebenfalls kannst du erst mit einer vorgeschalteten Api sowohl Zugriffsrechte mit deiner Anwendungslogik steuern als auch weitere Maßnahmen wie Caching etc. umsetzen.

Die Umsetzung ist auch bei Microsoft gut dokumentiert.

Doku

T-Virus

Thema: Herangehensweise beim Laden von Bilder mit unüblichen Format
Am im Forum: Rund um die Programmierung

Alternativ ginge es auch, wenn du schon fertige Programme mit den Libs hast, diese über Process/ProcessInfo mit entsprechenden Parametern aufrufen.
Dann musst du nur die Bild Datei ggf. per Pfad an das Programm mitgeben und arbeiten lassen.
Würde ich machen, wenn die Einbindung sonst zu aufwändig wäre.
Wäre dann aber auch nur die Quick und Dirty Lösung um die Einbindung auszusparen.

T-Virus

Thema: Foreach und Switch Case
Am im Forum: Grundlagen von C#

Hast du den Code mal debugged und geschaut ob dieser generell so funktioniert wie er soll?
Ansonsten sieht das switch/case erst einmal in Ordnung aus und erklärt für mich nicht, warum er nur einen Durchlauf machen sollte.

Ich würde den ganzen Schleifen Körper auch in eine eigene Methode packen.
Das macht den Code enorm les- und wartbarer.

T-Virus

Thema: Array in Methode auslagern
Am im Forum: Grundlagen von C#

@Abt
Bei dem goto und den Variablen Namen riche ich sehr viel C
Kann aber auch Pascal oder C++ sein :o

Nachtrag:
Zu deiner Antwort:
Ich war wohl etwas übers Ziel hinausgeschossen
Mein Fehler.

T-Virus

Thema: [Artikel] Die myCSharp.de Infrastruktur
Am im Forum: Artikel

Sehr schöner Artikel.
Leider fehlt mir zu viel Backgroundwissen um das ganze irgendwie in eine brauchbare Relation zu packen.
Ich muss mich mal in die einzelnen Tools einlesen.
Insgesamt arbeite ich aber auch nicht im Cloud Bereich, privat schon gar nicht.
Aber denoch Hut ab für die ganze Leistung.

@Abt
Soweit ich mleadb verstanden habe, meint er eine reine Root Server Umgebung.
Also direkt Webserver und DB auf Hardware ohne zusätzliche VM.
In deiner Antwort scheinst du davon auszugehen, dass er eine VM mietet.

Aber selbst diese würde bei Hetzner keine 12 Monate Bindung bedeuten.
Das war vor 10+ Jahren so, dass man hier teilweise 12 Monate einen Vertrag bei den Hostern abschließen musste.
I.d.R. hat man hier einen Monat mindestens als Laufzeit für VM und Root Server.

Hab selbst meinen zweiten Root Server bei Hetzner, deshalb kann ich da bei Root Servern eher aus dem Nähkästchen quarken.
Aber wenn man wirklich den ganzen Admin Teil nicht machen will, dann macht halt Cloud auch mehr Sinn.
Egal ob VM/Root Server, am Ende muss man sich dabei um alles selbst kümern.
Bei der Cloud liegt dieser Administrative Part eben bei dem Anbieter.

T-Virus

Thema: Array in Methode auslagern
Am im Forum: Grundlagen von C#

Den Code solltest du dringend kapseln.
Der Teil mit dem Ver-/Entschlüsseln gehört in eine eigene Klasse samt der nötigen Variablen dazu.
Auch sehe ich ein goto, was bei sauberen Code überhaupt nicht nötig wäre.

Alleine das auslagern in eine eigene Klasse dürfte deinen UI wieder wieder ungemein lesbar machen.
Mal davon abgesehen, dass du dann deinen Code auch mal UnitTests durchlaufen lassen kannst.
Das würde dir vermutliche eines an Zeit sparen.

T-Virus

Thema: Wie kann ich ein JSON in ein Objekt deserialisieren?
Am im Forum: Datentechnologien

Die while(true) Schleife kannst du wieder rauswerfen.
Ebenfalls kannst du auch Main als async von .NET aufrufen lassen.
Dann sparst du dir die Überladungen.

T-Virus

Thema: Wie kann ich ein JSON in ein Objekt deserialisieren?
Am im Forum: Datentechnologien

Wo kommt den der Fall her?
In dem Beispiel liegt gibt es keine Leerzeichen in den Metadata.
Bitte mal den Link posten wo das vorkommt, dann muss man auch erstmal prüfen ob dort nicht eine andere Struktur nötig ist.

T-Virus

Thema: Wie kann ich ein JSON in ein Objekt deserialisieren?
Am im Forum: Datentechnologien

Der Aufbau deiner Klasse passt nicht zu dem Json.

Du brauchst hier eine viel umfangreiche Klasse, da type nur ein String ist.
Im Browser wird das ganze i.d.R. auch strukturierter dargestellt, was die Umsetzung der Klasse auch vereinfacht.
Schau dir doch mal die Url in Chrome/Firefox an.

Je nach Ebene musst du schauen welche Struktur du dort hast und muss diese als Property der jeweiligen übergeordneten Struktur umsetzen.

Ich habe auf den ersten Blick folgende Struktur ermittelt.
Diese ist aber unfertig, Properties enthält noch eine Menge Felder die du noch hinzufügen müsstest.
Wenn die Struktur einigermaßen passt, solltest du schon einen guten Teil der Informationen auslesen können.
Kannst dich etwas damit austoben und lernen wie du die Strukturen umsetzen musst.


public class Earthquake
{
    public string Type { get; set; }
	
	public Metadata Metadata { get; set; }
	
	public List<Feature> Features { get; set; }
}

public class Metadata
{
    public long Generated { get; set; }
	
	public string Url { get; set; }
	
	public string Title { get; set; }
	
	public int status { get; set; }
	
	public string Api { get; set; }
	
	public int Count { get; set; }
}

public class Feature
{
	public string Type { get; set; }
	
	public Properties Properties { get; set; }
	
	public string Id { get; set; }
	
	public Geometry Geometry { get; set; }
}

public class Properties
{
	public int Mag { get; set; }
}

public class Geometry
{
	public string Type { get; set; }
	
	public List<double> Coordinates { get; set; }
}

Nachtrag:
Du solltest die Abfrage der Url nicht mehr mit WebRequest/WebResponse machen.
Nutzt dazu am besten den HttpClient, da WebRequest nicht mehr weiterentwickelt wird und auch in der Doku darauf verwiesen wird.

Hinweis bei WebRequest

T-Virus

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

Eigentlich kannst du auch auf die Convert Klasse aufbauen.
Diese bietet dir übrigens genau solche Methoden.
Dort werden bei falschen Formaten aber auch Exceptions geworfen.
Ansonsten kannst du, wie von dannoe empfohlen, auch gegen die Methpden der jeweiligen DAtentypen arbeiten.
I.d.R. haben diese eine Parse/TryParse Methode.
Dabei kannst du in TryParse an dem Rückgabewert erkennen ob die Konvertierung funktioniert hat.

Im Endeffekt erfindest du hier das Rad neu, was aber unnötig ist.

Nachtrag:
Deine Antwort kam leider vor meiner.
Also ist deine StringConvert Klasse nur ein Wrapper um die bestehenden Klassen und Methoden.
Ist zwar ganz nett, aber kann u.U. auch Fehler verschleiern.
Wenn deine Konvertierung scheitert, was bekommst du dann für einen Wert oder wirfst du auch nur eine Exception?
Dann hätte deine Klasse keinen direkten Mehrwert als die Convert Klasse.

T-Virus

Thema: DB-Verbindung schlägt fehl
Am im Forum: Datentechnologien

Sicher das der ConnectionString richtig ist?
Und was meinst du mit JDBC Treiber?
Bei C# arbeitest du mit ADO .NET und nicht JDBC.

Link:
ConnectionStrings SQL Server 2019

Anstelle von User versuch mal User Id, dann könnte es klappen.
Am besten kannst du solche Probleme auch mit einem einfachen Test Programm prüfen ob dein Code und ConnectionString passt.
Bitte zeig auch mal deinen Code, vielleicht sieht man dann noch eine Ursache.

T-Virus