Zum Inhalt springen

Klotzkopp

Mitglieder
  • Gesamte Inhalte

    9912
  • Benutzer seit

  • Letzter Besuch

  • Tagessiege

    3

Alle Inhalte von Klotzkopp

  1. Die casts auf den Rückgabewert von malloc sind unnötig und können Fehler verdecken. malloc gibt void* zurück, und der ist in jeden anderen Zeigertyp implizit konvertierbar, da braucht man keinen cast.
  2. Wieso? Ich verstehe nicht, was du damit sagen willst :confused: Was genau jetzt? Dieser Ansatz? realloc an sich? Wenn du so überzeugt bist, dann bring doch mal ein paar Gründe für deine Behauptungen.
  3. Genau dafür ist private ja auch gedacht. Wenn der Zugriff aus einer abgeleiteten Klasse erlaubt sein soll, kannst du protected benutzen. Nicht entschuldigen, sondern Code-Tags benutzen. Das hat den Nebeneffekt, dass die Einrückung nicht verlorengeht. Ich hab das mal für dich korrigiert. Und auch dein Threadtitel ist richtig schlecht, sozusagen in den Top Ten der schlechten Threadtitel. Auch das habe ich korrigiert. Bitte beim nächsten Mal selbst und gleich richtig machen.
  4. Klotzkopp

    Schleifen

    Weil der älter ist als der aktuelle C++-Standard. Da sollte man entweder nachsichtig sein oder auf ein aktuelles Modell umsteigen. Man muss auch bedenken, dass mit den aktuellen Headerdateien alle Funktionen, Klassen und Objekte im Namensraum std stehen. Also entweder std:: davor schreiben oder using-Direktiven benutzen.
  5. Klotzkopp

    Schleifen

    Das ist der logische oder-Operator. Der verknüpft zwei Ausdrücke und hat den Wert true, wenn mindestens einer der Operanden true ist. Übrigens wird der zweite Operand nicht mehr ausgewertet, wenn der erste schon true war. Der Rückgabewert von main wird an das System zurückgegeben. Der Wert wird dabei üblicherweise dafür genutzt, um einen Fehlerfall anzuzeigen. Eine return-Anweisung ist hier übrigens nicht zwingend notwendig, wenn man sie weglässt, wird implizit "return 0;" angenommen. Das gilt aber nur für main!
  6. Wenn du schon einen Parser hast, dann solltest du als nächstes einen Algorithmus zum Auflösen nach x formulieren. Vielleicht solltest du dich dabei zunächst auf Ausdrücke beschränken, in denen nur ein x auftaucht, damit du nur mit linearen Gleichungen zu tun hast. Sonst könnte dir auch die eine oder andere quadratische begegnen.
  7. Meine Idee: Im Windowsforum fragen, nicht im C++-Forum Verschoben.
  8. Du musst in den Projekteinstellung die "multithreaded"-Version der Laufzeitbibliothek auswählen.
  9. GetModuleHandle mit Parameter 0 sollte es tun.
  10. Mit diesen beiden Zeilen setzt du nur d_sum1 und j auf 0. Die anderen Variablen werden nicht verändert und bleiben damit uninitialisiert. Der Kommaoperator hat die niedrigste Auswertungspriorität von allen Operatoren. Es wird also zuerst die Zuweisung ausgeführt, dann der Kommaoperator. Selbst wenn das nicht so wäre - oder du den Ausdrück so klammern würdest, dass der Kommaoperator zuerst ausgeführt würde - würde nur die letzte Variable mit einem Wert belegt. Denn der Kommaoperator wertet zwar seine beiden Operanden aus, aber übrig bleibt für den Ausdruck nur rechte, und somit wird auch nur dieser das "Ziel" der Zuweisung. Du musst entweder jede Variable einzeln zuweisen oder die Zuweisungen verketten: z_sum = s_sum = d_sum = d_sum1 = 0; i = j=0;[/CODE]
  11. new und delete ist hier unnötig. Mach m_cfoScreen von einem CFont* zu einem CFont-Member.
  12. Das halte ich für den falschen Ansatz. Ich glaube auch nicht, dass das überhaupt geht. Wie wäre es denn, wenn du einfach bei Strg-1 ein Flag setzt, und wenn dann kurze Zeit später dein Strg-C in deinem Hook aufschlägt, prüfst du das Flag und legst gegebenenfalls los?
  13. Rein syntaktisch gesehen unterscheiden sich class und stuct tatsächlich nur im voreingestellten Zugriffsspezifizierer für Member und Vererbung: struct ist public, class ist private. Allerdings werden die beiden üblicherweise sehr unterschiedlich eingesetzt. Das ist aber nicht in ein paar Sätzen erklärt.
  14. Zuerst ganz allgemein: Ich wäre ziemlich sauer, wenn irgendein Hook mir den Inhalt der Zwischenablage ersetzt, wenn ich Strg-1 drücke. Je nach Programm mache ich das häufiger. Wie erkennst du denn diese Tastenkombination? Hast du getestet, ob das funktioniert? Also ich lasse immer zuerst C los, dann Strg. Aber Strg sollte doch gerade sowieso gedrückt sein. Oder legst du erst nach dem Up-Event der Strg-Taste los? Natürlich. Dein Hook läuft erst mal weiter. Das Programm hatte noch gar keine Gelegenheit, auf die Events zu reagieren, die du ausgelöst hast. Eben nicht. Strg-C und Co. sind keine "systemweiten" Tastenkombinationen, sondern einfach nur in praktisch jedem Programm drin. Wenn es da windowsseitig einen Automatismus gäbe, könntest du den ja anstatt dieser Events nutzen. Landen die Events eigentlich auch wieder in deinem Hook?
  15. Welches Servicepack von VC6?
  16. Welche Entwicklungsumgebung, welche Version, welches Servicepack?
  17. Dann hat marcom schon den richtigen Tipp gegeben: Die gesuchte Funktion (Befehle gibt es in C strenggenommen nicht) ist system, deklariert in <stdlib.h>.
  18. Zu dem Zeitpunkt gibt es noch kein Eingabefeld. Das Dialogfenster - und damit auch das Eingabefeld - wird ja erst durch den Aufruf von DoModal erstellt. Leg in der Dialogklasse eine Variable für die Bedingung an, setze sie vor DoModal und aktiviere das Eingabefeld in Abhängigkeit von dieser Variablen in OnInitDialog in der Dialogklasse. Und weil das windowsspezifisch ist und nichts mehr mit Standard-C++ zu tun hat: Verschoben nach C++: Compiler, IDEs, APIs.
  19. In C und C++ fangen Arrayindices bei 0 an, nicht bei 1. a[1] ist das zweite Zeichen.
  20. Dein Buch ist anscheinend nicht das Beste. Auf jeden Fall ist es veraltet. Es gibt keinen Standardheader namens <cstring.h>, und es gab auch nie einen. In dem Beispielcode sind auch noch andere Fehler. Nach dem aktuellen Standard könnte das Programm so aussehen: #include <iostream> #include <string> using namespace std; int main() { string strEingabe; getline(cin,strEingabe); cout<<strEingabe; }[/CODE] oder (ohne using-Direktive) [CODE]#include <iostream> #include <string> int main() { std::string strEingabe; std::getline(std::cin,strEingabe); std::cout<<strEingabe; }
  21. Wenn du std::string meinst, diese Klasse ist in <string> deklariert, ohne "c" und auch ohne ".h".
  22. Ich kenne nur <string>, <string.h> und <cstring>. Was soll denn in dieser Datei drin sein?
  23. HGLOBAL ist nur ein Handle, also ein Verweis auf den Speicher. Dieses Handle wird ungültig, wenn du das Clipboard löschst. Das ist in etwa so, wie wenn du dir die Adresse eines Hauses aufschreibst, dann das Haus abreißt und anschließend erwartest, dass das Haus wieder da ist, weil du dir ja die Adresse gemerkt hast. Du kannst die Daten über das Handle herauslesen. Mit GlobalSize kommst du an die Größe, mit GlobalLock an einen Zeiger.
  24. Der Unterscheid zwischen Klasse und Instanz ist sehr wichtig für das Verständnis der objektorientierten Programmierung. Vielleicht solltest du nochmal das eine oder andere Tutorial antun. meinst - Ja. Der Dialog ist eine Autovariable, darum ist es heikel, die Adresse irgendwo zu speichern - du kannst dann kaum mehr sicherstellen, dass jemand einen Zeiger benutzt, nachdem es den Dialog gar nicht mehr gibt. Am besten wäre es, wenn sich der Dialog in OnInitDialog beim MainFrame "anmeldet" (also seinen this-Zeiger hinterlässt) und sich in OnOK und OnCancel wieder abmeldet. Dazu braucht der Mainframe natürlich einen Member-Zeiger, in dem er sich die Adresse des Dialogs merken kann.
  25. Du willst hier keine Daten von Klasse A zu Klasse B übertragen, sondern von Instanz von Klasse A zu Instanz von Klasse B. Ist dir der Unterschied klar? Wo im Code wird dieser Dialog erzeugt?

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...