-
Gesamte Inhalte
9912 -
Benutzer seit
-
Letzter Besuch
-
Tagessiege
3
Inhaltstyp
Profile
Forum
Downloads
Kalender
Blogs
Shop
Alle Inhalte von Klotzkopp
-
In welcher Zeichencodierung liegen die Daten vor, und in welcher willst du die konvertierten Daten speichern?
-
Mitdenken ist erlaubt. Value mit großem V.
-
Du solltest an deiner Problembeschreibung arbeiten. Was heißt "läuft nicht"? Bleibt das Programm an dieser Stelle stehen? Stürzt es ab? Hat es das vorher auch schon gemacht (deine erste Beschreibung sah anders aus)? Hast du etwas am Programm geändert? Und meine Frage, warum an der oben genannten Stelle in deinem Code eine 3 steht, hast du auch nicht beantwortet.
-
Empirum mit Spezialisierung auf Smartphone-Anbindung
Klotzkopp antwortete auf powerranger's Thema in Abschlussprojekte
Auch dahinter steckt ein Problem. Man betreibt Innovation ja nicht aus Spaß, sondern weil man sich davon einen wirtschaftlichen Nutzen verspricht. Wenn die Innovation also zu einem Zustand erhöhten wirtschaftlichen Nutzens führt, wurde ein Problem gelöst, nämlich das Problem, das den vorherigen, offenbar suboptimalen Zustand ausmachte. Ein Projekt muss als Ziel eine Verbesserung haben, ansonsten ist es ökonomisch unsinnig, es durchzuführen. Es gibt also als Ausgangslage einen schlechteren Zustand, und als Ziel einen besseren Zustand. Der schlechte Ausgangszustand ist entscheidend für die Motivation, das Projekt überhaupt durchzuziehen. Denn nur durch den Unterschied der Zustände lässt sich ermitteln, ob das Projekt sich lohnt. Natürlich. Das Problem ist, dass die Firma nichts hat, was die Anforderung erfüllt. Mag sein, dass der Begriff "Problem" nicht ganz treffend ist. Es ging mir darum, darauf hinzuweisen, dass man sich nicht nur auf die Lösung und ihre Umsetzung konzentrieren sollte. Damit läuft man Gefahr, wichtige Teile des Projekts zu vernachlässigen. -
Empirum mit Spezialisierung auf Smartphone-Anbindung
Klotzkopp antwortete auf powerranger's Thema in Abschlussprojekte
Ohne zu wissen, was Empirum ist: Die Abschlussarbeit ist eine Projektarbeit, es geht also darum, fachkundig eine Problemlösung zu erarbeiten. Das Stichwort, auf das ich dich hier stoßen möchte, ist Problem. Dein "Thema" ist zunächst mal nur eine Lösung, ohne Problem. Finde und analysiere eine Problemsituation, erfasse Anforderungen, wäge Lösungmöglichkeiten fachkundig und nachvollziehbar ab, setz dann die beste Lösung um und ermittle, was es gebracht hat. Wenn die beste Lösung die ist, die du dir als Thema ausgeguckt hast, umso besser. Aber beachte, dass die Umsetzung der Lösung nur einen Teil des Projekts ausmacht. Richtig zeigen, was du drauf hast, kannst du eher bei den anderen. -
InvalidateRect richtig anwenden
Klotzkopp antwortete auf Angeli's Thema in C++: Compiler, IDEs, APIs
Genau. Außerdem solltest du nach der Prüfung die Variable wieder auf 0 setzen. Es geht darum, festzustellen, ob die WM_PAINT-Nachricht durch deinen Timer oder durch ein anderes Ereignis ausgelöst wurde. Siehe meine Signatur. -
Wenn du willst, dass die Schleife bei 0 abbricht, warum prüfst du dann auf 3?
-
Ist das eine Frage zum Board? Verschoben -> Java
-
InvalidateRect richtig anwenden
Klotzkopp antwortete auf Angeli's Thema in C++: Compiler, IDEs, APIs
Du könntest in WM_TIMER eine Variable setzen. In WM_PAINT kannst du dann diese Variable prüfen. -
Berechnung von Rechecken auf Basis von Koordinaten-Vektor
Klotzkopp antwortete auf Gateway_man's Thema in C++: Compiler, IDEs, APIs
Wenn es nur darum geht, ist die optimale Lösung die, dass du pro Punkt ein Rechteck erstellst, dann gibt es nichts Überflüssiges mehr. Da das vermutlich auch nicht gewünscht ist, merkst du vielleicht, dass du dir ganz genau überlegen musst, wie du mögliche Lösungen bewertest. Wenn du nicht selbst klar definieren kannst, was die gesuchte "beste" Lösung ist, kannst du das Problem auch nicht durch ein Programm lösen lassen. -
Nicht dass ich wüsste. Das hat man aber nach ein paar Mal drauf. Langsam, das ist wieder etwas anderes. Bevor du eine Funktion aufrufen kannst, muss sie deklariert sein. Und "bevor" heißt hier leider wirklich "weiter oben im Code". Du könntest einfach deine Funktionsdefinition vor deine main-Funktion stellen. Aber oft will man das nicht, z.B. wenn man seine Funktionen auf mehrere Dateien verteilt. Dann muss man die Funktion deklarieren: RÜCKGABETYP FUNKTIONSNAME(PARAM1-TYP PARAM1-NAME, PARAM2-TYP PARAM2-NAME, ...); Das ist eine FunktionsDEKLARATION. Der Unterschied zur DEFINITION ist, dass der Rumpf mit den geschweiften Klammern fehlt. Vor einem Aufruf muss eine Deklaration stehen, die Definition darf ruhig irgendwo anders stehen. Der Aufruf geschieht so, wie ich es oben geschrieben habe. Was du mit dem Ergebnis des Aufrufs machst, ist davon komplett unabhängig. Du kannst ihn direkt an cout übergeben, wenn du den Rückgabewert auf der Konsole ausgeben willst. Du kannst den Rückgabewert auch einer Variablen zuweisen, oder direkt als Argument für einen anderen Funktionsaufruf benutzen. Kommt drauf an, was du vorhast.
-
Genau. Du erstellst eine Funktion ja aus einem bestimmten Grund, z.B. zur Strukturierung. Du hast also klare Ein- und Ausgabedaten. Der Rückgabetyp bezeichnet die Art der Ausgabedaten. Der Name "tilsitter" ist unglücklich gewählt, besser wäre "sorte", aber ansonsten stimmt das. Der Ausdruck an der return-Anweisung muss zum Rückgabetyp passen. Wenn der Rückgabetyp beispielsweise int ist, kannst du nicht return "HundKatzeMaus"; oder so etwas machen.
-
Funktionsdefinition (vereinfacht): RÜCKGABETYP FUNKTIONSNAME(PARAM1-TYP PARAM1-NAME, PARAM2-TYP PARAM2-NAME, ...) { // INHALT return AUSDRUCK; } RÜCKGABETYP ist ein Typ, der beschreibt, welche Art von Daten die Funktion ausgibt. Wenn die Funktion nichts zurückgibt, ist das void. Die Parameter beschreiben die Eingabedaten der Funktion. Eine Funktion kann Parameter haben, muss aber nicht. PARAMn-TYP ist der Typ des jeweiligen Parameters. PARAMn-NAME ist der Name, über den im Rumpf auf den Parameter zugegriffen werden kann. AUSDRUCK ist ein Ausdruck, der vom Typ RÜCKGABETYP oder zumindest in diesen umwandelbar sein muss. Die Namen sind frei wählbar, solange sie eindeutig sind. Aufruf: FUNKTIONSNAME(ARG1, ARG2, ...) ARGn ist ein Ausdruck, dessen Typ auf den jeweiligen Parameter-Typ der Definition passen muss. Der gesamte Funktionsarufruf ist selbst ein Ausdruck, der als Typ den Rückgabetyp der Funktion hat. Du kannst damit also den Rückgabewert des Aufrufs einer Variablen zuweisen, oder den gesamten Aufruf-Ausdruck selbst wieder als Argument für eine Funktion benutzen. Wenn etwas unklar ist, sag Bescheid.
-
Man benutzt Funktionen aus 2 Gründen: Um Wiederholungen zu vermeiden. Wenn dasselbe Stück Code mehrfach im Programm auftaucht, lagert man das Stück in eine Funktion aus. Denn doppelter Code birgt die Gefahr, dass man irgendwann eine Stelle ändert (z.B. ein Bugfix), aber die andere(n) nicht. Um den Code zu strukturieren. Wenn man bestimmte Teilaufgaben mit klaren Ein- und Ausgabedaten abgrenzen kann, reduziert man die Gefahr, dass sich irgendwelche Abhängigkeiten quer durchs Programm einschleichen. Soweit klar?
-
Ist dir denn klar, warum man Funktionen benutzt? Ginge ja auch ohne Aus dem Warum ergibt sich das Was, Wo und Wie.
-
Willkommen auf dem Board Es ist besser, wenn du konkrete Fragen stellst. Wir können hier seitenlang über Funktionen dozieren, aber wenn das nicht zufällig deine Verständnislücken trifft, ist es nicht besonders zielführend.
-
Lass die Sendernamen weg, die machen es nur unnötig kompliziert, arbeite erst einmal mit Programmnummern. In der Ausgabemethode soll der aktuelle Zustand ausgegeben werden, sonst nichts. Da soll nichts eingelesen und schon gar nicht geändert werden. Grundsätzlich haben Eingaben nichts in den Klassenmethoden verloren. Sowohl das Einlesen dessen, was gemacht werden soll, als auch des neue Wertes, sollten außerhalb der Klasse (also in main) stattfinden. Für die drei Werte braucht deine Klasse noch Getter-Methoden, denn du sollst in der Ausgabemethode ja nicht direkt auf die Member zugreifen, sondern Methoden benutzen. Was das Absturzproblem angeht, müsstest du den aktuellen Code zeigen. Da hat sich ja offenbar einiges geändert.
-
Deine Klasse enthält aus unerfindlichen Gründen einen Verweis auf dieselbe Klasse, namens tivi. Dieser Objektverweis wird nirgends initialisiert, daher bewirkt der Zugriff darauf in der Methode ausgabe, dass dein Programm mit einer NullReferenceException aussteigt. Dieses tivi brauchst du nicht, wirf es raus.
-
Du hast nicht gezeigt, wie uhr_zeichnen aussieht, aber wenn da drin mal wieder BeginPaint und EndPaint auftauchen, darfst du diese Funktion nur während der Behandlung einer WM_PAINT-Nachricht des Hauptfensters aufrufen. Der Timer hat außerdem im Maskenfenster nichts verloren, der gehört ins Hauptfenster.
-
Probleme bei der Intergration der Maske ins Programm
Klotzkopp antwortete auf Angeli's Thema in C++: Compiler, IDEs, APIs
Die Ellipse wird auf das Fenster gezeichnet, dessen Fenster-Handle du an ellipse_zeichnen übergibst. Im Übrigen scheinst du alles, was ich dir in deinem letzten Thread über BeginPaint, UpdateWindow usw. gesagt habe, wieder vergessen zu haben. -
Probleme bei der Intergration der Maske ins Programm
Klotzkopp antwortete auf Angeli's Thema in C++: Compiler, IDEs, APIs
Was ist denn hdc? -
Directory.GetDirectories gibt's seit Framework 1.1
-
Es ist nicht möglich, ein C#-Programm ohne das .NET-Framework zu erstellen. Da du so explizit das Framework 4 ausschließt: 3.5 ist erlaubt?