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 lhyn
Thema: OAuth 2.0 Autorisierung mit Postman
Am im Forum: Web-Technologien

Hallo dannoe,

Ich danke Dir für die Antwort, hat mit Deiner Hilfe gut geklappt.

Unter Import konnte ich cURL auswählen und damit importieren.

Gruss Lhyn

Thema: OAuth 2.0 Autorisierung mit Postman
Am im Forum: Web-Technologien

Hallo zusammen,

Ich möchte mich mit einer Web API via Postman verbinden und dazu wird OAuth 2.0 verwendet.
-> ClientId und CleintSecret habe ich

In der Doku der Web API steht ich soll mich für die Schlüsselgenerierung wie folgt verbinden:


curl -X POST \
  'https://api.asdf.de/oauth/accesstoken?grant_type=client_credentials' \
  -H 'Authorization: Basic base64<ClientId:CleintSecret>' \
  -H 'Cache-Control: no-cache' \
  -H 'Content-Length: 0' \
  -H 'Postman-Token: xxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx'

Dann erhalte ich unter anderem den Schlüssel als Antwort.

Nun, ich habe keine Ahnung wie ich das im Postman in ein Post bringe...
Gem. Google soll das etwas mit cURL sein :-)

Ich danke Euch für die Unterstützung.

Gruss Lhyn

Thema: Wieso wird bei meiner WebAPI mit .NET 5 mein Controller nie aufgerufen?
Am im Forum: Web-Technologien

Hallo dannoe,

Du bist super, danke Dir nun funktioniert es

Gruss Lhyn

Thema: Wieso wird bei meiner WebAPI mit .NET 5 mein Controller nie aufgerufen?
Am im Forum: Web-Technologien

Hallo dannoe,

Nein, der sollte calculate heissen, da der Controller "CalculateController" heisst.

Ich habe schon so einiges probiert: https wie auch http
Dann nur über http://localhost:5000/calculate, da ich Task<IActionResult> Get() geschrieben habe.

Zum Schluss noch http://localhost:5000/calculate/getproject wie im Code gezeigt "[HttpGet("GetProject")]"

Gruss Lhyn

Thema: Wieso wird bei meiner WebAPI mit .NET 5 mein Controller nie aufgerufen?
Am im Forum: Web-Technologien

Hallo zusammen,

Ich versuche mich gerade an einer kleinen web-api und finde den Fehler nicht...
Alle Abfragen mit Postman geben kein JSON zurück 8o

Über den Debugger habe ich festgestellt, dass der HttpGet Request (via Postman) des CalculateController nie aufgerufen wird, mir gehen langsam die Ideen aus.

Startup.cs



namespace DPCalculator.Api
{
    public class Startup
    {
        public Startup(IConfiguration configuration)
        {
            Configuration = configuration;
        }

        public IConfiguration Configuration { get; }

        public void ConfigureServices(IServiceCollection services)
        {
            services.AddControllers();
            services.AddScoped<ICalculateService, CalculateService>();
        }

        public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
        {
            if (env.IsDevelopment())
            {
                app.UseDeveloperExceptionPage();
            }

            app.UseHttpsRedirection();

            app.UseRouting();

            app.UseAuthorization();

            app.UseEndpoints(endpoints =>
            {
                endpoints.MapControllers();
            });
        }
    }
}


Models:


namespace DPCalculator.Api.Models
{
    public class Project
    {
        public PlcType PlcType { get; set; } = PlcType.Test1;
        public int NumberOfSelectedStations { get; set; }
    }
}

namespace DPCalculator.Api.Models
{
    public enum PlcType
    {
        Test1,
        Test2,
        Test3
    }
}

Services:


namespace DPCalculator.Api.Services.CalculateService
{
    public class CalculateService : ICalculateService
    {
        private Project _project = new Project();
        public async Task<Project> GetProject()
        {
            return _project;
        }
    }
}

namespace DPCalculator.Api.Services.CalculateService
{
    public interface ICalculateService
    {
        Task<Project> GetProject();
    }
}

Controllers:


namespace DPCalculator.Api.Controllers
{
    [ApiController]
    [Route("controller")]
    public class CalculateController : ControllerBase
    {
        private readonly ICalculateService _calculateService;
        public CalculateController(ICalculateService calculateService)
        {
            _calculateService = calculateService;
        }

        [HttpGet("GetProject")]
        public async Task<IActionResult> Get()
        {
            return Ok(await _calculateService.GetProject());
        }

    }
}

Thema: Applikation startet nicht aufgrund von Excel-Einbindung
Am im Forum: Office-Technologien

Hallo shazam,

Du arbeitest anscheinend mit Microsoft.Office.Interop.Excel was ein installiertes Excel benötigt.
Ist dieses auch wirklich installiert und lässt sich auf dem "Problem-PC" starten?

Als alternative kann ich Dir OpenXml empfehlen, damit kannst du viel performanter und ohne installiertes Excel eine xlsx Datei erzeugen.


    using DocumentFormat.OpenXml;
    using DocumentFormat.OpenXml.Packaging;
    using DocumentFormat.OpenXml.Spreadsheet;

Gruss Lhyn

Thema: Erstellung einer "Tabelle" mit Pakettarifinformationen für Abfrage
Am im Forum: Grundlagen von C#

Hallo echdeneth,

Du könntest die Preise/Zonen auch über eine mathematische Funktion beschreiben und dann runden

Gruss Lhyn

Thema: Binding template für Listen
Am im Forum: Rund um die Programmierung

Hallo MrSparkle,

Ich danke Dir für die Antwort, habe das schon fast vermutet.

Prinzipiell geht es darum, dass ich über meine Applikation einige Schritte in der "Lieferanten-Entwicklungsumgebung" automatisiert habe und nun erweitere.
Dies funktioniert mittels CSV-Import und Export.

Favorit: Favorites.L01 Lftg Turnhalle.Zone 1.Luftklappen.MPBus_VAV.MPBus_VAV_ZUL.FlowSetpoint
Technologie: MP-Bus.L01 Lftg Turnhalle.Linie2.Zone 1.MPBus_VAV_ZUL.FlowSetpoint

Nun soll im ModelFavorite die Property "LinkTarget" mit dem Link der Technologie verbunden werden. -> den oberen Link der Technologie als string

Das wollte ich über ein Link-Pattern (Binding-Template) lösen
Z.B. über eine Eingabemaske mit zwei Feldern nebeneinander, wie im Startbeitrag beschrieben.
-> der Favorit ist sehr ähnlich wie die Technologie
-> die Struktur des Favoriten wie auch der Technologie wie oben beschrieben ist nicht in Stein gemeisselt und kann zum einfacheren matchen auch angepasst werden.

Ich habe die Favoriten als List<ModelFavorite> sowie auch die Technologie als Liste

Hoffentlich ist es nun klarer, ist nicht ganz einfach das zu erklären.

Gruss Lhyn

Thema: Binding template für Listen
Am im Forum: Rund um die Programmierung

Hallo zusammen,

Gerne möchte ich mir eine Art Binding-Template für Listen erstellen.
Dabei geht es darum, dass wir in unserer Lieferanten-Entwicklungsumgebung mit vielen Technologien arbeiten und diese dann auf eine Art "Favorit" verbunden werden.

Technologie A (List<MeinObjekt> techAmeinObjekt) wird verbunden mit einem Favoriten (List<MeinObjekt> meinObjekt)
Technologie B (List<MeinObjekt> techBmeinObjekt) wird verbunden mit einem Favoriten (List<MeinObjekt> meinObjekt)

Dabei sind die Technologie A bzw. B namentlich sehr ähnlich aufgebaut wie der dazugehörige Favorit.

Nun stelle ich mir das so vor:
- Eingabemaske in der Applikation oder eine Liste, welche importiert werden kann.

Feld 1 (Objekt Quelle) <--------> Feld 2 (Binding Favorit)
{ANL}/*/*/Anlage.{Obj} <--------> {ANL}/{Obj}
... <--------> ...
... <--------> ...
... <--------> ...
... <--------> ...
... <--------> ...

Sollten diese übereinstimmen, wird im Favoritenobjekt die Property "Link" auf die Quelle verbunden (string)
Dazu ist zu sagen, dass es tausende Links sind die gemacht werden sollen.

Mir geht es darum, wie ich das konzeptionell umsetzen kann oder was es für Möglichkeiten gibt.
Wäre vermutlich auch eine typische Regex-Lösung denkbar, wobei ich das mir und den internen Usern nicht wirklich zutraue.

Ich danke Euch für die Denkanstösse.

Freundliche Grüsse

Lhyn

Thema: Automatisierung von Abläufen bei der Modellbahn
Am im Forum: Grundlagen von C#

Hallo JoachimW,

Wie Du ja schreibst, sollen Abläufe automatisiert werden.

Warum gehst Du nicht den Weg über eine PLC (SPS) die Deine Probleme abdecken kann und auch dafür gedacht ist.

Auf dem Markt gibt es haufenweise Geräte, welche Visualisierung, Zeitschaltprogramme, Trends, Alarme etc. abdecken.
Diese bieten auch Schnittstellen aller gängigen Bus-Technologien an oder nimm ein DMX-Gateway.

Gruss Lhyn

Thema: Copy to Clipboard auslesen
Am im Forum: Grundlagen von C#

Hallo zusammen,

Ich habe eine Software von unserem Lieferanten womit ich fast täglich arbeite.
Bei dieser Applikation ist es möglich, diese 2x zu starten und dann Content von der einen in die andere zu kopieren. Copy to clipboard.

Gerne würde ich den Content aber auch in meine, sagen wir mal Erweiterung kopieren, damit ich zusätzliche Properties zur Verfügung stellen kann.
-> Ich kann den Content auch als CSV exportieren, was aber eher umständlich ist. (so ist es momentan gelöst)

Das Programm ist mit C++ geschrieben.

Gibt es eine Möglichkeit diese Cliboard-Inhalte in meine Datenstruktur zu packen?
-> muss dazu sagen, dass mit einem kleinen Clipboard-Tool nichts in Klartext enthalten ist.


Freundliche Grüsse

Lhyn

Thema: Performant in einer Excel Tabelle suchen
Am im Forum: Office-Technologien

Hallo aloneboy,

Du bist dem Ziel auch nicht so weit entfernt.

1. Im Excel die Range markieren und speichern (Wie Du es schon richtig machst)
-> Das geht super schnell, fast das einzige mit Interop
2. Die Excel-Range in eine z.B. List<string> packen
3. mit Linq nach den gesuchten Einträgen suchen

Wie Abt schreibt ist OpenXML ist die schönste Lösung aber nicht die einfachste...

Gruss Lhyn

Thema: Zwei verschiedene Tabellen Zusammenführen
Am im Forum: Datentechnologien

Hallo deluxe13,

List<T>.AddRange

Gruss Lhyn

Thema: OLEdBDataReader bringt den Speicher an seine Grenzen
Am im Forum: Datentechnologien

Hallo zusammen,

Mit einem 32 bit System lassen sich 2^32, also ungefähr 4GB Arbeitsspeicher adressieren.
Verwundert also nur wenig, wird der Prozess abgewürgt...

Gruss Lhyn

Thema: DataGrid - ohne manuelle Eingabemöglichkeit?
Am im Forum: GUI: WPF und XAML

Hallo GeneVorph,

Dir fehlen alle Bindings...musst ja auch an Dein ViewModel binden
-> Und demzufolge auch die Logik (z.B. ViewModel) und die dazu nötigen Methoden wie "AddMyNewUser"

Im Anhang mal ein MVVM-Beispielprojekt welches ich gut finde und auch mit ObservableCollection<> arbeitet.
-> Ist zwar mit ListView gelöst, kannst aber relativ einfach in Dein DataGrid, DataGridView ändern (View austauschen)

Gruss Lhyn

Thema: Kann man eine CSV-Datei beim Serialisieren validieren?
Am im Forum: Datentechnologien

Hallo MrSparkle,

Erstmal gratuliere zum 5000sten Beitrag heute

Aus der Softwareumgebung heisst es CSV-Export...
-> Habe mich da mal schlau gemacht und hast natürlich recht, ist gem. Definition keine CSV-Datei

Angenommen ich lese das File wiefolgt ein:


IEnumerable<string[]> lines = File.ReadLines(path).Where(x => x.Contains("$") != true).Select(x => x.Split(delimiter.ToCharArray()));

Wobei man die Where-Clausel auch entfernen kann.

Wie geht man am besten eine Validierung an?
Zählt man einfach die Elemente je "line" oder geht man auch auf die Header etc. ein?

Da ist Spaghetticode vorprogrammiert 8) (mindestens bei mir)

Gruss Lhyn

Thema: Kann man eine CSV-Datei beim Serialisieren validieren?
Am im Forum: Datentechnologien

Hallo zusammen,

Folgende CSV-Strukur:



$target: Klasse1		
$ID,Name,Surname
0x10f4,Max,Muster
0x10f5,Florin,Städler
		
$target: Klasse2		
0x001b,Selina,Marsupilami
0x0001,Sepp,Fässler
		
$target: Klasse3		
0x10f2,Corina,Ortega


Gibt es eine Möglichkeit diese CSV-Datei auf Richtigkeit zu prüfen? (validieren)
Dabei geht es mir um die Header ($ID, Name, Surname)
-> In der Vergangenheit ist es immer mal wieder vorgekommen, dass dann einfach eine Spalte mehr enthalten war, wobei ich dann die Schüler-Objekte falsch befüllt habe...

Gruss Lhyn

Thema: XML Elemente auslesen und weiterverarbeiten
Am im Forum: Grundlagen von C#

Hallo c#atriga,

Nei, Du musst nicht weitersuchen...

Das was LaTino in seinem letzten Post schreibt ist doch schon ein Tutorial
-> versuch das mal umzusetzen, sollten Fragen auftauchen dann frag einfach

Edit:
Für das Einlesen deines XML-Files (Deserialisieren) ist im zweiten Post von LaTino auch schon alles beschrieben, dabei einfach mit dem "Tutorial" starten, da dein generiertes XML welches Dir erstellt wird viel einfacher ist.

Gruss Lhyn

Thema: Mehrdimensionale Arrays mit verschiedenen Dimensionen
Am im Forum: Grundlagen von C#

Wieder etwas dazugelernt

Danke und Gruss Lhyn

Thema: Mehrdimensionale Arrays mit verschiedenen Dimensionen
Am im Forum: Grundlagen von C#

Hallo LaTino,

Dachte in File.ReadLines ist IDisposable implementiert...

Aber dann sollte es doch mindesten in einen:



try
{}
catch()
{}


integriert werden?

Kann ja sein, dass es dieses File nicht gibt oder schon geöffnet ist etc?
-> Oder fängt mir linq diese Probleme ab?
Kann es auch gleich selbst ausprobieren...

Gruss Lhyn

Thema: Mehrdimensionale Arrays mit verschiedenen Dimensionen
Am im Forum: Grundlagen von C#

Hallo zusammen,

Sind den bei linq-Abfragen in Verbindung mit Dateizugriff die "using(...)" nicht nötig?
Habe hier im Forum mal gelernt, dass ich diese immer in ein using packen soll

Gruss Lhyn

Thema: Mehrdimensionale Arrays mit verschiedenen Dimensionen
Am im Forum: Grundlagen von C#

Hallo ck82,

Wie Abt schon schreibt, ist es mit einer Liste bestimmt einfacher.

Kann z.B. so aussehen:



        public List<ModelCSV> ReadCSV(string path, string delimiter)
        {

            using (StreamReader reader = new StreamReader(path))
            {

                var arrCSV = from line in ReadFile(reader, delimiter)
                               select new ModelCSV
                               {
                                   Column1 = line[0],
                                   Column2 = line[1],
                                   Column3 = line[2],
                                   Column4 = line[3]
                                };

                return arrCSV.ToList();
            }

        }

        private IEnumerable<string[]> ReadFile(StreamReader reader, string delimiter)
        {
            while (reader.EndOfStream == false)
            {
                yield return reader.ReadLine().Split(delimiter.ToCharArray());
            }
        }


Dann machst Du Dir noch eine Klasse "ModelCSV" mit den Eigenschaften die Du benötigst und fertig.
-> Denke mal die CSV-Datei hat immer die selbe Struktur....kann also einfach in einer Klasse "ModelCSV" abgebildet werden

Edit benötigte Usings:
using System.Collections.Generic;
using System.Linq;
using System.IO;

Gruss Lhyn

Thema: In Array den höchsten Wert unter 10er Blöcken ermitteln.
Am im Forum: Grundlagen von C#

Hallo KuGBeginner,

Da gibt es doch so einige Möglichkeiten

1.
Das Ganze nicht mit array lösen sondern mit List<T>, welches dann Remove, RemoveAt oder RemoveRange zur Verfügung stellt.
Dann kannst Du die Listen auch sortieren und und und und...

2.
Mit LINQ arbeiten -> findest Du bestimmt haufenweise Treffer im Netz

3.
Funktion schreiben mit Maximalwertrückgabe
Dabei musst Du Dein Array und einen Startindex sowie z.B. Endindex übergeben...
Findest bestimmt selbst heraus wie das zu programmieren ist.

4.
Zwei Array mit der Grösse 10 erstellen (Index 0-9)
Durch Dein Array iterieren mit z.B. einer for schleife
Erstes Array[0-9] mit Deinem Array von [0-9] füllen
Zweites Array[0-9] mit Deinem Array von [10-19] füllen
auf dem Ersten und zweiten array den Maximalwert ermitteln

Als Gedankenstütze...

Zeig doch mal was Du schon hast


Gruss Lhyn

Thema: Vergleich von zwei Excel Spalten
Am im Forum: Office-Technologien

Hallo Marccore,

Versuch mal sowas, sollte es doch mit C# gelöst werden:



        public List<ModelCSV> ReadCSV(string path, string delimiter)
        {

            using (StreamReader reader = new StreamReader(path))
            {

                var arrCSV = from line in ReadFile(reader, delimiter)
                               where line[0].IndexOf("!") != 0   //Damit kann z.B. die erste Spalte mit den Headern gefiltert werden...
                               select new ModelCSV
                               {
                                   Column1 = line[0],
                                   Column2 = line[1],
                                   Column3 = line[2],
                                   Column4 = line[3]
                                };

                return arrCSV.ToList();
            }

        }

        private IEnumerable<string[]> ReadFile(StreamReader reader, string delimiter)
        {
            while (reader.EndOfStream == false)
            {
                yield return reader.ReadLine().Split(delimiter.ToCharArray());
            }
        }

Der Methode kannst Du dann den Pfad Deiner Datei und den delimiter (richtigerweise "Komma", habe aber auch schon "Semikolon"; etc. gesehen)

1. Beiden CSV-Listen einlesen
2. Die eine Liste in ein Dictionary packen mit Schlüsselwort von Liste...dabei dürfen diese nicht mehrmals enthalten sein
3. Durch die Liste Iterieren und mit dem Dictionary vergleichen -> 3. Liste erstellen
4. Ausgeben, wieder als CSV Serialisieren

Gruss Lhyn

Thema: Wie ändere ich den Inhalt einer Zelle in einer WPF Tabelle im FlowDocument?
Am im Forum: GUI: WPF und XAML

Hallo TigerCrow,

Zitat
Und Nein ... möchte kein Gridview oder Databindings oder ähnliches!!!
Einfach nur Zelleninhalt ändern

Was spricht dagegen?
Du erleichterst Dir damit einfach alles....

Musste anfangs auch stolpern, glaub es einfach

Gruss Lhyn

Thema: Control mit Excel / Access funktionalitäten
Am im Forum: GUI: WPF und XAML

Hallo Maxxx7,

Ich habe hier im Forum mal eine ähnliche Frage gestellt:
Gibt es ein DataGrid das funktioniert wie Excel?

Wie auch:
hier im Forum


Gruss Lhyn

Thema: DALI/DSI Interface RS232 Ansteuerung mit C#
Am im Forum: Rund um die Programmierung

Hallo stas,

Erstmal vorweg...ich habe mir das Datenblatt des Gateways nicht angesehen.

Auf einer DALI-Linie können 64 Geräte adressiert werden, welche dann wiederum gruppiert werden.

Also muss das Vorschaltgeräte adressiert sein und über das Gateway auch bestimmt DIESE Adresse angesprochen werden.

Aber mal im Ernst...PC=>C#=>USB/RS232=>Kabellänge=>Gateway=>DALI=>EVG

Besorg Dir ein ordentliches Gateway (z.B. mit BACnet/IP oder Modbus/IP) und kümmere Dich um die Umsetzung der Dimm-Rampe bzw. Konstantlichtregelung oder was Du da vor hast.
-> Zur Klarstellung, TRIDONIC hat sehr gute Produkte!

Btw. ist Dein Vorhaben mit einer SPS einfacher zu realisieren als mit PC und C#, zumal Du in C# noch nicht so bewandert bist.

Gruss Lhyn

Thema: Mit Regex nach Sonderzeichen suchen und abschneiden
Am im Forum: Basistechnologien und allgemeine .NET-Klassen

Hallo T-Virus,

Fälschlicherweise habe ich im erste Post string.trim() geschrieben, wie Du richtig schreibst ist es momentan via string.split() gelöst.

Das ist richtig, es handelt sich nicht um Dateipfade sonder um eine Gebäudestruktur...ein Beispiel dazu:

Register.Gebäude 01.SGK01 Schaltschrank.Einstellungen.Trend_AN

Dabei möchte ich "Register.Gebäude 01." abschneiden...
-> Die ersten beiden Strukturen sind immer vorhanden, haben einfach nicht immer die selbe Bezeichnung.
-> Der delimiter ist also auch kein "/" sondern ein "."

Momentane Lösung:
-> Wobei ich dann einfach die ersten zwei strings nicht benutze und wieder Punkte einfüge



        private string[] SplitWithDelimiter(string str, string delimiter)
        {
            return str.Split(delimiter.ToCharArray());
        }


Wollte mich daran mit Regex versuchen und bin gescheitert

Gruss lhyn

Thema: Mit Regex nach Sonderzeichen suchen und abschneiden
Am im Forum: Basistechnologien und allgemeine .NET-Klassen

Hallo zusammen,

Das ist richtig und mir auch bewusst...jedoch ist jeder Anfang schwer

@T-Virus
Ich habe die Ordnerstruktur nur als Beispiel gewählt, weshalb DirectoryInfo nicht möglich ist.

Gruss Lhyn

Thema: Ist im LINW eine Where.Count == number ->Select->ToList in einer Query überhaupt möglich?
Am im Forum: Grundlagen von C#

Hallo gfoidl,

Ich habe mich nochmals daran versucht, nun funktioniert es soweit


_newList = testList.Where(w => w.TestProperty.Count(c => c == '/') == 5).ToList();

Danke Dir

Gruss Lhyn