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: Manuelle Signierung von App für Android und iOS
Am im Forum: Cross Platform Entwicklung - Mobile und IoT


ich habe jetzt einen kostenpflichtigen Account bei Apple Developer und habe es nun geschafft eine Beta Version Online zu stellen (Adhoc Deployment).

Der kostenlose Account kann nicht viel und man macht mehr kaputt damit. Ich musste viele Umwege gehen bis App ID, Bundle ID, Certificate, Provisioning Profile und Signature funktioniert haben. Am Ende musste ich alle löschen und neu vom VS erstellen lassen.

XCode ist sehr wackelig und ich habe nun alles auf dem Windows Rechner gemacht. Der Mac muss eingeschaltet sein und ein iPhone muss angeschlossen sein. Zum Glück bekomme ich ein altes iPhone geschenkt. Das Windows Visual Studio läuft gut mit dem Mac zusammen und holt sich alle notwendigen Dokumente von der Apple Developer Seite. Und legt alles an was man braucht !

Hier ist das Ergebnis : Die Finderwille Einsatz App Betaversion | Finderwille Frankfurt/Main

Bitte nicht installieren, ich brauche zuerst die iPhone Seriennummer (UDID), sie muss in das Package eingetragen werden.

Grüße Bernd

Thema: SQL-Query-Timeout - aber nicht im Management Studio
Am im Forum: Datentechnologien


Ja, ist quick and dirty.

Eine saubere Trennung ist besser.


public double HauptspeichernutzungInMegabyte()
{
	return Environment.WorkingSet / 1024 / 1024;
}

Gilt für 32-Bit Applikationen.

Grüße Bernd

Thema: SQL-Query-Timeout - aber nicht im Management Studio
Am im Forum: Datentechnologien

Zitat von ChrisProg
Zitat von BerndFfm
Außerdem prüfe ich den Hauptspeicherbedarf. Wenn ein Anwender versucht eine Liste mit 100 Millionen Datensätzen anzuzeigen kommt eine entsprechende Fehlermeldung.
Wie kannst Du das denn, wenn doch der Reader strikt vorwarding ist, du also noch gar nicht weißt, wie viele Daten kommen werden?

Meine Applikation ist 32 Bittig und ich erlaube 768 MB Hauptspeichernutzung beim Erstellen des Reports. Bis zu 2048 MB sind möglich.

Wenn man eigene Arrays / Listen benutzt spart man viel Speicher gegenüber einer DataTable, da diese die Zeilen mehrfach speichert.

So auf die Schnelle :


using (SqlDataReader x_reader = x_ermittle_verpackungen_kunde.ExecuteReader())
{
     while (x_reader.Read())
     {
            cBestaende.Rows.Add(...);
            if (HauptspeichernutzungInMegabyte() > 768) { Message("Der Bericht ist zu groß um ihn vollständig auszugeben !"); break; }
            progresslabel.Text = "  Bericht wird erstellt ... " + (index++ * 100 / length).ToString() + " %  ";
            progresslabel.BringToFront();
            Application.DoEvents();
     }
}

"Application.DoEvents();" ist böse, besser einen eigenen Task für die Anzeige erstellen.

Grüße Bernd

Thema: SQL-Query-Timeout - aber nicht im Management Studio
Am im Forum: Datentechnologien


using (SqlDataReader x_reader = x_ermittle_verpackungen_kunde.ExecuteReader())
{
     while (x_reader.Read())
     {
            cBestaende.Rows.Add(...);
     }
}

Ob das schneller ist weiß ich nicht. Aber man kann dem Anwender eine Progressbar anzeigen und einen Abbruch Button zur Verfügung stellen.

Bei mir hat alles was länger als 2 Sekunden dauert eine Progressbar.

Außerdem prüfe ich den Hauptspeicherbedarf. Wenn ein Anwender versucht eine Liste mit 100 Millionen Datensätzen anzuzeigen kommt eine entsprechende Fehlermeldung.

Grüße Bernd

Thema: SQL-Query-Timeout - aber nicht im Management Studio
Am im Forum: Datentechnologien

Ja, Neustart ist immer gut !

Der SQL Server bekommt den gesamten SQL Befehl und übersetzt ihn und führt ihn aus. Das ist ja Sinn der Sache.

Wenn Du eienn SQL Befehl mit Parametern übergibst dann setzt der SQL Server die Parameter ein, Du musst Dich nicht um länderspezifische Darstellung oder Sonderzeichen kümmern (SQL Injection).

Die Parameter haben noch den Vorteil dass der SQL Server jedes Kommando nur einmal übersetzen muss wenn sich nur die Parameter ändern.

Ich verzichte bei großen Datenmangen auf Tables und DataSet weil man nie weiß was beim Kunden passiert.

Lieber DataReader und selber durchgehen.

Grüße Bernd

Thema: SQL-Query-Timeout - aber nicht im Management Studio
Am im Forum: Datentechnologien

Und was passiert bei


while (x_reader.Read())
{}

Was soll mit den Daten geschehen ?

DataSet und DataTable ist wie Abt schon gesagt sehr speicher- und zeitintensiv.

Ich benutze bei großen Datenmengen nur DataReader. Beim DataTable weiß man nie ob das beim Kunden funktioniert oder nicht.

Und statt select * die Spalten angeben die man braucht.

Grüße Bernd

Thema: SQL-Query-Timeout - aber nicht im Management Studio
Am im Forum: Datentechnologien


Was passiert wenn Du exakt den gleichen SQL Befehl im Code ausführst wie der aus dem Management Studio ?

Was passiert wenn Du einen DataReader benutzt ?

Ich denke dass man das Management Studio eher mit einem DataReader vergleichen kann weil es während der Ausführung responsiv bleibt und im Hintergrund lädt.

Wenn es eine Tabelle anzeigt ist es oft noch nicht fertig mit laden.

Grüße Bernd

Thema: Manuelle Signierung von App für Android und iOS
Am im Forum: Cross Platform Entwicklung - Mobile und IoT


Danke, werde ich testen !

Hast Du dazu die Signatur aus dem Apple Developer Center benutzt ? Dann braucht man den kostenpflichtigen Developer Account, den habe ich noch nicht.

Mit XCode kann man auch ohne diesen Account signieren, ich weiß aber nicht ob nur für angeschlossene Handys gilt oder für alle Handys.

Für die Entwicklung benutze ich nur Visual Studio, auf Windows und auf dem Mac. Xcode habe ich nur für da Anmelden des iPhones und für das Signieren benutzt.

Die App werde ich später über einen Link auf der Homepage verteilen, so wie hier (2. Link) : https://www.finderwille-frankfurt-main.de/finderwille-einsatz-app-betaversion/

Grüße Bernd

Thema: Manuelle Signierung von App für Android und iOS
Am im Forum: Cross Platform Entwicklung - Mobile und IoT

Hallo,

nach einigen steinigen Wegen und 1 h Telefonat mit Apple USA und 1,5 h Telefonat mit Apple München funktioniert nun mein Mac Mini mit XCode und Visual Studio.

Visual und Studio und XCode haben ja Funktionen um Apps zu signieren (archivieren) um sie für Ad Hoc Deployment per Link auf Website bereitzustellen.

Kann man die Signaturen manuell hinzufügen z.B. mit openssl ?

Apple braucht eine p12-Datei.

Wenn man die Signaturen per Skript hinzufügen könnte würde das meinen Ablauf für die Bereitstellung erheblich vereinfachen und sicherer machen.

Außerdem kriege ich es bisher nur ab und zu hin die Signaturen für iOS zu erstellen, das ist recht wackelig in XCode.

Grüße Bernd

Thema: Jahr Angabe - Hilfe für einen Beginner
Am im Forum: Grundlagen von C#

Das erinnert mich an eine Frage an eine Software Firma nach einem Vortrag im Jahr 1990 :

"Wir schreiben Software für Krankenhäuser und da haben wir ab und zu Patienten mit Geburtstag vor dem 1.1.1900. Das kann man nicht eingeben !"

Antwort : "Das Problem löst sich mit der Zeit von alleine !"

Grüße Bernd

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


Jetzt habe ich ein iPhone zum Testen. Das Testen auf einem Gerät ist leider nicht so einfach wie mit einem Android Gerät. Da dauert es nur wenige Minuten bis die App auf dem Handy läuft.

ich scheitere immer daran ein Team oder ein Bereitstelungsprofil anzulegen. Das scheint mit dem kostenlosen Entwickleraccount nicht zu gehen obwohl es gehen sollte.

Weder am mac noch am Windows PC.

Leider gibt es auch keine durchgängige Anleitung dazu.

Grüße Bernd

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

Ja. Dann mach mal !

Design ist nicht mein Ding.

Die Buttons kriege ich alleine hin, da wird das BorderRound / CornerRound und das BorderWidth von iOS anders umgesetzt als beim Android.

Den inaktiven Button kann man nicht lesen, mal sehen.

Ich bin ja froh dass es überhaupt läuft.

Bis es perfekt ist ist es noch etwas Arbeit.

Den Remote iOS Emulator hab ich eben getestet, er startet aber bleibt schwarz. Das war ja schon beschrieben dass der nicht geht.

Ich habe auch aus Versehen Android Code in das gemeinsame Projekt geschrieben, muss ich auch ändern. Aber so auf Anhieb eine tolle Entwicklungsumgebung für Android und iOS und läuft auch auf dem M1 !

Grüße Bernd

PS.: Zeitformat ist auch falsch bei Einsatzbeginn. Das sind aber alles Luxus-Probleme !







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


Meine App läuft auf Anhieb auf dem iOS Emulator des mac mini mit M1 Prozessor :

Hot XAML Reloading ist abgeschaltet !

Grüße Bernd

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

Mac mini ist angekommen. Visual Studio und xcode sind installiert.

Das erste Projekt läuft : Xamarin.Forms auf iOS Emulator.

Android Emulator kann ich einrichten, läuft aber nicht.

Der Remote iOS Emulator, um iOS Emulator auf Windows laufen zu lassen, soll nicht gehen, den brauche ich aber auch nicht.

Grüße Bernd

Thema: Formular Generator
Am im Forum: GUI: Windows-Forms

Man kann das Formular direkt in Word erstellen ;-)

Man kann so etwas aber auch einfach in Winforms selber machen :

Eine Anzahl Felder, dazu Feldtitel und Format ("string 10", "double 8.2", "bool"). Schon ist ein einfacher Formulargenerator fertig.

Man kann natürlich auch eine IDE nachbauen : Crafting a C# Forms Editor from scratch

Grüße Bernd

Thema: Android APK funktioniert nur im Emulator
Am im Forum: Cross Platform Entwicklung - Mobile und IoT


Ich habe auch lange gebraucht bis meine App auf dem Handy lief.

Die beiden Tipps oben sind wichtig : Protokoll ansehen mit adb.exe und im Visual Studio Debuggen.

Eventuell die App nochmal vom Smartphone entfernen, mit adb uninstall, siehe im Kapitel "Update der Finderwille Einsatz App"

https://www.finderwille-frankfurt-main.de/finderwille-einsatz-app-betaversion/

Grüße Bernd

Thema: MySQL mehrere Werte auslesen und als String wiedergeben
Am im Forum: Datentechnologien

Hier sind ein paar Beispiele mit MySQL : Zugriff auf SQL Compact und MySQL

Probiere dich mit HeidiSQL anzumelden und die Abfrage auszuführen.

Grüße Bernd

Edit : Text geändert weil ich zuerst dachte Du greifst über die externe IP zu.

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


M1 ist bestellt, ich werde berichten !

Grüße Bernd

Thema: Vorstellung Projekt 'Finderwille Einsatz App'
Am im Forum: Smalltalk

Da Date- und Timepicker in Xamarin.Forms m.M.n. hässlich und nicht intuitiv bedienbar sind und dazu noch im Darkmode nicht funktionieren habe ich jetzt eigene Time- und Datepicker geschrieben. Ganz ohne Design, aber sie funktionieren !

Grüße Bernd

Thema: Vorstellung Projekt 'Finderwille Einsatz App'
Am im Forum: Smalltalk


Trotz einiger Hürden bin ich weitergekommen :

Zuerst ließ sich die App nicht auf dem Handy installieren, die Fehlermeldung lautete "App nicht installiert".

Erst nach einigen Recherchen konnte ich das genaue Protokoll mit dem Programm adb anschauen und den Fehler eingrenzen.
Mit adb konnte ich die vorherige Version komplett de-installieren und die neue Version installieren.

Das Layout hatte ich komplett auf Grid umgestellt und so passt es sich an die verschiedenen Auflösungen an. Nur die Schriftgröße nicht. Die muss man manuell anpassen.
Dazu gibt es jetzt ein Menü mit dem man die Schrift größer und kleiner machen kann.
Im Listview kann ich die Schriftgröße leider nicht ändern, das habe ich dann anders gelöst.

Die erste Rückmeldung der Beta Version : "Man kann nichts sehen !"
"Dark Mode" was ist das ?
Für den Dark Mode muss man so einige Controls anpassen, dann klappt das auch. Nur der DatePicker läuft nicht, der zeigt seine Werte weiß auf weiß an. Lässt sicher leider nicht ändern. Das ist ein known issue und wird hoffentlich bald behoben.

Inzwischen läuft die App sehr gut auf vielen verschiedenen Android Devices.

Link : https://www.finderwille-frankfurt-main.de/finderwille-einsatz-app-betaversion/

Als nächstes kommt die iOS Version dran. Ich habe nun ein MacBook Pro leiheise hier. Leider muss sehr viel installiert werden, so werde ich mir doch einen eigenen Mac zulegen.

Grüße Bernd

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

Ich bin auch dabei mir einen Apple zu kaufen für iOS und MacOS Apps.

Einige bekommen ihre Xamarin Projekte auf dem M1 zum laufen. Warum es manchmal nicht geht weiß nicht.

Der Fehler beim Debugging ist anscheinend im Big Sur 11.2 behoben :

Debugging on Apples M1 platform fails.

Letzter Beitrag !

Und : Xamarin Mac development on Big Sur / M1 processors?

Auch letzter Beitrag.

Die bisherige Installation auf M1 läuft natürlich auf Rosetta (x86 Emulator) : Visual Studio for Mac plans for Apple M1 / ARM-based processors/1288531

Der Remote iOS Emulator um iOS Apps auf Windows zu starten scheint nicht zu funktionieren : Remoted iOS Simulator shows up as black screen

Ich werde mir wahrscheinlich einen Mac mit einem i5 zulegen. Oder doch M1 ? No Risk no fun !

Grüße Bernd

Thema: Aufbaue einer Datenbankabfrage mit variablen Filtern
Am im Forum: Datentechnologien


Der Query Builder ist ja fast genauso wie mein ORM.

Ich habe es nach einem Vortrag der .NET User Group in Bad Homburg über Statemachines und Fluent APIs im Jahr 2015 geschrieben.

Ich kann diese Vorgehensweise sehr empfehlen weil die Programmierung wirklich sehr einfach und typsicher ist.

Eine Grammatik kann ich bei mir nicht einbauen da ich sonst keine fallweise Verknüpfungen machen kann wie


if (...) qry = qry.sn_nr().IsLike(SuchfeldString(such_sn_nr)).And();

Bzw. ich hab's nicht hinbekommen.

Zusätzlich erstelle ich für die Datenbankstruktur Klassen, so dass die Query typsicher ist und Intellisense funktioniert. Das macht der Query Builder nicht glaube ich.

Grüße Bernd

Thema: Aufbaue einer Datenbankabfrage mit variablen Filtern
Am im Forum: Datentechnologien

Ich habe bei allen Abfragen immer variable Filter.

Das sieht bei mir so aus :



// Alt
string sqlstr = "SELECT * FROM ad WHERE ";
if (such_ad_match.Text.Trim() != "") sqlstr += "ad_match LIKE '" + such_ad_match.Text.ToSqlString() + "%' AND ";
if (such_ad_nr.Text.Trim() != "") sqlstr += "ad_nr = '" + such_ad_nr.Text.ToSqlString() + "' AND ";
if (such_ad_kdnr.Text.Trim() != "") sqlstr += "ad_kdnr = '" + such_ad_kdnr.Text.ToSqlString() + "' AND ";
if (such_ad_nam1.Text.Trim() != "") sqlstr += "ad_name1 = '" + such_ad_name1.Text.ToSqlString() + "' AND ";
...

// Neu mit (eigenem) ORM und Parametern
clsDataQuery qry = new clsDataQuery("sn").Where();
if (such_sn_nr.Text != "")		qry = qry.sn_nr().IsLike(SuchfeldString(such_sn_nr)).And();
if (such_sn_arnr.Text != "")	qry = qry.sn_arnr().IsLike(SuchfeldStringExakt(such_sn_arnr)).And();
if (such_sn_status.Text != "")	qry = qry.sn_status().IsLike(SuchfeldStringExakt(such_sn_status)).And();
...

Der Code wird maschinell erstellt für Winforms, WPF und Xamarin.Forms.

Ich finde das für den Anwender sehr komfortabel. Für den Programmierer auch.

Grüße Bernd

Thema: Formular Generator
Am im Forum: GUI: Windows-Forms


Sorry, habe ich falsch verstanden.

Es gibt Designer die man einbauen kann.

Es ist aber auch nicht schwierig Felder dynamisch anzuzeigen. Das klappt gut in Winforms und auch in WPF.

Die Eingabefelder kann man dann z.B. dynamisch als json in einem Datenbankfeld speichern.

Grüße Bernd

Thema: Formular Generator
Am im Forum: GUI: Windows-Forms


Ich finde Report Builder sehr gut. Kostet nix und kann jeder bedienen der mit Excel umgehen kann.

Report Builder / Designer 2.0 RC1 - 3.0 released

Ich hatte früher noch FYI Reporting eingesetzt, das gibts aber nicht mehr. Der Nachfolger heisst NReports.

Grüße Bernd

Thema: Vorstellung Projekt 'Finderwille Einsatz App'
Am im Forum: Smalltalk

Hallo,

ich möchte hier mein Projekt 'Finderwille Einsatz App' vorstellen an dem ich gerade arbeite.

Durch die Beschränkung die wir zur Zeit bei Trainings und Einsätzen mit unseren Hunden haben habe ich eine App gesucht um Einsätze und einsatznahe Trainings aus der Ferne zu organisieren und die Live Standorte zu sehen. Leider habe ich da nichts gefunden. Also programmiert man so etwas selber !

Da ich mich normalerweise nur mit Desktop Software und Winforms beschäftige tu ich mich da etwas schwer. Aber man lernt ja gerne dazu.

Für die Server Applikation, die die GPS-Koordinaten entgegennehmen, speichern und darstellen soll, habe ich traccar gefunden.
Das ist eine professionelle Open Source Lösung die von Speditionen, Taxiunternehmen, Krankentransporten und Rettungsdiensten eingesetzt wird und bis zu 10.000 Geräte gleichzeitig im Blick haben kann. Der traccar Server kann neben meiner App bis zu 1200 verschiedene GPS Devices tracken, er versteht über 130 Protokolle. Also geht alles vom Hunde-GPS-Halsband bis zum Rettungshubschrauber. Für die Einsatzleitsoftware die hier in Einsätzen verwendet wird gibt es eine Schnittstelle, so dass die Einsatzkräfte auf der Karte der Einsatzleitsoftware erscheinen. Für Einsatzfahrzeuge gibt es OBD2-Dongle, die man einfach einsteckt und man sieht wo das Einsatzfahrzeug im Wald steht.

Die geplante App soll die GPS Koordinaten, einen Einsatz- bzw. Trainings-Status und einige weitere Daten an die Server Software senden.

Als Plattform habe ich Xamarin.Forms gewählt. Soll ja auch später mal auf einem iPhone laufen.

Die erste Hürde war das Laufen im Hintergrund. Das ist wohl etwas sehr böses bei einer Handy App, jeder Hersteller hat Angst um seine Akkulaufzeit.

Ich habe eine Bibliothek mit Beispiel gefunden, die das recht gut abdeckt. Hie muss auch mit einigen Tricks gearbeitet werden.

Zum Vergleich : GPS-Koordinaten abfragen und an einen Server schicken : 5 Programmzeilen. GPS-Koordinaten im HIntergrund abfragen und an einen Server schicken : 1500 Programmzeilen.

Der erste Entwurf war leider mit festen Größen und lief so nur auf meiner Handy Auflösung. Der jetzige Entwurf basiert auf Grids und passt sich vom Layout an alle Größen an. Lediglich die Schriftgröße und die Größe der Schalter muss man manuell anpassen.

Unten der Bildschirm der App (Design ist nicht mein Ding!).

Hier eine Beschreibung mit einigen Beispiel-Bildschirmen : Finderwille Einsatz App | Finderwille Frankfurt/Main

Gestern war der erste Einsatz bei einer Einsatz-Übung. Hat super funktioniert. Der Standort der Teilnehmer war sekundengenau und metergenau zu sehen.

Vorherige Lösungen wie WhatsApp Live Standort, Viewranger oder Outdoor Active hängen schon mal 15 Minuten bis der nächste Standort kommt. Da ist man schon weit in die falsche Richtung gelaufen. Außerdem sind sie in Hessen bei Einsätzen verboten, weil einsatzrelevante Daten nur auf deutschen Servern gespeichert werden dürfen.

Ich werde berichten wie es mit dem Projekt weitergeht.

Grüße Bernd

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

Wenn die Verbindung nicht funktioniert dann immer mit HeidiSQL probieren mit den gleichen Anmeldedaten.

Wenn es da nicht geht : Anmeldedaten falsch !

Wenn es da geht : Programm falsch !

"data source" kann man statt "server" benutzen, dann aber in 2 Wörtern !

"user id" oder "uid" für Username.

Grüße Bernd



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


Achte auch darauf dass es intuitiv bedienbar ist. Dass sich ein Wert ändert wenn man mit der Maus drauf klickt finde ich unüblich und nicht vorhersehbar. Ein Button mit "Alter Wert" oder so fände ich besser.

Grüße Bernd

Thema: PDF mit Forms.Webbrowser darstellen
Am im Forum: GUI: Windows-Forms

Ich benutze schon lange MoonPDF. Der Entwickler ist auch hier im Forum.

MoonPdf - PDF Viewer Control und PDF Viewer

MoonPdfPanel - A WPF-based PDF Viewer Control

Läuft sehr gut.

Kleiner Nachteil für mich ist dass er die PDF in Bitmap rendert und man so keinen Text rauskopieren kann und Links nicht gehen.

Grüße Bernd

Thema: [Gelöst] Wie mache ich meine Datenbank-Implementierung unabhängig?
Am im Forum: Datentechnologien

Schau auch hier :
http://download.seven-c.de/files/DatenbankenHowTo.htm#10

Kapitel 11 "Datenbankunabhängige Programmierung"

Grüße Bernd