Wenn du das Buch vom Rheinwerk-Verlag meinst:
Ich denke, er meint "Einstieg in Visual C#" auch von Rheinwerk. (siehe 3. Post von Disko)
Die Versionen dieses Buches, die ich in den Händen hielt, haben nur auf WinForms gesetzt.
@Disko: Schau dir wirklich mal "Visual C# - Das umfassende Handbuch" von Rheinwerk an.
Das beschäftigt sich viel tiefergehender mit den grundlegenden Themen (hat aber leider keine Übungen etc. und ist viel theoretischer).
Hallo pata1990,
verstehe ich das richtig, dass du uns nach einem Algorithmus fragst?
Dann verweise ich auf die Stichwörter: Sortieren, Bubble-Sort
Hallo pata1990,
kannst du bitte deine Anforderung, dein Ist- und dein Soll-Stand etwas ausführlicher beschreiben, als in diesem einen verknoteten Satz?!
Eine List of string ist doch schon ein IEnumerable.
VG Ezio
Hallo gokho87,
um dir helfen zu können, musst du etwas präziser dein Problem beschreiben.
ich möchte an der StripMenu ein Menüpunkt "Laden" erstellen und durch klicken dadrauf soll eine openFileDialog öffnen, um eine xml-datei zu laden können.
Du hast ja schon die Hauptpunkte deiner Aufgabe analysiert.
Jetzt brauchst du uns nur noch zu sagen, bis wohin du gekommen bist bzw. wo du nicht weiterkommst.
Zusätzlich solltest du uns auch sagen, was dein konkretes Problem an der Stelle ist.
Eventuell ein bisschen relevanter Code dazu.
Und vorsorglich: Was du sicher hier nicht bekommen wirst, ist ein Stück Code! (siehe [Hinweis] Wie poste ich richtig? 4. und 4.2)
VG Ezio
** roll.pruefePasswort(passwort) = false;**
Die Zeile macht keinen Sinn, wie LaTino beschrieben hat.
Was ist eigentlich das Ziel für diese Zeile?
Hallo Maggie123.
[...]ich arbeite noch nicht lange mit C#[...]
Ich hoffe du nimmst mir meine Gegenfrage nicht übel:
Meinst du wirklich Klassen oder meinst du Instanzen (einer Klasse) bzw. Objekte?
Vielleicht macht es auch Sinn, wenn du dein zugrunde liegendes Problem beschreibst, weshalb du meinst mehrere Klassen zur Laufzeit zu erstellen.
Es könnte auch eine Option sein mit Generics zu arbeiten (openbook: Visual C# Generische Datentypen).
VG Ezio
Hallo nullbytes,
1.) schau dir wirklich nochmal [Artikelserie] SQL: Parameter von Befehlen an.
Besonders "Problem: Wie verhindere ich SQL-Injection" und das direkt angeschlossene Kapitel "Lösungsweg".
Dann weißt du auch, warum es hier den Profis die Fußnägel kräußelt.
2.) zu deiner 2. Lösung: Wenn du nur ein Return hast und dieses "0" zurückgibt, warum solltest du einen anderen Wert als "0" erwarten können? 😉
... und wie fügst du die Zeilen ein?
Wenn jede Zeile einen Datensatz repräsentiert, also hinter dem dynamischen Grid eine ObservableCollection steht, kannst du einfach das jeweilige Objekt aus der Liste löschen.
Du bist mit Array-Länge und größtem Index durcheinander gekommen:
array.MaxIndex == array.Length - 1
@Fzelle: Die Antwort ist Quatsch mit Soße -
Auch wenn ich verstehen kann, dass die Antwort von FZelle nicht deine Frage direkt trifft, so ist aber deine Reaktion unangemessen.
FZelle hat recht, wenn er dir sagen will, dass die Denkweise für WinForms und WPF/MVVM komplett unterschiedlich sind.
Erfahrungen in WinForms sind oft sogar hinderlich, wenn man sich in WPF/MVVM reindenken muss.
Und ob man nun WinForms oder WPF bevorzugt ist neben Anforderung des Chefs oder der Kunden und dem Wissen dass WinForms immer mehr als veraltet gilt einfach auch Geschmackssache.
Über letzteres zu Diskutieren führt am Ziel vorbei.
-Edit: Eindeutigkeit des ersten Satzes angepasst.
Hallo mpeter,
du baust eine WinForms-Anwendung und nutzt das Standard WinForms chart-Control?
In dem Falle wäre die Series aus dem falschen Namespace.
Die müsste aus System.Windows.Forms.DataVisualization.Charting kommen.
An deiner Stelle würde ich das VS auf Englisch stellen, damit du die englischen Fehler bekommst. Da findet sich mehr und du brauchst nicht übersetzen.
Ezio
Ein VM existiert somit, jedoch nicht auf die Art und Weise, dass es für WPF optimiert ist (ICommand).
Da liegt ja dann der Hase im Pfeffer begraben.
Die Möglichkeit einiges erst zur Laufzeit zu testen schreckt mich manchmal ab.
Also, soweit meine Erfahrung geht, machst du dann was grundlegend falsch.
MVVM erzwingt ja eine ordentliche Trennung UI <-> BL+DAL, gerade damit man gut testen (UnitTests) kann.
Oder reden wir an einander vorbei?
@p!lle: Nö, ich habe mich nur blöd bzw. ungenau ausgedrückt.
Hallo Austrianman,
probiere mal, ob es evtl. am Screenshot liegt.
Also einfach mal die PrntScr- bzw. Druck-Taste benutzen.
Screenshots sind meist recht schlecht aufgelöst.
Wenn es wirklich daran liegt, wäre eine Idee eben keinen Screenshot zu drucken, sondern die Daten direkt.
Übliche Vorgehensweise wäre die Abhängigkeit in Code umzusetzen.
Beispielhaft:if (aktiv) { Button1.Enabled= true; Button2.Enabled= true; } else { Button1.Enabled = false; }
Ja, aber nicht so.
Nutze MVVM resp. CommandBinding.
Dann hast du RelayCommands, die als 1. Parameter ein Delegat für die Funktion, die Hinter dem Button steckt, und als 2. Parameter ein Delegat besitzen, der Überprüft, ob der Button aktiviert sein darf.
VG Ezio
Hallo Gogeta,
du versuchst eine Umwandlung .pdf -> byte[] -> .jpg/.png/... ?
Wenn ja, dann bist du auf dem falschen Weg.
Denn: Ja, Bilder und PDF-Dokumente sind komplett was anderes.
Grob erklärt:
Bei Bildern speicherst du, auf welchem Pixel welcher Farbwert liegt.
Bei PDF speicherst du Elemente (Schrift, Formen, Bilder, ...) und deren Eigenschaften (Größe, Position, Farbe, ...).
Ist es wichtig, dass du über einen Byte-Array gehst, oder war das nur eine Lösungs-Idee?
EDIT: Lies mal MSDN: how to open a page from a pdf file in picturebox in c#.
Das sollte dein Thema treffen und war in 10 sec googeln gefunden.
Hallo LaIgeriano,
zu 3. könnte dich [Artikel] Strings verketten: Performance-Betrachtung interessieren.
zu 5. zu dem, was DerKleineTomy geschrieben hat:
"null" bedeutet, dass deine Variable auf keinen Speicherbereich verweist und somit gar keinen Wert haben kann.
"" bzw. string.Emty bedeutet dagegen, dass die Variable auf einen Speicherbereich verweist, der eine leere Zeichenkette bzw. eine Zeichenkette der Länge 0 enthält.
Ist genauso ein Wert wie bei int die Zahl 0.
[FAQ] Besonderheiten der String-Klasse (immutabler Referenztyp mit Wertsemantik) Könnte dich dazu interessieren.
Kurz zur Richtigstellung "Einstieg in Visual C# 2013" ist NICHT der Nachfolger von "Visual C# 2012 Das umfassende Handbuch".
Ja, es ist für unterschiedliche Studio Versionen, aber die Entwicklungen sollten einem Anfänger nicht interessieren.
Das erste Buch ist ein Einsteigerbuch mit vielen Übungsaufgaben. Das zweite Buch ist dann für den deep dive.
Am Anfang muss man einen Tot sterben: *Konsole ist "nicht schön",
*wenn man mit WinForms lernt, bekommt man eine immer mehr veraltende Technik gezeigt, wobei die Bücher einem nicht die Trennung von Oberfläche und Logik zeigen, ist aber dafür einfach
*WPF ist gut und mächtig, sollte aber nur in Verbindung mit MVVM erlernt werden, große Einsteigerhürde.
Da du das Einsteiger-Buch hast, brauchst du es nicht in die Ecke werfen. Nimm es und lern.
Merke dir aber, dass du, wenn du mit dem Buch durch bist, keinen guten Umgang mit WinForms gelernt hast.
So wie die das zeigen reicht das für einen blutigen Anfänger, würde man aber später niemals machen.
Weiterhin solltest du dann "Das umfassende Handbuch" einmal von vorn bis hinten durcharbeiten.
Wenn du das alles kannst, bist du schonmal gut gerüstet.
Also egal mit welcher Oberflächen-Technologie du arbeitest, die Sprache ändert sich nicht.
Aber die Art und Weise, wie du mit dem Nutzer kommunizierst ist total unterschiedlich.
Eine textbasierte Konsolen-Applikation funktioniert ganz anders als eine grafische Oberfläche.
Aber jede grafische Oberflächen-Technologie erfordert auch einen unterschiedlichen Umgang.
Ich weiß jetzt nicht, wie viel C# man können muss, um überhaupt mit Unity was machen zu können, aber IMO sollte man gleich die Sprache richtig lernen.
Und wenn man dann die Sprache beherrscht, ist es auch egal welche konkrete Oberfläche man einsetzt, da man das Sprachwissen besitzt und sich nur noch in die Oberflächen-Technologie einarbeit muss.
(Und falls du Unity mit dem Buch von Carsten Seifert lernst, ist dort ein Crash-Kurs drinnen. Da aber das Buch dünner ist, als eine gutes C#-Handbuch, wird es auch nur ein sehr beschränktes Sprachwissen vermitteln können.)
Ob du nun mit Konsole oder WinForms anfängst, ist Geschmackssache und es gibt Für und Wider.
Ich würde aber erst auf Konsole anfangen und dann später WPF (mit MVVM) nehmen und WinForms tot in der Ecke liegen lassen.
Zusammengefasst ist der Sinn von .Value, dass du bei direkter Verwendung der Variable deren Typ (also T?) hast. Möchtest du aber den "eigentlichen" Werttyp (also T) verwenden, musst du .Value aufrufen.
int? myNullable = 3;
int myInt = myNullable; //Fehler!
int myInt2 = myNullable.Value; //OK, falls != null. Sonst Exception.
int myInt3;
if(myNullable.HasValue)
{
myInt3 = myNullable.Value;
}
Aber das könnte man alles in der Doku usw. nachlesen.
Hallo Andreas,
danke für deine Mühen.
Dein C# Button finde ich super!
Die beiden anderen ... ich verstehe was du meinst, sehe aber keinen Mehrwert (höheren Erkennungsgrad).
Hallo LaTino,
wenn man einmal den Hilfeknopf als "Link zu allen möglichen Formatierungsbefehlen" wahrgenommen hat, braucht man die ganzen Buttons doch garnicht!?!
IMHO kann der Editor bleiben wir er ist, da die einen den Editor bedienen können/wollen und die anderen die Tags nutzen. (und die ganz anderen lassen die Admins ihre Posts designen 😁 )
Hallo in die Runde,
mein Hauptkritipunkt an dem Hilfeknöpfchen (der Grund warum ich lange nicht darauf geklickt habe!) ist, dass er so wirkt, als ob es die Hilfe zu der Optionenzeile <Font> <Size> <Color> wäre - und dafür brauche ich nun wirklich keine Hilfe 😉 .
Mein Vorschlag wäre deshalb eine Zeile "Liste aller Code-Tags" zwischen der Editormodus-Wahl und der FAQ-Link-Zeile oder über der rechten Spalte (aktuelle / alle tags schließen) einzufügen.
VG Ezio
Hallo LaTino,
das mit dem deutlicheren Hinweis sehe ich auch so.
CSHARP und CODE gibt es schon als Buttons.
Ich bin der Meinung außer die Überarbeitung des Hilfe-Knopfes ist keine Überarbeitung notwendig.
VG Ezio
Nö, ein wenig vergurkt, aber man kann es verstehen. 😉
Im Prinzip wie der Windows Rechner, nur halt mit den einfachsten Rechenarten.
Im Prinzip ist das aber NICHT so wie der Windows Rechner (zumindest ab Win7).
Dieser führt auch nur Berechnungen von 2 Operatoren aus, solange man nicht mit Klammern oder anderen komplexen Operatoren arbeitet.
Gerade wenn es um simple Operatoren geht, bildet der Rechner zuerst aus den ersten beiden Eingaben das Zwischenergebnis und bildet aus diesem Zwischenergebnis und der nächsten Eingabe das Zwischenergebnis usw.
Angezeigt wird dann oben z.B. 1+2+3+4 aber im Eingabefeld steht immer das aktuelle Zwischenergebnis (also 3 bei 1+2) solange du keine Eingabe für den nächsten Operator getätigt hast.
Wenn du aber alles "in einem Rutsch" berechnen möchtest, wäre der Ansatz von hummingbird1 zu benutzen.
Ezio
Hallo Lalgeriano,
ich möchte dir noch mit auf den Weg geben, das OpenBook Visual C# parallel zu lesen oder zumindest als Nachschlagwerk zu nutzen.
Da gibt es z.B. eine schöne Tabelle der einfachen Datentypen.
VG Ezio
Auch wenn ich dir leider bei DirectX nicht helfen kann, ein kleiner Hinweis.
Ich denke, dass es den wissenden Helfern helfen kann, wenn du konkrete Fragen stellst. (Siehe auch [Hinweis] Wie poste ich richtig? Punkt 5) 😉
Edit: Hinweis No. 2: Verwende usings um gezielt Objekte zu erstellen und zu zerstören.
Auch wenn es im ersten Moment müsig erscheint und dir auch nicht direkt bei deinem Problem hilft*, ist für mich "binden" was anderes.
Du übergibst aktiv die Daten deinem GridView.
Würdest du "binden", würde dein GridView die Datenquelle, also die Property einer anderen Klasse kennen. Wenn diese sich ändert, holt sich das GridView die Daten.
Insgesamt sieht mir das nach einem nicht optimalen Design aus (Mischung von Präsentation und DAL). Siehe dazu [Artikel] Drei-Schichten-Architektur
Und schau dir mal MVVM an.
EDIT *: Es bietet keine Antwort auf deine direkte Frage, würde dir aber bei deinem Problem helfen ... .
Hallo schuppsl,
VG Ezio
Aufgrund der häufigen Verweise auf diesen Artikel möchte ich noch anmerken, dass das openbook: Visual C# vom Rheinwerk-Verlag dieses Thema auch behandelt.
Kapitel 7: Fehlerbehandlung und Debugging beinhaltet Kapitel 7.3: Fehlersuche mit Visual Studio [...].
Vielleicht hilft dem einen oder anderen die andere Art der Formulierung weiter.
VG Ezio
Du weißt doch noch garnicht wo wirklich dein Fehler liegt! - oder erzählst du uns nur die Hälfte?!
Oder kannst du sagen, WARUM du NULL bekommst?
denn es funktionierte ja mal
Kannst du vielleicht dann auch verraten, was du geändert hast oder anders machst?
Nur "Wie mach ich das? Wie löse ich mein Problem?" ist eine so allgemeine Frage, dass hier im Forum dir nur mit [Hinweis] Wie poste ich richtig? geantwortet werden kann.
Deine Aufgabe ist es ein konkretes Problem fest zu stellen und dann hier - falls du nicht weiter kommst - konkret eine Frage zu stellen.
"Mein Auto ist kaputt, mach mal ganz!" kannst du in der Autowerkstatt bringen. Nur wenn du selbst der Automachaniker bist, kommt das blöd ... . 😉
Hallo IxF,
hast du schon den Debugger angeschmissen?
Ich denke, da sollte dir klarer werden wo es hängt.
[Artikel] Debugger: Wie verwende ich den von Visual Studio?
Die Fehlermeldung sagt doch schon, was du tun musst.
Oder wo liegt jetzt das Problem?
MSDN: How to: Add and Remove References in Visual Studio
Hallo gh0st93,
Klar, dass dies nichts mit mvvm zutun hat. Wie schon gesagt hatte ich nur Probleme in der Liste die Daten auf der DB anzugeben.
[...]
Wie gesagt ich pack alles wirst in den code-behind verzichte für s erste auf das pattern schau mir noch einige Grundlagen tut's an und eigne mir das mvvm zu einem späteren Zeitpunkt ein.
Das ist irgendwie sehr wiedersprüchlich.
An sich warst du am Anfang dieses Themas ja schon in die richtige Richtung unterwegs.
Bezüglich Listen: Schaue dir mal OpenBook C# Kapitel 9 mit Schwerpunkt Kapitel 9.9 an.
Zusätzlich ist für dich auch der Listentyp ObservableCollection<T> wichtig.
Sieh dir zu beidem bitte auch unbedingt die MSDN-Seiten an.
So, nun konkreter.
In deinem VM hast du eine ObservableCollection<PersonModel>.
(Auf diese bindest du in der View.)
Diese füllst du im Konstruktor oder in einem Command mit Hilfe einer Repository-Klasse.
Diese Klasse ist die eigentliche Verbindung zur DB.
Man könnte ihr im Konstruktor alle wichtigen Infos für den Verbindungsaufbau übergeben und eine Funktion Get() einrichten, die die Personen von der DB läd, eine List<PersonModel> erstellt und zurück gibt.
Dann brauchst du nur noch im VM die Liste zu einer OC machen und fertig.
Wie du siehst hat die Beschaffung der Daten nix mit dem VM zu tun.
Theoretisch könntest du dir die Daten ganz anders beschaffen.
Wenn du für das Repository ein schönes Interface baust, kannst du am Ende sogar das Repository austauschen und die Daten z.B. aus ne XML-Datei holen ohne eine Zeile Code im "MVVM-Bereich" deiner Anwendung zu ändern.
VG Ezio
Oh ja, hehe: && und || sind logisch, & und | sind bitweise.
Edit: ... und was mir gerade noch so auffällt:
Übersehe ich was oder macht die generische Methode eigentlich keinen Sinn, da du ja eh in einen UInt32 castest?!
Es kommt natürlich drauf an, wie du schreibst.
Wenn du knallhart das Byte setzen willst, geht das natürlich schief.
Wenn du es machst wie zommi es gezeigt hat, dann nicht.
Naja ein Nibblet hat ja einen dezimal Wert von 0...15.
Wenn du sicherstellst, dass der übergebene Wert in diesen Grenzen liegt, änderst du nur 1 Nibblet.
EDIT: Wertebereich angepasst. 😁
Hallo ZaHaDum1984,
wo hängt es genau?
Denn deine Hausaufgaben sind für dich da und wir machen sie dir nicht! (siehe [Hinweis] Wie poste ich richtig? Punkt 4 und 4.2)
Schau dir mal das Behälterproblem an.
Ich glaube das trifft es eher.
Kannst ja auch mal bei der IHK an deinem Standort nachfragen, ob es Richtlinien o.ä. gibt.
Wenn nicht, gibt es meines Wissens nach auch keine Normen, die sich direkt mit Präsentationen auseinandersetzen.
Natürlich gilt die DIN5008 für Texte.
Kennst du schon (Relay-)Commands? https://msdn.microsoft.com/de-de/magazine/dd419663.aspx#id0090030
Ich frage mich, ob ein Dictionary<int, ObservableCollection<myClass>> eine so günstige Lösung ist, wenn du eh nur einen bestimmten Wert brauchst.
Kanns du nicht schon beim Anlegen des Dictionary-Datensatzes bestimmen, welchen Wert du referenzeieren möchtest?
Kurz Kroax hat recht.
Lang:
Eine override-Methode stellt eine neue Implementierung eines von einer Basisklasse geerbten Members bereit. Die durch eine override-Deklaration überschriebene Methode wird als überschriebene Basismethode bezeichnet. Diese muss dieselbe Signatur wie die override-Methode aufweisen.
Die Signatur einer Methode besteht aus dem Namen der Methode sowie dem Typ und der Art (Wert, Verweis oder Ausgabe) aller ihrer formalen Parameter von links nach rechts. Die Signatur einer Methode beinhaltet ausdrücklich weder den Rückgabetyp noch den params-Modifizierer, der für den am weitesten rechts stehenden Parameter angegeben werden kann.
gfoidls Hinweis bringt mich aber zumindest zu einem Ansatz (auch wenn ich keine Garantier für Eleganz und Effizienz gebe):1. nach dem Rucksack-Prinzip alle möglicken Kombinationen suchen
Also wenn du das Buch nur wegen des Pattern kaufst und (was man ja noch nicht sagen kann) der Abschnitt nicht besser wird als im open book, dann würde ich mir mal lieber das neue Entwurfsmuster Buch von Rheinwerk ansehen.
Das sind wenigstens 14 Seiten.
@Palin: Wenn du es schon angesprochen hast: Welches Buch hast du zu MVVM?
Den fachlichen oder zeitlichen Aspekt möchte ich nicht mit rein bringen.
Das muss sich der Nutzer bei der Eingabe der Fragen überlegen 😉
Hm ... dann hoffe ich nur, dass das ein Übungsprojekt o.ä. ist.
Denn ohne Betrachtung dieser Aspekte, kann man nicht wirklich sinnvoll eine Klausur automatisch generieren.
Ich bin zwar kein Lehrer, denke aber dass das Erstellen einer Klausur etwas komplexer ist als zufällig ein paar Fragen mit unterschiedlichen Punkten zusammen zu würfeln.
Hallo gh0st93,
mehr als jetzt gesagt wurde, besagt das MVVM-Pattern auch nicht.
Es sagt im Grunde nicht: "Benutze Bindings." oder "Benutze (Relay)Commands.".
Das sind technische Details, die von Sprache und Technologie abhängig sind und gerade bei C# und WPF Sinn machen.
Patterns sind Prinzipien. D.h. es gibt nicht unbedingt DIE allgemeingültige oder beste Lösung.
Deshalb wird wahrscheinlich jeder das Pattern etwas anders umsetzen.
Dass das verwirrend und schwierig für Anfänger ist, kann ich sehr gut nachvollziehen.
MVVM ist "nur" eine Vorgehensweise deinen Code sauber, übersichtlich, wart- und testbar zu gestalten.
D.h. aber auch, dass dich niemand verpflichtet MVVM 100%ig, grundsätzlich und korrekt einzusetzen.
Es ist ja keine Norm.
Aber gerade als WPF/MVVM Anfänger sollte man die vorangehenden 2 Sätze nicht(!) berücksichtigen.
Bezüglich Fenster und MVVM scheint eine (nicht modale) Ein-Fenster-Anwendung die "beste und einfachste" Lösung zu sein.
Das heißt ja am Ende nur, dass du verschiedene Bereiche (UserControls) hast, die entsprechend an einen unterschiedlichen Datenkontext gebunden sind und per DataTemplate eine entsprechend andere View zeigen.
Ich denke dein Gedanke den Login-Teil extra zu behandel ist eine gute Idee.
Die Frage ist auch, ob du die Klausur mit homogenem Schwierigkeitsgrad erstellen willst (-> einfach).
Meine Erfahrung über die Jahre zeigt aber, dass Lehrende so nie eine Klausur erstellen.
Und wenn man nur den druchschnittlichen Schwierigkeitsgrad vorgibt, dann ist die Sache nicht mehr trivial.
Du solltest auch beachten, dass eine Aufgabe zwei Schwierigkeitsgrade hat: den fachlichen und den zeitlichen.
Wobei ersterer fest ist und der zeitliche dynamisch anpassbar.
(100 einfachste Kopfrechenaufgaben in 5 min richtig zu lösen, ist denke ich auch nicht mehr "einfach" ...)
Hallo gh0st93,
im Großen und Ganzen sieht es gut aus.
Es gibt aber Ungenauigkeiten, Problemchen und Ergänzenswertes:*Das Beispiel Login-Maske ist unglücklich gewählt, da gerade dies einen Sonderfall darstellt, der meines Wissens nach das MVVM-Pattern aus Sicherheitsgründen bricht (Passwort darf ja nicht im Klartext im RAM oder sonst wo stehen).
Anfangs finde ich es wichtig möglichst nah sich am Pattern zu halten - und wenn möglich - erstmal solche Sonderfälle, wie Passwort oder andere, die einen Bruch des Patterns zur Folge haben, weg zu lassen oder anders zu lösen.
(Geht natürlich nur in privaten und Testprojekten.)
VG Ezio
Hallo CHRRP,
wenn ich dich richtig verstanden habe, möchtest du Werte, die du in ComboBoxen festgelegt hast, an anderer Stelle weiterverwenden.
Du solltest ja auch in WinForms GUI, Daten und Logik trennen ([Artikel] Drei-Schichten-Architektur).
Deshalb solltest du (im besten Fall durch Bindung) den Datenmodellen die ausgewählten Werte zuweisen und kannst die Daten an anderer Stelle wieder rausholen und wieder anzeigen bzw. weiter verarbeiten.
Hallo BlackMatrix,
was ist dein Problem.
Das, was ich sehe, dürfte nur die Besonderheit haben, dass es eine "OneWayToSource"-Binding ist.
VG Ezio
Hallo wickedcsharper,
Angenommen ich habe eine zusammengesetze Schwingung aus mehreren Frequenzen, dann zeigt mir das FFT Diagramm also die Amplituden der Frequenzen, aus denen die Gesamtschwingung zusammen gesetzt ist ?
Jain. Bei der Fourier-Transformation geht man davon aus, dass jedes Signal aus einer Überlagerung (bis hin zu unendlich vieler) sinusförmiger Schwingungen besteht.
-> Außer den einfachen Signalen die sinus- oder cosinusförmig sind, sind alle "zusammengesetzt".
D.h. die FFT von Sinus- und Cosinussignalen ergibt die Signalamplitude an genau der Frequenz der Schwingung.
Alles andere ist dann eben etwas komplizierter. 😉
Gerade die Folge 1 0 0 ... ist ja kein kontinueriliches und periodisches Signal mit steiler Flanke.
Das ergibt dann eine unendliche Folge (die aber zur Vereinfachung abgebrochen werden kann -> ergibt dann nur je nach Abbruchstelle unterschiedlich große Ungenauigkeiten).
Somit ein recht schlechtes Anfangsbeispiel.
Was du beachten solltest -> deine Verarbeitung am PC allgemein und deine Abfrage alle 10ms im Speziellen stellt eine Abtastung dar.
Da musst du das Abtasttheorem einhalten. fa > 2*fg
(Abtastfrequenz > 2 * höchste im Signal vorkommende Frequenz)
Anderen Falls bekommst du den Alias-Effekt.
fg kann man festlegen, in dem man f > fg wegfiltert. Oder der Sensor hat ein fg (z.B. aufgrund seiner Trägheit) -> Datenblatt.
VG Ezio