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 BerndFfm
Thema: Wahl eines Protokolls für Dateiübertragung übers Internet
Am im Forum: Netzwerktechnologien

Danke für Deine Tipps.

Free File Sync ist ein guter Tipp. Syncthing sieht auch gut aus.

Für beide gibt es Steuerung über URL bzw. Command Line. Das könnte ich dann ansteuern.

Das ist auf jeden Fall sicherer als selber einen Port nach außen zu öffnen.

Grüße Bernd

Thema: Asyncrones Einlesen einer MYSQL Datenbank: ... invalid column ordinal
Am im Forum: Datentechnologien

Ich würde Dir empfehlen ein ORM oder Micro-ORM einzusetzen.

Bei mir würde deine Routine z.B. so aussehen :


foreach (DataObjectsArtikel ar in new DataCollectionArtikel(qry))
{
    ArtikellisteIndex = ar.rowindex;
    ArtikelNummer = ar.nr;
    ArtikelName = ar.name;
    BestellMenge = ar.bestmenge;
    Geliefert = ar.geliefert;
    PrioMenge = ar.priomenge;
    Datum = ar.datum;
}

Alles typsicher und mit richtiger Umwandlung.

Grüße Bernd

Thema: Wahl eines Protokolls für Dateiübertragung übers Internet
Am im Forum: Netzwerktechnologien

Hallo,

ich möchte gerne sehr große Dateien (10 - 100 GB) übers Internet übertragen von Arbeitsplatz zu Arbeitsplatz.

Welches Protokoll bzw. welche Technologie würdet ihr empfehlen ?

Bisher habe ich einfach einen TcpClient aufgemacht und per TcpListener empfangen.

Ist so ein TcpListener offen im Internet gefährlich ?

Kann man sowas sicher machen ohne Server in der Mitte ? Oder muss man dafür einen Dienst (Cloudflare, Azure) einsetzen ? Firewall mit DMZ kann ich leider nicht voraussetzen, FritzBox mit freigegebenem NAS Laufwerk schon.

Verschlüsselung wäre schön, muss aber nicht sein.

Resume bei Abbruch muss sein, das würde ich aber auch selber programmieren.

Die Rechner sind nicht immer eingeschaltet.

Grüße Bernd


PS.: Nein, ich möchte keinen Filesharing-Server oder Cloudflare-Konkurrenz programmieren ;-)

Thema: Nach dem Vergrössern beim Verkleinern auch die Spaltenbreite wieder kleiner machen?
Am im Forum: GUI: WPF und XAML

Wenn es im Style nicht geht muss man es selber machen (wie so oft in .NET) :

Spaltenbreiten merken und wenn die Schrift kleiner wird selbst kleiner machen. ich mache das bei einer ListView bei WinForms so.

Grüße Bernd

Thema: Tabellen-/ Listenwert in Sharepoint auslesen
Am im Forum: Office-Technologien

Daten im Web kannst Du abrufen mit :


WebClient cl = new WebClient();
string html = cl.DownloadString(...);
...

Wenn die Website ohne Browser nichts liefert kannst Du ein WebBrowser Control einsetzen, die Website laden und dann das aktuelle Dokument auslesen.

Grüße Bernd

Thema: Mehrere Text-Dateien von bestimmten Pfad einlesen (für GUI-Anwendung)
Am im Forum: Grundlagen von C#

Alle Dateien einlesen :

string[] files = Directory.GetFiles(path, "*.csv", ...);

Statt "c:\users\..\documents" kann man Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments) benutzen.

Grüße Bernd

Thema: Wie kann ich die Zeit in ms von Programmstart bis zum Folgetag 14:00 Uhr messen?
Am im Forum: Grundlagen von C#

Nächster Tag 14 Uhr geht auch eventuell mit der .Date() Methode :


EndZeit = StartZeit.Date().AddDays(1).AddHours(14);

Abt : Ich mache das schon immer so dass die Applikation auf dem freigegebenen Netzwerklaufwerk liegt und das klappt immer noch super. Auch ein Update im laufenden Betrieb klappt.
Ich habe bisher keine Nachteile damit gehabt.

Ist eher Geschmacksache wie man das macht.

Ich mache das mit den Updates anders :
Ich kompiliere 5 Versionen mit den Namen App1.exe bis App5.exe. Ich installiere alle 5, aber nur die die nicht gesperrt sind. Per Programmlauncher starte ich immer die neueste Version dieser 5 Apps.

Ich muss die 5 Versionen einzelnen kompilieren da ich TxtControl verwende und das erlaubt die Umbenennung einer Exe nicht. Warum auch immer.

Grüße Bernd

Thema: Multi Platform UI für .NET (aka .NET MAUI)
Am im Forum: Szenenews

Für neue Entwicklungen super interessant !

Ich habe schon mit Mono und Linux gearbeitet und probiere mich gerade an xamarin.forms.

Das sind noch Verbesserungen notwendig, z.B. WYSIWYG Designer.

Grüße Bernd

Thema: [erledigt] Zeit messen
Am im Forum: Grundlagen von C#

Oder den bösen Befehl Sleep :

Thread.Sleep(random.Next(300, 3000));

Grüße Bernd

Thema: Plattformwahl für Handy App
Am im Forum: Cross Platform Entwicklung - Mobile und IoT

Hab nochmal weiterprobiert. Jetzt klappt es, ich kann das Zielversion von Android auf 5.0 oder 4.4 einstellen.

Das werde ich jetzt mal testen.

Grüße Bernd

Thema: Plattformwahl für Handy App
Am im Forum: Cross Platform Entwicklung - Mobile und IoT

Wenn ich mit Visual Studio 2019 ein xamarin.forms Projekt erstelle dann ist die Android Version auf 9.0 eingestellt und lässt sich nicht ändern.

Wenn ich mit Visual Studio 2017 ein xamarin.forms Projekt erstelle dann ist die Android Version auf 8.1 eingestellt und lässt sich nicht ändern.

Ich habe nun zum Test mal Xamarin-Studio installiert. Da kann ich die Version einstellen, sogar ab Android 4.4 oder 2.3. Aber die Projekte laufen leider nicht.

Früher hab ich Mono Develop und Mono mal benutzt, da lief es noch ;-)

Soll ich mal eine alte Version vom Visual Studio installieren ?

Grüße Bernd

Thema: Machbarkeit? Mit SSH Linux verbinden, Kommando eingeben und Ausgabe auslesen
Am im Forum: Rund um die Programmierung

Ja ! Geht sogar sehr gut !

Ich starte auf einem Web-Shop das Backup und kopiere die Sicherungsdatei dann zu mir.

Auf dem NAS starte ich Sync und Updates.

Die Ausgabe zeige ich ständig an z.B. Prozentangabe und schreibe sie dann in ein Log File.


using Renci.SshNet;

mel2 += "\r\nScrub :\r\n";
mel2 += sys.Now().ToQuasarDateTimeString() + "\r\n";
mel2 += "100%" + RunShellScript("snapraid -o 0 scrub").StringAfter("100%") + "\r\n";
File.AppendAllText(@"f:\Quasar3\Logs\NAS_Log_" + sys.Today().ToQuasarDateStringWithoutDotsYearFirst() + ".txt", mel2);
			
public string RunShellScript(string script)    // Seven-C NAS
{
	string mel = "";
	string host = "Seven-C-NAS";
	string username = "xxx";
	string password = "yyy";
	ShowBusyStatus("Starte Shell Kommando auf " + host + "\r\n" + script);
	using (var client = new SshClient(host, username, password))
	{
		client.Connect();
		SshCommand cmd = client.CreateCommand(script);
		IAsyncResult asynch = cmd.BeginExecute();
		StreamReader reader = new StreamReader(cmd.OutputStream);
		while (!asynch.IsCompleted)
		{
			string result = reader.ReadToEnd();
			if (string.IsNullOrEmpty(result)) continue;
			mel += result.Replace("\n", "\r\n");
	                ShowBusyStatus(result);
		}
	cmd.EndExecute(asynch);
	client.Disconnect();
	}
	return mel;
}

Grüße Bernd

Thema: Wie kann ich Code von Gupta zu C# migrieren?
Am im Forum: Basistechnologien und allgemeine .NET-Klassen

Ich habe mal quick&dirty einen CONZEPT16 zu C# Konverter geschrieben.

Das ist auch eine Datenbanksprache ähnlich GUPTA.

Ich habe den Source nur geringfügig modifiziert und zu jeder Funktion eine C# Methode geschrieben. Das ging recht gut.

Das sah dann so aus :


ClrRec(za);
RecRead(za,za.s.fibu,n);
if (erg > 3)
{
    do
    {
        RecLink(za,za.v.op,n,n);
        Msg("Adress-Nr.: "+Alpha(op.adnr,6,0),n,n);
        if ((erg!=3) && (erg!=6)) ClrRec(op);
        ad.nr = op.adnr;
        if (za.dat ≤ bisdate)
             Call("fa.fibu.datev.ad2");
        RecReadNext (za,za.s.fibu,n);
    }
    while(za.fibu || Escape(n) || erg<4);
}

Grüße Bernd

Thema: Plattformwahl für Handy App
Am im Forum: Cross Platform Entwicklung - Mobile und IoT

Danke für die Info, schau ich mir mal an.

Meine Tablet App fürs Heimkino möchten einige haben, aber die haben oft ältere Tablets mit Android kleiner 8.1.

Im Heimkino kauft man nicht alle 2 Jahre ein neues Tablet wie manche das mit dem Handy machen.

Grüße Bernd

Thema: Blurayplayer mit Windows selber bauen
Am im Forum: Smalltalk

Mit dynamischer Ziel-Helligkeits-Anpassung :

Ein neuer Film !

Grüße Bernd

Thema: Blurayplayer mit Windows selber bauen
Am im Forum: Smalltalk

Die Rendering Software wurde inzwischen stark weiterentwickelt.

Eine Gammakurve sagt aus welcher Zahlenwert eines Bildpunktes mit welcher Helligkeit dargestellt wird. Kauf-Player haben oft 4 Gammakurven eingebaut um heller und dunkler wählen zu können für dunkle und helle Filme.

Die Rendering Software kann inzwischen pro Frame, also 24 mal pro Sekunde, bis zu 256 Gammakurven errechnen für bis zu 256 Bereiche des Bildes.

Das erzeugt ein sehr realistisches Bild mit perfekten Farben und viel Plastizität. KeiN Absaufen von dunklen Szenen, kein Überstrahlen von hellen Bereichen. Kein Verlust von Informationen im Bild. Bessere Strukturen bei Haaren und Haut.

Zusätzlich wird die Ziel-Helligkeit dynamisch aufgrund des Filmes errechnet, so dass man bei besonders dunklen oder hellen Filmen nichts mehr einstellen muss.

Beispiel : Szene aus "Solo - A Star Wars Story"

Mit HDR10 Standard Einstellung :

Thema: Plattformwahl für Handy App
Am im Forum: Cross Platform Entwicklung - Mobile und IoT

Hallo !

ich war eine Weile nicht hier weil ich durch andere Projekte sehr eingebunden war (Rettungshundeausbildung, Heimkino).

Jetzt möchte ich gerne eine App fürs Handy schreiben und bitte euch um eure Meinung.

Eine Tablet App habe ich schon erstellt mit Xamarin.Forms, die steuert Beamer, Player und Licht. Klappt gut.

Windows Phone hatte ich auch schon Apps erstellt.

Da ich nun eine App erstellen will die vielleicht mal auf mehreren Mobile Devices laufen soll habe ich mir erstmal angesehen wieviele Android Installationen es mit welcher Version gibt :

https://www.heise.de/newsticker/meldung/Android-Verteilung-Google-nennt-erstmals-seit-Mai-2019-wieder-Zahlen-4701535.html

Wenn ich also 50% der Devices erreichen möchte muss ich Version 8.1 benutzen, wenn ich 85% der Devices adressieren will muss ich Android Version 6.0 benutzen. Mit 5.0 erreiche ich 94% der Phones und Tablets.

Xamarin.Forms läuft ja erst ab 8.1, kann ich also nicht nehmen wenn ich mehr als 50% erreichen will. Und wenn es auf meinem Handy laufen soll.

Mein eigenes Handy hat Android 8.0, mein Tablet 9.0, mein altes Tablet 4.4.

Was soll die App können ? Ein bissi Web API steuern, auf Kontakte und GPS zugreifen. An die Oberfläche habe ich keine großen Ansprüche.

Ich möchte u.a. protokollieren wenn aus meiner Kontaktliste ich wann und wo treffe. Wozu ich das brauche sage ich nicht ;-)

Mit Xamarin mit nativen Controls kann man ja auch Apps für ältere Android Versionen schreiben. Wär ja auch eine Alternative zu xamarin.forms.

Was mich bei Xamarin extrem stört dass es so viele Weiterentwicklungen gibt die nicht kompatibel sind. Es hat noch nie funktioniert dass ich ein fertiges Projekt aus github o.ä. kompilieren konnte, es kamen immer Fehler. Bei .NET Deskop Anwendungen ist mir das nie passiert, da laufen selbst die ältesten Projekte die man z.B. bei codeprojects lädt.

Welches Framework würdet Ihr mir empfehlen für Android Entwicklungen ?

Grüße Bernd

Thema: Überwachen des Fortschritts von Robocopy - wie?
Am im Forum: Rund um die Programmierung

Es gibt eine gute Klasse für schnelles Kopieren :

QuickIO.NET - Performante Dateioperationen

Ich benutze die schon lange und geht auch async mit Progressbar.

Grüße Bernd

Thema: Speichern in eine bestehende txt-Datei
Am im Forum: Grundlagen von C#

Ich habe mich mit XML nie anfreunden können. Inzwischen mache ich alles mit JSON, da kann man komplette Strukturen mit ein paar Befehlen speichern und laden ohne sich um die Dateistruktur kümmern zu müssen. Die Dateistruktur ist in einer Klasse definiert.

Eine Klasse als Beispiel :


public class QuasarFiles
{
	public string filename { get; set; }
	public string directory { get; set; }
	public long size { get; set; }
	public string checksum { get; set; }
	public DateTime created { get; set; }
	public DateTime modified { get; set; }
	public bool download { get; set; }
	public bool overwrite { get; set; }
}

JSON schreiben :


List<QuasarFiles> files = new List<QuasarFiles>();
files.Add(new QuasarFiles()
{
	filename = fn,
	directory = verz,
	size = length
});
string json = JsonConvert.SerializeObject(files, Newtonsoft.Json.Formatting.Indented);
json = json.Replace("\r\n\r\n", "\r\n");
File.WriteAllText(@"...\files.json", json);

JSON lesen :


string json = File.ReadAllText(@"...\files.json");
List<QuasarFiles> files = JsonConvert.DeserializeObject<List<QuasarFiles>>(json);
foreach (QuasarFiles fil in files)
{ ... }

Man braucht die Newtonsoft.Json.dll dazu. Kann man mit NuGet installieren.

Grüße Bernd

Thema: Blurayplayer mit Windows selber bauen
Am im Forum: Smalltalk

Der Eigenbau Player wurde am Samstag mit 2 Kauf-Geräten verglichen.

Insbesondere das dynamische HDR.

Mein Bericht vom HDR Shootout : http://download.seven-c.de/files/uhd/hdrshootout2/

Grüße Bernd

Thema: .NET Conf 2018
Am im Forum: Szenenews

Interessante Themen !

Wer fährt aus Rhein/Main heute nach Stuttgart ?

Oder wer will sich die Sessions nächste Woche abends im Rhein/Main Gebiet anschauen ?

Grüße Bernd

Thema: Auswahl eines Setup-Programmes für die eigene Applikation
Am im Forum: Entwicklungs- und Laufzeitumgebung (Infrastruktur)

Im Visual Studio 2017 gibt es das Installer Projekt immer noch, es muss wie folgt installiert werden :

Extras / Extensions und Update...

Dann Visual Studio Marketplace wählen und rechts im Suchfeld "Installer" eingeben.

Dann "Microsoft Visual Studio 2017 Installer Projects" auswählen und herunterladen.

Ich benutze das Installer Projekt um meine Software von DVD oder aus dem Internet zu installieren.

Dazu benutze ich es um eine App aus dem Microsoft Store zu installieren bzw. das ist so geplant.

Grüße Bernd

Thema: Skalierung passt nicht beim Drucken von RDLC Bericht
Am im Forum: GUI: Windows-Forms

Einfach den Bericht größer machen. Wenn er dann umbricht auf eine zweite Seite ist das Papierformat zu klein oder der Rand zu groß.

Der Report Builder ist nicht toll wenn man Berichte genau an ein A4 Papier anpassen will.

Grüße Bernd

Thema: WPF Performance auf Terminalserver
Am im Forum: GUI: WPF und XAML

Das war auch der Grund warum wir mit Windows Forms entwickeln.

Man kann aber inzwischen seit Windows Server 2008R2 die Leistung des Terminal Servers durch Graphikkarten Hardware erhöhen, nennt sich RemoteFX.

Die Graphikkarte muss das unterstützen.

Grüße Bernd

Thema: Property "Size" in den Einstellungen und im Code bringt unterschiedliche Grössen
Am im Forum: GUI: Windows-Forms

AutoScaleMode auf 'None' setzen, dann wird die Grüße nicht vom Framework verändert.

Grüße Bernd

Thema: Text auf Button setzen hat keine Auswirkung
Am im Forum: Grundlagen von C#

Der Text im Button wird erst geändert wenn die Methode beendet wird.

Was kommt denn noch bei "......noch mehr code......." ?

Lass das mal alles weg was danach kommt.

Grüße Bernd

Thema: ListView listet kein Filenamen auf
Am im Forum: Grundlagen von C#

PDF's anzeigen lassen kann man mit Adobe DLL, PDFSharp, MoonPDF und anderen Tools.

Die Anzeige ist aber sehr langsam, man müsste das mal testen.

Ich werde MoonPDF als PDF Viewer verwenden. Der Autor von MoonPDF ist übrigens hier im Forum aktiv.

Grüße Bernd

Thema: ListView listet kein Filenamen auf
Am im Forum: Grundlagen von C#

Für PDF gibt es keine Preview. Außer das Icon für PDF selber :

https://image.flaticon.com/icons/svg/337/337946.svg

Um es als Preview anzuzeigen muss man die PDF in Grafikdateien wandeln z.B. mit Ghostscript :


string prog = @"\Program Files\gs\gs9.23\bin\gswin64c.exe";
string args = "-sOutputFile='" + zdat + "' -sDEVICE=jpeg -dBATCH -dNOPAUSE -r16 -q '" + qdat + "'";

Grüße Bernd

Thema: Best Practices für Datenzugriff mit IBM AS/400 und einem AS/400 .NET Data Provider
Am im Forum: Datentechnologien

Das Entity Framework für AS400 ist teuer : https://stackoverflow.com/questions/4546120/is-it-possible-to-use-entity-framework-with-a-db2-iseries-as-400

Hier ist die IBM Lizenz mit 12.000 Dollar angegeben.

Abhilfe : Einen Datenbank Provider für das Entity Framework selber schreiben !

ADO.NET wird natürlich heute noch genutzt, aber der untypisierte Umgang mit DataTable und Rows ist umständlich und fehlerbehaftet.

Ein Micro ORM wie Dapper kann ich auch empfehlen.

ODBC ist die langsamste und umständlichste Methode um auf eine Datenbank zuzugreifen. '

Grüße Bernd

Thema: ListView listet kein Filenamen auf
Am im Forum: Grundlagen von C#

Du hast oben SubItems hinzugefügt, das sind Spalten im ListView.

Wenn Du Zeilen hinzufügen willst dann Items hinzufügen. Und vor dem Füllen das Löschen der alten Zeilen nicht vergessen !

Wenn Du nur eine Spalte hast kannst Du mit Items.Add(string) arbeiten. Dann geht es kürzer als Dein Code :

public void ReadFolder()
{
    listView1.Items.Clear();
    foreach (string fil in Directory.GetFiles(Application.StartupPath, "*.*", SearchOption.TopDirectoryOnly))
    {
         listView1.Items.Add(fil);
    }
}

Wenn der Dateiname ohne Pfad angezeigt werden soll dann Path.GetFileName(fil) benutzen.

Grüße Bernd