Zum Inhalt springen
View in the app

A better way to browse. Learn more.

Fachinformatiker.de

A full-screen app on your home screen with push notifications, badges and more.

To install this app on iOS and iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
To install this app on Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.

Klotzkopp

User
  • Registriert

  • Letzter Besuch

Alle Beiträge von Klotzkopp

  1. Schon klar, dass das keine grammatisch korrekte römische Zahl es. Es ging mir nur darum, meine Hypothese zu prüfen, denn I ist der einzige Fall, bei dem nicht auf eingabe[i-1] zugegriffen wird. @Ragdalf: Was ist mit ivvvv? Geht das?
  2. Ich kann dein Programm nicht kompilieren, weil VC++ 7.1 das hier string eingabe[dummy]; //Array eingabe[] mit der Größe dummy [/CODE]nicht schluckt. Ist IMHO auch kein gültiges C++, denn die Größe eines Arrays muss eine Compilezeitkonstante sein. Tritt der Fehler auch auf, wenn du fünfmal i eingibst? Falls nicht, könnte es daran liegen: Du greifst in deinen Abfragen mehrfach auf eingabe[i-1] zu. Was ist, wenn i Null ist? Nachtrag: Du hattest nach Verbesserungsvorschläge gefragt: Wenn es egal ist, ob du i++ oder ++i schreibst, gewöhne Dir ++i an.
  3. Klotzkopp hat auf einen Beitrag in einem Thema geantwortet in Basic
    Application.DisplayAlerts = False könnte funktionieren. Zumindest unterdrücke ich damit die Abfrage beim Speichern, ob eine existierende Datei überschrieben werden soll. Nicht vergessen, das hinterher wieder einzuschalten.
  4. Wird dieser Fehler auch wirklich in der Zeile erzeugt, die du uns da zeigst? Ich würde erwarten, dass da zumindest 'int' auch irgendwo drin steht. Falls nicht, zeig bitte mal ein wenig Code drumherum.
  5. Hallo nordi80! 1. Der Betreff ist wenig aussagekräftig. So ziemlich jeder, der hier ein Thema erstellt, sucht Hilfe. Bitte beim nächsten Mal drauf achten, dass der Betreff dein Problem besser beschreibt. 2. Hier wäre es gut gewesen, wenn du nicht den ursprünglichen (unangepassten) Code gezeigt hättest, sondern den, der die Fehler verursacht. 3. Hier wird niemand Fehler an der Nummer erkennen können. Du hast die kompletten Fehlermeldungen vorliegen, warum sollen wir sie umständlich über die Nummer raussuchen? Also bitte immer die vollständige Fehlermeldung angeben.
  6. Klotzkopp hat auf einen Beitrag in einem Thema geantwortet in C++: Compiler, IDEs, APIs
    Hier gibt es ein paar Informationen zu dem Thema. Da wird WM_QUIT übrigens überhaupt nicht erwähnt. Wenn WM_QUIT in einer Nachrichtenschleife auftritt, gibt der zugehörige Aufruf von GetMessage FALSE zurück. Da die Nachrichtenschleife meist in etwa so aussieht: while(GetMessage(...)) { DispatchMessage(...); }[/CODE]wird bei WM_QUIT diese Schleife beendet, d.h. die Anwendung kann z.B. nicht mehr nachfragen, ob ungespeicherte Dokumente gespeichert werden sollen. Mit SendMessage sollte WM_QUIT eigentlich gar nicht funktionieren, denn SendMessage ruft direkt die WndProc auf, ohne Umweg über die Nachrichtenschleife. Wenn die Anwendung also nicht auch in der WndProc auf WM_QUIT mit Terminierung reagiert, dann läuft die Anwendung weiter. Also: Wenn WM_QUIT, dann mit PostMessage. WM_CLOSE bzw. WM_SYSCOMMAND ist aber zu bevorzugen, damit die Anwendung sich selbst sauber beenden kann.
  7. Klotzkopp hat auf einen Beitrag in einem Thema geantwortet in C++: Compiler, IDEs, APIs
    SC_CLOSE funktioniert nur mit WM_SYSCOMMAND. Ich weiß nicht, wie du auf WM_QUIT kommst, aber damit wird es nicht klappen. PostMessage(hWnd, WM_SYSCOMMAND, SC_CLOSE, 0); [/CODE] oder[CODE]PostMessage(hWnd, WM_CLOSE, 0, 0); sollte es tun.
  8. Üblicherweise lagert man alle sprachabhängigen Ressourcen in DLLs aus. Beim Programmstart wird dann in Abhängigkeit von der Sprache eine dieser DLLs geladen und die darin enthaltenen Ressourcen verwendet. Bei Verwendung der MFC geht das z.B. mit AfxSetResourceHandle.
  9. Klotzkopp hat auf einen Beitrag in einem Thema geantwortet in Netzwerke
    Geschlossen mit Verweis auf die Boardregeln. @Friedhof: Dein Provider bietet dir sicher einen Mechanismus, über den er dir entweder dein Passwort mitteilen oder ein neues vergeben kann.
  10. Äh, das hab ich oben doch geschrieben...
  11. Ich kenne mich nicht so gut mit den Borland-Erweiterungen aus, aber ich habe vor kurzem ein Pascalprogramm nach C++ portiert, das ist zumindest verwandt. Ohne Gewähr: // unit u_CVClasses; ??? // interface ??? /* uses Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls; */ // Das musst du vermutlich mit #include-Direktiven lösen // type // TCaesar = class(TObject) class TCaesar : public TObject { // private // protected // public public: // function encode(s: string; delta: integer): string; AnsiString encode(const AnsiString& s, int delta); // function decode(s: string; delta: integer): string; AnsiString decode(const AnsiString& s, int delta); // published ??? // end; }; // implementation ??? // { TCaesar } ??? //function TCaesar.decode(s: string; delta: integer): string; AnsiString TCaesar::decode(const AnsiString& s, int delta) { //var // P: PChar; const char* P; // tmp: String; AnsiString tmp; // iDelta: Integer; int iDelta; // iRealDelta: Integer; int iRealDelta; // iNewOrd: Integer; int iNewOrd; //begin // das ist die geschweifte Klammer oben // tmp := ''; tmp = ""; // sollte nicht nötig sein // iDelta := delta; iDelta = delta; // iRealDelta := 26; iRealDelta = 26; // p := pointer(s); P = s.c_str(); // if P <> nil then if(P) { // while P^ <> #0 do while(*P) // begin { // if P^ in ['a'..'z', 'A'..'Z'] then if((*P>='a' && *P<='z') || (*P>='A' && *P<='Z')) // begin { // iNewOrd := Ord(P^) - iDelta; iNewOrd = *P - iDelta; // if iNewOrd > 122 then if(iNewOrd > 122) // Inc(iNewOrd, iRealDelta); iNewOrd += iRealDelta; // if iNewOrd < 97 then if(iNewOrd < 97) // iNewOrd := iNewOrd + 26; iNewOrd += 26; // tmp := tmp + Chr(iNewOrd); tmp += static_cast<char>(iNewOrd); // end else } else // tmp := tmp + P^; tmp += *P; // Inc(P); ++P; // end; } // Result := tmp; return tmp; //end; } [/code] Als grobe Richtschnur kannst du folgende Ersetzungen vornehmen: := -> = begin -> { end;-> } if Bedingung then -> if(Bedingung) P^ -> *P Inc(a,; -> a += b; function Name(Param1: Typ1, Param2: Typ2) : FuncTyp -> FuncTyp Name(Typ1 Param1, Typ2 Param2) for i := 0 to 255 do -> for(i=0; i<=255; ++i)
  12. Klotzkopp hat auf einen Beitrag in einem Thema geantwortet in C++: Compiler, IDEs, APIs
    Dann lässt sich aber der Dialog auch nicht mehr mit dem OK-Button schließen. @TripleD: Wenn du auf Enter drückst, wird der Default-Button auf dem Dialog ausgeführt. Das ist zunächst immer der OK-Button. Wenn eine andere Aktion ausgeführt werden soll, musst du einfach den Button für die andere Aktion zum Default-Button machen.
  13. Klotzkopp hat auf einen Beitrag in einem Thema geantwortet in C++: Compiler, IDEs, APIs
    Die Headerdatei wird dir wahrscheinlich nicht weiterhelfen, weil sie vermutlich nur die Deklaration der Funktion enthält. Wenn du Hilfe beim Nachprogrammieren suchst, solltest du auch beschreiben, was die Funktion macht. Ich kenne sie z.B. nicht.
  14. Klotzkopp hat auf einen Beitrag in einem Thema geantwortet in Skript- und Webserverprogrammierung
    Das sieht nach base64-Codierung aus. IIRC gibt es in PHP eine base64decode-Funktion.
  15. Um es nochmal etwas deutlicher zu formulieren: Wenn die Daten wirlich so in einer Datenbank liegen, dann brauchst du genau 1 SQL-Statement, um die Feldsummen und die Anzahl der Datensätze zu ermitteln, und musst dann nur noch ein paar Zahlen ersetzen. Wenn du das zeilenweise machen willst, musst du dir jeden Datensatz ansehen, alle Werte einzeln mit Zweierpotenzen multiplizieren und aufaddieren, die Werte aller Datensätze und-verküpfen und am Ende die Bits aus dem Ergebnis wieder rausholen. Je nach Programmiersprache ist das mehr oder weniger kompliziert, aber es ist auf jeden Fall erheblich aufwändiger als der erste Ansatz.
  16. Jeden deiner Datensätze (Zeilen) kann man als Dualzahl interpretieren, wobei jedes Feld eine Dualziffer (= 1 Bit) darstellt. Mehrere dieser Zahlen kann man miteinander verknüpfen, und zwar jeweils die zusammengehörigen Bits: 15: 1 1 1 1 12: 1 1 0 0 ----------- &: 1 1 0 0[/CODE] Bei der und-Verknüpfung ist ein Bit im Ergebnis nur dann 1, wenn das gleiche Bit bei allen Eingangswerten 1 ist. Sobald auch nur eines 0 ist, ist das Ergebnis 0. Einige Programmiersprachen haben Operatoren oder Funktionen für die bitweise Und-Verknüpfung fest eingebaut. Ich bin aber immer noch der Meinung, dass es mit der Summe viel einfacher geht...
  17. Du solltest dich von dem Begriff "Nenner" lösen, denn mit Arithmetik hat das nichts zu tun. Das ist nur eine Frage der Vorgehensweise. Ob du zuerst Zeilen (=Datensätze) verarbeitest, oder erst die einzelnen Felder (=Spalten) für alle Datensätze, kommt aufs gleiche raus. Letzteres ist IMHO erheblich einfacher, darum hatte ich das vorgeschlagen. Wenn du die Summe über die einzelnen Felder bildest, bekommst du 3 3 1 2. Jetzt musst du nur noch überall dort, wo eine Zahl = Anzahl der Datensätze (3) steht, eine 1 hinmachen, und an den anderen Stellen eine 0: 1 1 0 0 Wenn du es unbedingt zeilenweise verarbeiten willst, könntest du die Werte als Bits anordnen (mit Zweierpotenzen multiplizieren) und addieren: 1 * 8 + 1 * 4 + 1 * 2 + 1 * 1 = 15 1 * 8 + 1 * 4 + 0 * 2 + 0 * 1 = 12 1 * 8 + 1 * 4 + 0 * 2 + 1 * 1 = 13[/CODE] Diese Werte verknüpfst du dann bitweise-und: 15 & 12 & 13 = 12 Die Darstellung des Ergebisses im Dualsystem ist dann das, was du suchst: 12 (dez) = 1100 (dual). Hier musst du aber auf führende Nullen aufpassen. Außerdem kann die Anzahl der Felder je nach Plattform und Sprache begrenzt sein.
  18. Du willst also für die Werte, die bei allen Datensätzen 1 sind, 1 haben, ansonsten 0? Das ist grundsätzlich eine Und-Verknüpfung. Du könntest auch aufsummieren. Wenn die Summe gleich der Anzahl der Datensätze ist, hast du eine 1, sonst eine 0.
  19. Klotzkopp hat auf einen Beitrag in einem Thema geantwortet in C++: Compiler, IDEs, APIs
    @David19: Du sprichst von diesem Flugzeugverwaltungsprogramm, als ob es um eine Standardaufgabe mit einer einzigen Standardlösung ginge. Das ist aber nicht der Fall. Je genauer du die Aufgabenstellung und vielleicht auch die angestrebten Lernziele dieser Aufgabe beschreiben kannst, desto eher wirst du Hilfe finden. Das Forum ist aber kein Hausaufgaben- oder Programmierservice. Niemandem ist damit geholfen, wenn dir einfach eine Komplettlösung vorgesetzt wird. Denn erstens kann es sein, dass diese Lösung völlig an der Aufgabenstellung vorbeigeht. Zweitens ist der Sinn dieser Aufgabe mit Sicherheit der, dass Du lernst, wie man so etwas macht, gerade wenn du keine "Leuchte" bist. Wenn du konkrete Probleme mit Teilaufgaben innerhalb des Programms hast, wirst du hier mit Sicherheit schnell Hilfe finden. Voraussetzung dafür ist aber, dass du das Problem detailliert beschreibst und Eigeninitiative zeigst.
  20. Klotzkopp hat auf einen Beitrag in einem Thema geantwortet in Windows
    Der ProcessExplorer von sysinternals bietet die Möglichkeit, nach einem bestimmten Handle (=geöffnete Datei) zu suchen. Ist Freeware, und wie alle Tools von sysinternals, dringend zu empfehlen. www.sysinternals.com
  21. Das geht mit SHBrowseForFolder.
  22. Klotzkopp hat auf einen Beitrag in einem Thema geantwortet in C++: Compiler, IDEs, APIs
    *pMaxUmfo ist nur ein short, da kann bestensfalls die Anzahl der Formate drinstehen. Sehe ich das richtig, dass dann die Formate in m_TokenUmfo.tokenUmfoField[0][5]; und m_TokenUmfo.tokenUmfoField[1][5]; stehen? Dann könntest du das so machen: //---------------------Füllen der ComboBox------------------------ for(int i=0; i<*pMaxUmfo; ++i) { IDC_FORMAT->Items.Add(pDbsQ->getF_Format(i)); } //-----------------------------Prototyp------------------------------ char* CDbsQ::getF_Format(int line); //------------------------------- Funktion------------------------------------- char* CDbsQ::getF_Format(int line) { return m_TokenUmfo.tokenUmfoField[line][5]; }[/code] Alles ohne Gewähr (mangels .NET-Erfahrung).
  23. Klotzkopp hat auf einen Beitrag in einem Thema geantwortet in C++: Compiler, IDEs, APIs
    Ich verstehe nicht viel von .NET, aber es müsste wohl so aussehen: IDC_FORMAT->Items.Add(/*hier dein neuer Eintrag*/); Übrigens: Ich verstehe nicht, was die Methode CDbsQ::getF_Format macht. Es sieht so aus, als ob sie irgendwas in lokale char-Arrays kopiert, aber mit diesen Arrays geschieht nichts weiter, sie werden am Ende der Funktion wieder zerstört, ohne das mit ihnen irgendwas gemacht worden wäre. Man könnte die Methode IMHO reduzieren auf: char* CDbsQ::getF_Format(short *pMaxUmfo) { return m_TokenUmfo.tokenUmfoField[m_line][5]; }[/code] Ich verstehe auch nicht, warum du pMaxUmfo als Zeiger übergibst. Vielleicht könntest du erklären, was diese Methode tun [i]soll[/i].
  24. Klotzkopp hat auf einen Beitrag in einem Thema geantwortet in C++: Compiler, IDEs, APIs
    Ich denke, das Problem liegt zunächst mal hier: Eine Zuweisung an das Text-Property einer Combobox ändert nur den Text im Eingabefeld. Wenn du einen String zur Auswahlliste hinzufügen willst, musst du der Items-Collection neue Einträge hinzufügen.
  25. Klotzkopp hat auf einen Beitrag in einem Thema geantwortet in C++: Compiler, IDEs, APIs
    Das sollte nicht von der Aufteilung der Quellcodedateien abhängig sein, sondern von der Programmlogik. Wenn die Variablen logisch zur Klasse gehören, sollten sie Member sein.

Configure browser push notifications

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.