Zum Inhalt springen

mfk'); DROP TABLE Users;--

Mitglieder
  • Gesamte Inhalte

    185
  • Benutzer seit

  • Letzter Besuch

  • Tagessiege

    1

Alle Inhalte von mfk'); DROP TABLE Users;--

  1. Ich bin ein wenig verwirrt: Ist myviewport3d in deinem Code ein System.Windows.Controls.Viewport3D oder ein HelixToolkit.Wpf.HelixViewport3D? Im letzteren Fall musst du wohl nicht die Kamera einrichten, aber ein Licht solltest du hinzufügen. Zumindest ist das mein Eindruck beim Überfliegen der Beispiele.
  2. Ich vermute, du musst noch die Kamera des Viewports einrichten, so dass sie dein Model auch im Blickfeld hat.
  3. Dann hast du bei der Umsetzung etwas falsch gemacht. Ich hoffe, du hast nicht einfach nur diesen Codeschnipsel irgendwo eingefügt.
  4. Mehrere Probleme: Brauchst du nicht. Das funktioniert nicht. Arrays passen ihre Größe in C++ nicht magisch an die Erfordernisse an. Benutz std::string statt char-Arrays. Der Dereferenzierungsoperator (Stern) ist hier überflüssig. Der []-Operator führt bereits eine Dereferenzierung durch. Allgemein bedeutet a[ b] dasselbe wie *(a+b), solange du nicht anfängst, die Operatoren selbst zu überladen. Die Angabe von "struct" ist in C++ (im Gegensatz zu C) unnötig. Die Funktion eingabe_station erwartet einen Zeiger auf wetterstation_typ, nicht einen Zeiger auf Array von wetterstation_typ. Grundsätzlich solltest du einen Container der Standardbibliothek (z.B. std::array oder std::vector) benutzen. Dann hast du auch nicht mehr das Problem, dass du in der Funktion nicht weißt, wie groß das Array war. Die Schleife ist unnötig. Du probierst hier alle gültigen i durch, ob sie zur Eingabe passen. Denselben Effekt hätte eine einfache if-Anweisung, die prüft, ob die Eingabe gültig ist.
  5. Kommt drauf an, ob du nur den letzten Status brauchst, oder die ganze Historie.
  6. Die Sonderzeichen dürfen sich also wiederholen, die Worte aber nicht? Kein baumbaumbaum?
  7. Expanded sind Wert-Typen (Vergleich bedeutet Wert-Gleichheit, Zuweisung überschreibt Attribute). Wie struct in C#. Reference sind Referenz-Typen (Vergleich bedeutet Objekt-Identität, Zuweisung bewirkt, dass der Verweis auf ein anderes Objekt zeigt). Wie class in C#. Deferred heißt einfach nur, dass man davon keine Instanz erzeugen kann. Wie abstract in C#.
  8. Ich würde das so lösen: Zunächst der Speicherbedarf einer einzelnen Positionsangabe: Eine einstellige Hex-Zahl entspricht 4 Bit (16 mögliche Zustände): 11 * 4 Bit = 44 Bit = 5½ Byte Ich gehe nicht davon aus, dass hier halbe Bytes verwendet werden sollen. Wenn man auf diesem Niveau Speicher sparen wollte, würde man zunächst ein sparsameres Datenformat wählen. Darum werden aus den 5½ Bytes aufgerundet 6. Eine Positionsangabe pro Minute sind 1440 Positionangaben in 24 Stunden. Der Speicherbedarf ist also 1440 * 6 Byte = 8.640 Byte.
  9. Du kannst nicht dasselbe Objekt mehrfach als Content verwenden. Es müsste funktionieren, wenn du die Ressourcen mit x:Shared="false" versiehst. Dann wird bei jedem Verweis eine neue Instanz erstellt.
  10. Das Problem hättest du bei deinem Ansatz in jedem Fall. Wenn du unterschiedliche Typen zusammenwirfst, musst du sie hinterher wieder aufwändig unterscheiden (wenn es keine sinnvolle Vererbungshierarchie gibt). Ich verstehe auch nicht, was dir dieses Changelog überhaupt bringt. Du weißt damit, dass zum Zeitpunkt X ein int von 1 auf 2 geändert wurde. Was nützt dir das? Weder kannst du daraus herleiten, welcher Datensatz geändert werden muss, noch welches Feld des Datensatzes (wenn es denn mehr als ein int-Feld gibt). Und wie willst du Lösch- und Einfügeaktionen abbilden? Du solltest die Änderungsverfolgung nicht auf Basis einzelner ints und Strings modellieren, sondern auf den Objekten, die deinen Datensätzen entsprechen. Und da ist es durchaus sinnvoll, für jede Art von Objekt eine separate Änderungsverfolgung zu haben.
  11. Die Sprache der Ausnahmetexte hat nichts mit der Sprachversion von Visual Studio zu tun, nur mit den Spracheinstellungen von Windows und den installierten Sprachpaketen des .NET Frameworks auf dem ausführenden Rechner. Auch mit einem englischen VS hättest du lokalisierte Texte.
  12. Gar nicht. Hier passiert etwas, das "Slicing" genannt wird. Du hast eine map<time_t, AbstractChange>. Du kannst hier Objekte von Klassen ablegen, die von AbstractChange erben, da hier eine implizierte Konvertierung stattfindet. Aber die map speichert wirklich nur AbstractChange-Objekte. Alles, was durch Vererbung dazukommt, wird abgeschnitten (daher der Name des Effekts). Folgende Dinge müssen dir klar sein: Verschiedene Instanzen eines Klassentemplates sind nicht irgendwie "verwandt". Change<foo> und Change<bar> sind zwei getrennte, komplett unterschiedliche Klassen. Die Typen sind nicht ineinander umwandelbar. Selbst wenn es eine implizite Konvertierung zwischen foo und bar selbst gibt. Es gibt keine Gemeinsamkeit, auf Basis derer eine Zusammenfassung stattfinden könnte (außer du baust eine gemeinsame Basisklasse ein). Der Typ eines jeden einzelnen Ausdrucks im Code steht zur Compile-Zeit fest. Du könntest mit Smartpointern arbeiten, oder Sammeltypen wie boost::any benutzen. Grundsätzlich würde ich aber zunächst einmal klären, was du mit den gesammelten Daten überhaupt machen willst.
  13. Du möchtest, dass die Menge ein Vielfaches des Faktors ist. Das kannst du prüfen, indem du den Rest der Division von Menge und Faktor prüfst: 10 / 5 = 2 Rest 0 -> OK 12 / 5 = 2 Rest 2 -> NEIN Den Divisionsrest erhältst du in C# (und in vielen anderen Programmiersprachen) mit %-Operator if(menge % faktor == 0) // OK
  14. Vermutlich liegt das Problem in Country. Du speicherst die Strings doch nicht nur als Zeiger, oder?
  15. Das steht da nicht. Da steht, dass dieser Style einen Rand erzeugt, wie er für Dialoge typisch ist. Die Information, dass Fenster mit diesem Style keine Titelleiste haben, ist missverständlich formuliert. Der Style für eine Titelleiste, WS_CAPTION, besteht gerade aus WS_DLGFRAME kombiniert mit WS_BORDER.
  16. Da steht nichts von "alter Version". Da steht, dass der ursprüngliche Entwurf nur Glasfaser vorsah. Mutmaßlich kam die Unterstützung von Kupferkabeln noch während der Standardisierung hinzu. Man hat sich trotzdem entschieden den Namen beizubehalten, allerdings mit der Schreibweise "Fibre", um es (zumindest im amerikanischen Englisch) vom Transportmedium abzugrenzen.
  17. Die MFC-Architektur passt nicht zu MVC. Dass du die App-Klasse in die Controller-Rolle zwängst, ändert daran nichts. Du kannst ja mal hier gucken: http://www.codeproject.com/Articles/30291/An-Introduction-to-a-Model-View-Controller-Impleme
  18. Ja, da ist ein Fehler. Mich wundert, dass die Variante, aus der dieser Code stammen soll, angeblich funktioniert. Falsch abgeschrieben?
  19. Wie gesagt: Fast alles steht schon da. Die ursprüngliche Zeile lautet int[] liste = {0,9,4,6,2,8,5,1,7,3};Wir wollen aber keine Liste mit 0, 9, 4 usw., sondern mit unseren ints. Ersetze also hier die festen Zahlen durch deine int-Variablen.
  20. Du bist nah dran, aber du versuchst zu viel in eine Zeile zu packen. Alles, was du brauchst, hattest du schon einmal in deinem Code. Zerlege dein Problem in Teilprobleme (das ist sowieso immer eine gute Idee). Aus dem Problem "Liste mit vom Benutzer eingegeben Zahlen erzeugen" wird dann: Strings vom Benutzer einlesen (das ist der Teil mit dem InputStreamReader)Eingelesene Strings in Zahlen umwandeln (das ist der Teil mit parseInt)Aus den Zahlen ein Array konstruieren (so wie in der Zeile mit den vordefinierten Zahlen)Diese drei Teile musst du einzeln umsetzen. Nacheinander. Nicht irgendwie in eine Zeile verwurschtelt. Es gibt dafür sicher auch einen eleganten Einzeiler, aber du musst zuerst die Grundlagen verstehen.
  21. Das hier ist die Stelle in main, wo das Array mit den Zahlen für die Sortierung erzeugt wird: int[] liste = {0,9,4,6,2,8,5,1,7,3};Du musst das Array mit den Benutzereingaben füllen, also gehört der Code zum Einlesen davor. Und dann erstellst du das Array liste nicht aus diesen vorgegebenen Zahlen, sondern aus den Zahlen, die der Benutzer eingegeben hat.
  22. Wie bereits gesagt: Lass die Finger von der Methode sortiere, die ist gut, so wie sie ist. Ändere main. Dort fängt das Programm an.
  23. zahl1 bis zahl3 hast du deklariert. Und Code für eingabe1 bis eingabe3 hast du in deinem ersten Beitrag schon gezeigt:
  24. Zuerst eine Erkenntnis: Vorgegebene Zahlen sortiert man genau gleich wie vom Benutzer eingegebene. Klingt trivial, ist aber wichtig. Das bedeutet nämlich, dass du die Methode sortiere nicht ändern musst, nur die Methode main, wo die Zahlen herkommen. Dort wird das Array liste direkt im Code befüllt. Diesen Teil des Codes musst du durch eine Benutzereingabe ersetzen, sonst nichts. Diese Vorgehensweise bringt leider gar nichts. Der Compiler ist zufrieden, wenn er das Programm übersetzen kann. Er kann nicht erkennen, ob das Programm das Richtige tut.

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...