-
Gesamte Inhalte
9912 -
Benutzer seit
-
Letzter Besuch
-
Tagessiege
3
Inhaltstyp
Profile
Forum
Downloads
Kalender
Blogs
Shop
Alle Inhalte von Klotzkopp
-
c++ int main function in delphi
Klotzkopp antwortete auf Black_Panda's Thema in Delphi/RPG+CL/Sonstige
Das ist keine ausreichende Problembeschreibung. Am Anfang? Es sollte wohl in etwa so aussehen (Ohne Gewähr, ich kann das hier nicht testen): if ( ParamCount = 2 ) And ( ( AnsiCompareText( ParamStr(1), '/regserver' ) = 0 ) Or ( AnsiCompareText( ParamStr(1), '/unregserver' ) = 0 ) Or ( AnsiCompareText( ParamStr(1), '-regserver' ) Or AnsiCompareText( ParamStr( 1 ), '-unregserver' ) = 0 ) ) then begin // Ignore me end; else if ( ParamCount <> 3 ) then begin WriteLn( 'Invalid commandline.' ); WriteLn( 'noahcopy <OldVer> <NewVer>' ); WriteLn( 'noahcopy 31 36' ); end;[/code] -
Weil du mit 8 Bit nur 2^8 - 2 = 254 Hosts adressieren könntest. Mit 9 Bit sind es 2^9 - 2 = 510. Das reicht.
-
c++ int main function in delphi
Klotzkopp antwortete auf Black_Panda's Thema in Delphi/RPG+CL/Sonstige
Statt argc kannst du die Funktion ParamCount benutzen, statt argv ParamStr. stricmp ist ein Stringvergleich ohne Berücksichtigung von Groß-/Kleinschreibung, das Delphi-Äquivalent wäre wohl AnsiCompareText. Das ! vor stricmp ist gleichbedeutend mit stricmp( ..., ... ) == 0. -
Dieses Makro ermittelt die Anzahl der Elemente eines Arrays. In Delphi gibt es dafür eine fertige Funktion: Length. Um deine Frage allgemein zu beantworten: Kommt drauf an Du musst dir ansehen, wie das Makro benutzt wird. Wenn das Makro einen Ausdruck erzeugt, dessen Wert benutzt wird, brauchst du eine Funktion. Wenn nicht, eine Prozedur.
-
Bitte keine Crossposts. Ein Thema, ein Thread. Hier geht's weiter: http://forum.fachinformatiker.de/basic/114863-vb-c.html
-
C/C++ Reference Auch wenn's falsch ist?
-
Wissen wir auch nicht, weil wir nicht wissen, wo deine Interessen liegen. Wissen wir nicht, weil wir nicht wissen, wo deine Stärken liegen. Meine Meinung: Bevor du weitere Beiträge schreibst, lies dir doch mal die Boardregeln durch. Thread mit Verweis auf selbige geschlossen (Crosspost). Bitte.
-
Hier ist wohl alles gesagt -> Thread geschlossen.
-
Dev-C++ unter Vista Kompilieren
Klotzkopp antwortete auf Odaiko's Thema in C++: Compiler, IDEs, APIs
Vermutlich an Dev-C++. Dein Code ist jedenfalls in Ordnung. Ich rate dir, von Dev-C++ die Finger zu lassen. Diese IDE hat ziemlich viele Bugs und wird seit 3 Jahren nicht mehr weiterentwickelt. Es gibt bessere kostenlose IDEs, z.B. Code::Blocks, Microsoft Visual C++ Express Edition oder Eclipse mit CDT. -
Du gehst das Problem falsch an. Programmieren bedeutet nicht, die Lösung für eine Unzahl möglicher Problemstellungen zu wissen oder im Internet finden zu können. Programmieren heißt, ein Problem soweit zu zerlegen und zu abstrahieren, dass man einen Algorithmus formulieren kann, der das Problem löst. Den kann man dann in eine Programmiersprache übersetzen. Da hilft kein Crash-Kurs. Und wenn du gar keinen Ansatz findest, dann überleg dir doch einfach mal, wie du so ein Problem selbst, ohne Programm lösen würdest. Was würdest du tun, wenn du eine lange Liste von Zahlen hast, und den größten Wert herausfinden musst?
-
Warum drückst du nicht einfach Windowstaste + L? Das ist ein sinnloses Unterfangen. Du kannst dein eigenes Programm nicht annähernd so sicher machen wie die Loginfunktion, die in Windows bereits eingebaut ist. Wenn du wirklich glaubst, dass der Taskmanager ein "Problem" ist, oder dass der Taskmanager das einzige Programm ist, das in der Lage ist, andere Prozesse zu beenden, dann hast du noch nicht mal an der Oberfläche von "Sicherheit" gekratzt. Das ist albern. Die Lösung, die du suchst, gibt es schon. Dein Programm macht den Rechner nicht sicherer, sondern öffnet allenfalls neue Schwachstellen und Angriffspunkte. Schon geschehen.
-
Es fehlt noch ein wenig mehr. In der Aufgabenstellung steht etwas von "beiden Filialen" Üblicherweise vergleicht man die eingegebenen Werte in einer Schleife mit dem Min- bzw. Maxwert, und passt diesen an, wenn der Wert kleiner bzw. größer ist. Du kannst das auch gleich bei der Eingabe machen. Deine Arrays monate und jahr sind übrigens zu groß, du brauchst nur 12 Strings, nicht 13. Und das jahr-Array ist überflüssig, wenn in jedem Element sowieso dasselbe drinsteht
-
Richtig. Auch richtig. Nein, es wird wirklich nur ein Zeiger übergeben. Der Typ eines Stringliterals ist (const) char *. Dieses Verhalten hat C++ von C übernommen. In C gibt es keinen Datentyp für Strings. Statt dessen benutzt man char-Arrays, bzw. Zeiger auf das erste Zeichen eines solchen Arrays. Das Ende des Strings wird durch ein besonderes Terminierungszeichen markiert ('\0'). Bei Stringliteralen wird diese Nullterminierung automatisch mit eingebaut. Dein "Hallo"-Literal ist also 6 Zeichen lang. Da man immer nur Zeiger herumreicht, muss man sich um die Verwaltung des dazugehörigen Speichers selbst kümmern. In deinem Beispielprogramm ist das kein Problem, weil Stringliterale während der gesamten Programmlaufzeit gültig sind. Bei jeder anderen Art von Zeiger hättest du Recht. Hier greift eben die Sonderbehandlung für char*. Der operator<< geht bei char* davon aus, dass ein nullterminierter String ausgegeben werden soll. Also wird solange Zeichen für Zeichen ausgegeben, bis die Endmarkierung erreicht ist.
-
Nein, das ist Blödsinn. Die Aufrufparameter stehen in argv[1] und argv[2], wenn denn welche angegeben wurden (in argv[0] steht der Name deines Programms). Ob das der Fall ist, kannst du am Wert von argc erkennen. Ich würde dafür auch keine char-Arrays deklarieren, sondern direkt mit argv arbeiten. Oder hast du vor, die Strings zu ändern?
-
Vergleich doch mal den Formatstring im Beispiel mit deinem. Die 10 steht da nicht zum Spaß drin
-
Der Parameter number wird benutzt, um auf das Attribut Objects dieser Instanz der Adress-Klasse zuzugreifen. Objects könnte ein Array, ein Zeiger oder eine Klasse mit überladenem []-Operator sein (z.B. std::vector). Der Rückgabewert dieses []-Operators wird dann in daten* umgewandelt, wobei daten eine Unterklasse einer anderen Klasse ist. Vermutlich stecken in Objects Zeiger auf eine Oberklasse von daten. Jedenfalls ergibt dieser Operatoraufruf einen Zeiger auf ein Objekt einer Klasse, die eine Methode VnameAusgabe hat. Diese Methode wird dann auch aufgerufen. Das Ergebnis dieses Aufrufs könnte ein String sein, der wird dann zurückgegeben. Oder es könnte etwas sein, dass sich in String konvertieren lässt. Das Ganze geht übrigens in die Hose (undefiniertes Verhalten), wenn Objects[number] kein daten* ist. Überhaupt ist die Verwendung von dynamic_cast ein Indiz für ein kaputtes Design. Was Sinn und Zweck des Ganzen ist, kann man ohne genauere Kenntnis des restlichen Codes nur vermuten.
-
Hier muss das & weg. Hier auch. Tabellarisch heißt einfach nur, dass die Daten in Zeilen und Spalten organisiert sind. Wie du das verteilst, bleibt dir überlassen.
-
Genau das ist damit gemeint. Du musst für die Teilaufgaben eigene Funktionen anlegen. Eigentlich nicht. Du versuchst immer noch, 12 Umsatzwerte in einer einzigen int-Variablen abzulegen. Am Ende steht nur noch der Wert für Dezember in der Variablen umsatz, alle anderen Eingaben sind weg. Die Werte in einer Schleife wieder ausgeben? Dazu müsstest du natürlich erst einmal Werte zum Ausgeben haben. Bisher hast du immer noch nur einen einzigen
-
Das hast du schön abgeschrieben. Bist du noch nicht auf die Idee gekommen, dass der Sinn dieser Aufgabe ist, dass du das selbst machst? Mit einer etwas konkreteren Problembeschreibung als "ich kann nicht" kommst du hier viel weiter.
-
Weder noch. Ein Zeiger ist ein Zeiger. Auf bestimmten Plattformen mag ein Zeiger so groß sein wie ein double oder long, aber die interne Repräsentation ist nicht festgelegt. Richtig. Das nennt sich Zeigerarithmetik. Ich weiß nicht, was du mit "Arrayzeiger" meinst, aber wir haben hier keinen Zeiger im Code, nur ein Array. Der Bezeichner des Arrays selbst ist kein lvalue, und auch eine Konvertierung in einen Zeiger bringt hier nichts, weil die auch keinen lvalue ergibt. Der Inkrementoperator braucht aber einen lvalue-Operanden.
-
Und das heißt konkret? Und es hätte den angenehmen Nebeneffekt, dass du es nicht mehr selbst machen müsstest, stimmt's? Das ist aber sicher nicht Sinn der Sache. Hier eine Liste der Fehler, ohne Anspruch auf Vollständigkeit: 1) umsatz_monat ist ein Array von 12 char, also 12 Einzelzeichen. Du versuchst aber, da 12 Zeichenketten reinzustecken, das kann nicht funktionieren. In C ist eine Zeichenkette ein nullterminiertes Array von char, oder ein Zeiger auf dessen erstes Zeichen. Wenn du also ein Array von Zeichenketten brauchst, brauchst du ein zweidimensionales char-Array, oder ein Array von char-Zeigern. Da die Strings hier konstant sind, währen Zeiger auf Stringliterale wohl besser. 2) Mit Hochkommas kennzeichnet man Einzelzeichenliterale. 'Januar' ist Unfug, das ist eine Zeichenkette, die muss in Anführungszeichen eingeschlossen werden. 3) Deine Schleife läuft von 1 bis 12, dein Array geht aber von 0 bis 11. 4) Der Bezeichner umsatzmonat ist nicht deklariert. Und falls du umsatz_monat meinst: Auch umsatz_monat++ ist Unfug. umsatz_monat ist ein Array, das hat keinen Inkrementoperator. 5) Du kannst nicht 12 Werte in einer einzigen int-Variablen speichern. Ist dir klar, was in der Aufgabenstellung mit "separatem Modul" gemeint ist?
-
Glück gehabt. War zu erwarten, dass dir das um die Ohren fliegt, aber die Begründung ist totaler Blödsinn. Du löscht nichts aus dem Vector. Ja, das ist das Schöne bei undefiniertem Verhalten. Du kannst dich nicht darauf verlassen, dass es auf eine bestimmte Art und Weise abstürzt, du kannst dich nicht mal darauf verlassen, dass es überhaupt abstürzt (siehe dein erstes Beispiel). Wie gesagt, du löscht nichts aus dem Vector. std::vector::push_bask legt eine Kopie des Objekts im Vector ab. Das Problem ist, dass du den Destruktor einer Autovariablen (TCS_temp) explizit aufrufst. Dasselbe passiert aber auch automatisch (und damit zum zweiten Mal), wenn das Objekt aus dem Scope läuft. Solange du dein Objekt nicht mit placement-new angelegt hast, gibt es überhaupt keinen Grund, den Destruktor aufzurufen. Autovariablen tun das von allein, Objekte im Freispeicher musst du mit delete zerstören. Was immer du dir dabei gedacht hast, es ist Quatsch.
-
Unter Eclipse 2 .cpp Dateien kompilieren
Klotzkopp antwortete auf Leitzelmaster's Thema in C++: Compiler, IDEs, APIs
Hier wäre eine bessere Fehlerbeschreibung als "ich bekomms aber nicht gebacken" hilfreich. Was genau passiert denn? Das sollte von ganz allein gehen. Natürlich brauchst du in tester.cpp eine Includedirektive für hi24.h. Auch hier wäre eine genaue Problembeschreibung (Fehlermeldung usw.) hilfreich. Klar. Schreib ein Eclipse-Plugin dafür. Eclipse kann im Prinzip alles. Ich weiß nicht, welches Plugin du gerade für C++ benutzt, aber ich vermute mal, es ist CDT. Das ist maßgenscheidert für die GNU Toolchain, aber es ist sicherlich möglich, so etwas auch für den VC-Compiler zu schreiben. Möglicherweise gibt es so etwas auch schon. Das wird sicher nicht ausreichen. -
grauwert[j][0] ist, wie du an deinem Code sehen kannst, ein fftw_complex. Das wiederum ist ein double[2]. Arrayparameter werden in C und C++ aber als Zeiger übergeben. Du willst doch gar keinen Zeiger ausgeben. Du willst doch die beiden double-Werte. Die kannst du mit grauwert[j][0][0] bzw. grauwert[j][0][1] und %f ausgeben.