Navigation

    cpp-logo

    C++ Community

    • Register
    • Login
    • Search
    • Categories
    • Recent
    • Tags
    • Popular
    • Groups
    1. Home
    2. Popular
    Log in to post
    • All categories
    • Ankündigungen
    •      Die Artikel
    • C++ (alle ISO-Standards)
    •      MFC
    •      VCL (C++ Builder)
    •      C++/CLI mit .NET
    •      Andere GUIs - Qt, GTK+, wxWidgets
    • Sonstige Programmiersprachen
    •      C (alle ISO-Standards)
    •      C# und .NET
    •      Java
    •      Assembler
    •      Webzeugs
    • Betriebssysteme
    •      WinAPI
    •      Linux/Unix
    •      Projekt: OS-Development
    •      DOS und Win32-Konsole (nur Lesen)
    • Weitere Fachbereiche
    •      Mathematik und Physik
    •      Spiele-/Grafikprogrammierung
    •      Datenbanken
    •      Compiler- und IDE-Forum
    •      Projekte
    • Jenseits der Programmierung
    •      Beruf und Ausbildung
    •      Stellenangebote
    •      Themen rund um die IT
    •      Gaming-Corner
    • Forentechnik
    • Archiv
    •      Das C++ Magazin
    •          Die Redaktion
    •          Die Autoren
    •          Allgemeines zum Magazin
    •          Archiv
    •      Organisation des Forumtreffens
    •      FAQs - Frequently Asked Questions
    •          FAQ - C (C89, C99 und C11)
    •          FAQ - Assembler
    •          FAQ - C++ (auch C++0x, C++11)
    •          FAQ - C++/CLI
    •          FAQ - C++ Builder (VCL/CLX)
    •          FAQ - C# und .NET
    •          FAQ - Compiler & IDEs
    •          FAQ - Datenbanken
    •          FAQ - DOS und Win32-Konsole
    •          FAQ - Grafik-/Spieleprogrammierung
    •          FAQ - GUIs
    •          FAQ - Java
    •          FAQ - Linux/Unix
    •          FAQ - Mathematik und Physik
    •          FAQ - MFC
    •          FAQ - Rund um die Programmierung
    •          FAQ - Sonstiges
    •          FAQ - Webzeugs
    •          FAQ - WinAPI
    •          FAQ - Forentechnik
    • All Topics
    • New Topics
    • Watched Topics
    • Unreplied Topics
    • All Time
    • Day
    • Week
    • Month

    • L

      Einzigartigkeit von Objekten in Server - Client sicherstellen
      Datenbanken • • Leon0402  

      23
      0
      Votes
      23
      Posts
      244
      Views

      L

      @john-0 sagte in Einzigartigkeit von Objekten in Server - Client sicherstellen: Die IDs auf Clientseite lösen das Problem nicht! Das Problem ist, dass durch den Offline Betrieb Kopien oder konkurrierende neue Einträge entstehen können, und Du Dir darüber Gedanken machen musst wie Du diese Konflikte löst. Eine ID auf Clientseite ist dabei überhaupt nicht hilfreich, weil sie suggeriert, dass es keinen Konflikt gäbe. Beispiel: Die DB enthält Adressdaten mit folgendem Eintrag Hans Mustermann Musterstraße 2 99999 Musterdorf Nutzer A ändert den Eintrag auf Hans Mustermann Musterstraße 1 99998 Musterstadt Nutzer B ändert den Eintrag auf Heinz Mustermann Musterstraße 2 99999 Musterdorf Welcher Eintrag ist denn nun korrekt? Analog besteht die Möglichkeit, dass beim offline Erzeugen neuer Einträge exakt die gleiche Problematik auftritt. Wenn der Abgleich über eine UUID erfolgt, dann gibt es keinen Konflikt, wenn der Abgleich über die Daten erfolgt, dann brauchst Du auch keine UUID. Ich glaube du sprichst hier zwei verschiedene Thematiken an. Mir geht es nur um eine eindeutige Indendifikation der Einträge zu ermöglichen. Du schreibst in deinem Beispiel: "den Eintrag" -> Welchen Eintrag? Woher weißt du, dass das "Der Eintrag" ist und nicht irgendein x-beliebiger ander Eintrag, der halt zufällig die selben Daten hat. Indem du eben eine ID hast, denn es gibt (wie am Anfang gesagt) keinen natural key. Es muss also eine Idenfikation geben, damit du weißt, dass irgendein Client "den Eintrag" verändert hat Was du beschreibst sind Konflikte. Daher man hat bereits eindeutig festgestellt, dass zwei verschiedene Client zeitgleich (während sie offline waren) dieselben Daten beschrieben haben. Wie geht man damit um? Das ist definitiv ein Problem mit vermutlich vielen Ansätzen: Man nimmt einfach den ersten / letzen (Don't care) Man fragt den Nutzer, welchen er haben möchte Man hat automatische oder Teil-automatische Merge Konflikt Algorithmen (siehe z.B. git) .... Aber es ist ein anderes Problem und war erstmal nicht direkt meine Frage. Daher noch mal meine Frage: Wie identifiziert man ein Objekt eindeutig in einem Multi-Client - Server Szenerario mit Offline Funktionalität. Wer generiert wann wo die dazu nötigen eindeutigen Daten (Ids)? Welche Idenfikation wird wo gespeichert? Einige Ansätze waren: Der Client generiert eine eindeutige ID (per UUID). Das Objekt wird sowohl lokal als auch auf dem Server nur über diese ID identifieziert. Der Client generiert eine eindeutige lokale ID (z.B. Auto Increment) und kombiniert sie mit einer eindeutigen statischen Client ID, die er bei erstmaliger Registrierung bekommt. Die ID wird entweder zusammengesetzt <lokale-Id>-<Client-id> oder eben beides seperat abgespeichert auf Server Seite Der Client generiert eine eindeutige lokale ID (z.B. Auto Increment) und der Server generiert beim ersten hochladenen eine eindeutige globale ID, welche er dem Client mitteilt. Serverseitig wird nur nur die globale ID gespeichert, Client Seitig beides. Zusätzlich gab es noch ein paar Ideen dazwischen. Zum Beispiel @SeppJ hatte, wenn richtig verstanden, Ansatz 2 im wesentlichen vorgeschlagen. Nur das die Client IDs partioniert werden und dann die Client ID mit der lokalen auto increment ID addiert wird (anstatt das die IDs zusammengesetzt werden).
    • P

      Datentyp für Zeigerarithmetik
      C (alle ISO-Standards) • • Peter Viehweger  

      21
      0
      Votes
      21
      Posts
      346
      Views

      @hustbaer Danke für die Info, das habe ich übersehen
    • S

      max Wert aus einem Array auslesen
      C++ (alle ISO-Standards) • • steven-w  

      13
      0
      Votes
      13
      Posts
      211
      Views

      @wob sagte in max Wert aus einem Array auslesen: Mein Ziel war, dass sich bitte @steven-w darüber Gedanken machen soll, nicht du. Zu spät
    • H

      Satzzeichen, Tabs uns Umbrüche entfernene aus strings...
      C++ (alle ISO-Standards) • • Heppy  

      12
      0
      Votes
      12
      Posts
      167
      Views

      H

      @hustbaer danke für deine anmerkung mit dem CR und LF jedoch ist es in diesem fall sogar ausdrücklich so gewollt, im normalfall würde ich dir aber vollkommen zustimmen. das mit dem punkten ohne lehrzeichen klingt einleuchtend und werde ich mir notieren sowie anschauen ist aber in diesem fall auch noch nicht erforderlich. Ich muss mir scheinbar sowiso noch einiges erneut anschauen, das ich mir C++ mal halbwegs beigebracht hatte ist schon eine ewigkeit her und irgendwie scheint jetzt vieles anders zu sein als damals, was nicht schlecht ist aber mich wohl erneut zur suche nach guten einweisungen drängt xD Danke nochmals
    • M

      CListCtrl und LVS_EX_FULLROWSELECT
      MFC • • Mike85Dev  

      10
      0
      Votes
      10
      Posts
      128
      Views

      ich bin hier raus.
    • T

      Mit einer c++ GUI anwendung eine datei öffnen
      Andere GUIs - Qt, GTK+, wxWidgets • • tcerror  

      9
      0
      Votes
      9
      Posts
      62
      Views

      M

      Ja. Zumindest in der Konsole geht das, das ging schon immer.
    • M

      Funktion die Buchstaben zählt und mit Pointer die Postion ausgibt
      C (alle ISO-Standards) • pointer aufgabe c11 ub • • Mat_ftt  

      9
      0
      Votes
      9
      Posts
      102
      Views

      @DirkB sagte in Funktion die Buchstaben zählt und mit Pointer die Postion ausgibt: Man sieht es nur in der Ausgabe von Durchlauf2 beim 'T' Und irgendwie bezweifle ich daß das Teil der Aufgabenstellung ist. Aber das kann nur @Mat_ftt beantworten.
    • S

      "for" oder "while" Schleife mit Timer steuern
      Andere GUIs - Qt, GTK+, wxWidgets • • Splin  

      8
      0
      Votes
      8
      Posts
      100
      Views

      S

      Also, es funktioniert. Nochmal DANKE an allen ihr seid toll !!! Ich habe berücksichtigt die Antworte von euch beide: @Leon0402 und @Th69 . Im Konstruktor habe die Koordinaten initialisiert und Timer mit SIGNAL/SLOT verbunden. In dem SLOT werden die Koordinaten geändert , repaint(); aufgerufen und Timer->stop hängt von Koordinate x ab. Dadurch dass im SLOT wird immer wieder repaint(); aufgerufen, muss ich den vorherigen Kreis nicht löschen(so ist die Bedingung). Weiter habe aus eigener Initiative so erweitert dass Zeichnung fängt immer wieder vom Anfang an. Danke euch
    • C

      Kalender erstellen in C++ Labor-Aufgabe
      C++ (alle ISO-Standards) • • Christoph99  

      7
      0
      Votes
      7
      Posts
      146
      Views

      H

      Hat schon mal jemand gefragt: https://www.c-plusplus.net/forum/topic/254439/c-kalender und https://www.c-plusplus.net/forum/topic/298573/kalender-in-c-programmieren und ... Habe selbst nach „Kalender C++“ recherchiert
    • M

      C++ Commands als Userinput umsetzen Ideen?
      C++ (alle ISO-Standards) • • marcel91200  

      6
      0
      Votes
      6
      Posts
      101
      Views

      M

      Danke erstmal fuer die Antworten und speziell die guten Ansaetze, hat mir echt weitergeholfen. Ich wusste nichtmal, dass ich in Hashmaps auch auf Funktionen abbilden kann, kann aber sicherlich echt praktisch sein Eine library wollte ich nicht nutzen, da ich mich einfach gefragt hab, was es noch fuer Ideen gibt, ohne sofort auf ne fertige Loesung zurueckzugreifen.
    • T

      Probleme beim Linken via remote mit Visual Studio
      Linux/Unix • • TorDev  

      5
      0
      Votes
      5
      Posts
      37
      Views

      T

      @Swordfish Alles aus Visual Studio heraus, eine Solution. Alles gebaut via remote mit g++, als Linker wird ld genutzt. @DirkB Korrekte Schreibweise habe ich auch geprüft, habe die Ausgaben in die Konsole kopiert und cd xyz ausgeführt. Verzeichnis ist definitiv richtig. @Th69 Ist nur x64 System, Virtuelle Maschine Debian Buster Lite. lg Torsten
    • L

      Erste 1000 Stellige Fibonacci Zahl in C
      C (alle ISO-Standards) • • Luki  

      4
      0
      Votes
      4
      Posts
      68
      Views

      W

      Worum geht es hier eigentlich? a) sollst du versuchen, eine eigene BigInt-Implementierung zu erstellen? Dann abstrahiere das in eigene Operationen. Insbesondere scheinst du ja mit int-Arrays die Ziffern nachbilden zu wollen. Abstrahiere die entsprechenden Operationen in Funktionen, also zum Beispiel in eine Funktion bigint_add(a, b), die dir a += b berechnet. Überlege dir auch sinnvolle Typen. Ein Array von int erscheint nicht sinnvoll, wenn jedes Array-Element nur eine Ziffer enthalten soll - dann brauchst du nicht so einen großen Datentyp wie int. b) sollst du eine fertige Implementierung von BigInt verwenden? Der schnellste Weg, um zur n-ten Fibonacci-Zahl zu gelangen, geht über das Berechnen von [1110]n\left[\begin{matrix}1 & 1 \\ 1 & 0 \end{matrix}\right]^n[​1​1​​​1​0​​]​n​​, siehe auch https://www.youtube.com/watch?v=QIHy8pXbneI&t=2107s (Video ist allerdings für C++ und mit Templates - die generelle Idee passt aber in jeder Sprache). Und dann kannst du schnell ne binäre Suche machen. c) Du kannst mit Binets Formel die n-te Zahl direkt berechnen: Fn=(1+52)n−(1−52)n5F_n = \frac{ (\frac{1+\sqrt 5}{2})^n - (\frac{1-\sqrt 5}{2})^n}{\sqrt 5}F​n​​=​√​5​​​​​(​2​​1+√​5​​​​​)​n​​−(​2​​1−√​5​​​​​)​n​​​​ (hoffe, das passt so...) - und rückwärts kannst du aus einer Zahl dann auch nnn bestimmen - wenn du groß genuge Floatingpoint-Operationen hast. Problem: das IEEE double kann nicht mit 1e1000 rechnen. => Du musst also erst den log bilden und nie mit 1e1000 rechnen. Die Näherung (1000 + log(sqrt(5))/log(10)) / log((1+ sqrt(5)) / 2)*log(10) = 4786.6... ist schon fast richtig. Dabei habe ich angenommen, dass der Term (1−52)n≈0(\frac{1-\sqrt 5}{2})^n \approx 0(​2​​1−√​5​​​​​)​n​​≈0 für große nnn. d) Irgendeine andere Lösung, die ausnutzt, dass nicht die Fibonaccizahl selbst, sondern nur der Index gesucht wird. Du kannst das Ergebnis übrigens leicht mit Wolframalpha testen: Log(10, fibonacci(4787)) liefert 1000.07...., wärend bei 4786 nur 999.86... rauskommt.
    • C

      Nachhilfe in C++
      C++ (alle ISO-Standards) • • Christoph99  

      3
      0
      Votes
      3
      Posts
      77
      Views

      Du glaubst nicht, wie hilfsbereit die Leute hier sind, wenn man sich etwas Mühe gibt, gerade bei Anfängern. Poste deine Aufgabe und deinen Ansatz, erkläre warum du das so versuchst und beschreibe den Fehler/Verständnisproblem. Es gibt hier >10 Leute, die regelmäßig online sind, damit hast du tagsüber zwischen 8 und 20 Uhr eigentlich immer jemanden, der mal über deinen Code gucken kann. Und ich wiederhole nochmal: Eigeninitiative ist hier Voraussetzung. Gute Fehlerbeschreibung: "Ich mache hier das und jenes und erwarte, dass das dabei passiert. Als Ergebnis erwarte ich X, aber ich kann mir nicht erklären, warum Y dabei herauskommt." Schlechte Fehlerbeschreibung: "Meine Funktion soll dieses und jenes tun, funktioniert aber nicht." Du verstehst, was ich meine... PS: Den Stundensatz eines Softwareentwicklers willst du nicht privat bezahlen müssen...
    • S

      VS2015 via Define (Configuration) zwischen Lib Versionen wählen
      Compiler- und IDE-Forum • • SoIntMan  

      2
      0
      Votes
      2
      Posts
      56
      Views

      Per Define geht das nicht. Per Config-Variable schon.
    • P

      TTN_NEEDTEXT und Combobox in einer Listview
      WinAPI • • papa_multi  

      1
      0
      Votes
      1
      Posts
      106
      Views

      P

      Ich habe eine Combobox die ich zur Laufzeit in einer Zelle eines ListView (Report) erzeuge. Nun möchte ich ein Tooltip für die Listbox der Combox einbinden. Wenn ich TOOLINFO tt; tt.lpszText = LPSTR_TEXTCALLBACK; verwende bekomme ich keine Nachricht TTN_NEEDTEXT. Ich habe sowohl die ListView als auch die Combobox und die Listbox der Combobox subclassed. Keine dieser Routinen empfängt in WM_NOTIFY eine TTN_NEEDTEXT Nachricht. Was mache ich falsch? Welches Fenster müsste die TTN_NEEDTEXT Nachricht empfangen? Zur Info Tooltip funktioniert wenn ich tt.lpszText = (LPSTR)buf; verwende. Danke für jeden Tip.