
maxim_42
Mitglieder-
Gesamte Inhalte
145 -
Benutzer seit
-
Letzter Besuch
Inhaltstyp
Profile
Forum
Downloads
Kalender
Blogs
Shop
Alle Inhalte von maxim_42
-
Das tut's so nicht. Versuchs mal hiermit: #include <stdio.h> #include <limits.h> int main() { typedef struct { unsigned LowPart; int HighPart; } LARGE_INTEGER; LARGE_INTEGER li; int idummy; int iWert=64000; li.LowPart =0xFFFFFFF0; li.HighPart=0; if(UINT_MAX-li.LowPart < iWert) { //Kompilerwarnung ist berechtigt. // Negative Werte für iWert werden // nicht berücksichtigt. li.HighPart++; //Übertrag idummy= (li.LowPart & 1) + (iWert & 1); /* Die Summe der ersten Bit sichern, weil sie gleich anschliesend rausgeschiftet werden.*/ li.LowPart >>= 1; iWert >>=1; /* Jeweils 1 nach rechts schiften, damit die Summe in 32 Bit passt.*/ li.LowPart += iWert; li.LowPart <<=1; li.LowPart+=idummy; } else { li.LowPart += iWert; } printf("li.LowPart: %i\nli.HighPart: %i\n",li.LowPart,li.HighPart); printf("iDummy: %i\n",idummy); return 0; }[/PHP]
-
"nicht genügend Speicher" abfangen
maxim_42 antwortete auf Technician's Thema in C++: Compiler, IDEs, APIs
Vieleicht hifts weiter wenn du nicht nur explizit angegebene Fehler auffängst sondern ganz zum Schluss jeden Fehler. (Frag nicht nach der Syntax; ist ne weile her das ich in c++ programmiert hab; es geht jedenfalls) In diesem cach-Block solltest du dann das Problem handeln können. -
Was DAO betrifft: Über das tabledefs-Objekt (Aufzählung) einer mdb-Datenbank kannst du für jede Tabelle in der Db das tabledef-Objekt jeweiligen Tabelle erreichen. Über das fields-Objekt (Aufzählung) dieses tabledef-Objekts wiederum, jedes einzelne field-Objekt (Spalte in der Tabelle) der Tabelle. Das field-Objekt hat eine Eigenschaft "Name" die den Spaltennamen enthält.
-
Im Gegensatz zu Feldern, die nur Elemente gleichen Typs enthalten dürfen, kann eine Collection Elemente unterschiedlichen Typs enthalten.
-
Das form_resize event ist dein Freund. Dort kannst du Code ausführen, der auf die Groessenaenderung der Darstellung reagiert. z.b. die Position einzelner Steuerelemente bestimmt. Am besten schaust du dich im Netz nach instruktiven Beispielen dazu um.
-
Quote: Const Variable = "c:\programme\programm.exe" Shell "cmd.exe /c start Variable" (ist fehlerhaft) Klar funktioniert das nicht. Wenn du Variable direkt zwischen die "" setzt. Probier doch statt dessen: dim strComString as string strComString=""c:\programme\programme.exe" shell "cmd.exe /c start " & strComString (Auf das Leerzeichen hinter start achten!) Eventuell hilft auch der Schalter /wait für das Start-Kommando weiter. Also: shell "cmd.exe /c start /wait " & strComString
-
mit gegebenem char feld[2][2] und einer Funktion void funk(char* p), kann man beispielsweise funk(feld[0]) realisieren. Das übergibt einen Zeiger auf das erste Element. funk(feld[1]) würde dann einen Zeiger auf den dritten Char übergeben.
-
Ein char** ist ein Zeiger, der auf einen Zeiger zeigt. Man kann also ein Char** als eine Schreibweise für ein Feld betrachten, dessen einzelne Elemente Zeiger sind. Im Gegensatz dazu enthält ein Char[][] keine Zeiger! - Sondern nur einzelne Char. Es wird also auch nichts anderes übrigbleiben, als ein char* in der Funktion zu übergeben.
-
Quote: Die definition deiner Funktion muß so aussehen: suche(char* eindimensional,char** zweidimensional); Ich glaub da liegst du falsch. suche(char* eindimensional,char* zweidimensional) müsste stimmen. Denn ein char[][] - Feld ist kein Array von Strings, sondern eins von chars. Genauso wie das eindimensionale Array. Die Zweidimensionalität bestimmt lediglich die Reienfolge in der die Chars im Speicher liegen.
-
Also ich würde dafür ne Funktion schreiben: verkürzt: { for(i=0;i<max;i++){ . . for(ii=0;ii<max2;ii++){ . . . if(bFound) return } }
-
Hi ein beliebter Trick ist folgender: ping -n 61 localhost > NUL Das Pingt den eigenen Rechner 61 mal an. Ein Ping dauert ungefähr eine Sekunde. Das ganze braucht kaum Resource. Um die Anzeige zu unterdrücken, wird sie auf NUL umgeleitet. Hoffe es hilft
-
Schleifenprobleme (war: C-Dreck, kann mir einer helfen??)
maxim_42 antwortete auf geloescht_saschabu's Thema in C und C++
@goos gemeint ist doch sicher while(abbrechen== 0) oder? Mit abbrechen = 0 wird die Schleife nie durchlaufen! -
Das Ganze ist einigermaßen rätselhaft. Die eleganteste Lösung ist wahrscheinlich nach std::cin>>weiter die Anweisung std::cin.ignore(); einzufügen. Damit wird das nächste Zeichen auf dem istream ignoriert.
-
Ja, merkwürdig, ich bin auch nicht sicher ob, meine Vorstellung woran das liegt richtig war. Mit etwas Zeit ist es bestimmt interessant das Ganze mal zu debuggen. Dann hat man die entscheidenden Größen im Blick und kann sehen was passiert. Schon probiert?
-
Der Grund ist wohl, dass cin.getline nicht blockiert. Im getline versucht was vom Stream zu lesen, und wenn es da nichts gibt kommt sie sofort zurück. Folgendes sollte laufen: #include <iostream> int main() { char Person[21], Weiter, c; do { std::cout << "Einen Namen eingeben: "; std::cin>>c;//cin blockiert bis zum Enter std::cin.putback(c);// c zurück auf den Stream std::cin.getline(Person, 21); std::cout << Person; std::cout << std::endl << "Weiter (j/n)? "; std::cin >> Weiter; } while (Weiter == 'j'); return 0; }
-
mir ist unklar was du mit dem pufffer bezweckst, aber abgesehen davon, kannst du dir i sparen indem du weiter mit 0 initialisierst, und statt if(i>1) if(weiter) schreibst. Ich glaub allerdings, dass ich nicht so ganz verstanden hab, was du genau erreichen willst.
-
@orfi Wie unterscheidet sich den ein auto_ptr von einem pointer mit "garbage collector"? Arbeitet ein garbage collector nicht so, dass er für Objekte die nicht mehr erreichbar sind den Destruktor aufruft? Und tut das nicht auch der auto_ptr für sein Objekt? sehr interessiert... max
-
Wenn in C++ programmiert werden soll, und die Rückgabe eines Pointers ok ist, kann man das Ganze doch recht einfach halten: #include <iostream> #include <string.h> class Kunde{ private: char m_name[30]; public: Kunde(const char* const name); const char* const name() const; void name( const char* const newName); };//class Kunde Kunde::Kunde(const char* const name){ strcpy(m_name, name); } const char* const Kunde::name() const{ return m_name; } void Kunde::name( const char* const newName){ strcpy(m_name, newName); } int main( void ){ Kunde einKunde("Heinz Dau"); std::cout<<"Der Kunde "<<einKunde.name()<<" hat jetzt "; einKunde.name("Heinz Gau"); std::cout<<"den Namen "<<einKunde.name()<<std::endl; return 0; }
-
Du kannst ja mit der Felddefinition einen definierten Anfangszustand schaffen. (Die Definition schafft den Zustand). Dieser Zustand wird veraendert wenn in das Feld geschrieben wird. Du musst also pruefen ob sich das Feld im Ausgangszustand befindet. char Feld[FELDLAENGE]={'\0'}; if(! (Feld[0])){ cout<<"Feld ist noch leer!"; } Für Felder anderer Datentypen ergeben sich natürlich andere Notwendigkeiten.
-
@Klotzkopp: Übel, übel; einen Stream als Kopie zu übergeben! Besser void caIntegerList::out(ofstream& Index)
-
habs glatt übersehen!
-
@klotzkopp In der Schleife muss man nZahl nur bis Wurzel nZahl laufen lassen. Weiter optimieren könnte man wenn erst auf Teilbarkeit durch 2 getestet wird, und in der Schleife mit 3 begonnen und jeweils mit 2 inkrementiert wird.
-
@Poldi Soweit ich weiß, wird ein Vektor zwar automatisch größer, wenn der Platz nicht mehr ausreicht um weitere Elemente aufzunehmen, er hat aber nach der Vergrößerung nicht die genau passende Größe. Wär ja auch ziemlich uneffektiv wenn für jedes Einfügen eines Elements, der Vektor neu dimensioniert werden müsste. Soweit ich weiß, verdoppelt der Vektor in den meisten Implementierungen die Größe. Das ist einer der Gründe, der manchmal gegen die Verwendung von std::vector sprich. Ein klasse Artikel dazu hier
-
Es wird in dem Zusammenhang ja auch von Psoidozufallszahlen gesprochen. Wahrhaftig zufälliges Verhalten lässt sich mit einer deterministischen Maschine wohl gar nicht erreichen.
-
Ja,sicher Netware Loadable Modules. Allerdings waren meine Probleme Compilerspezifisch und betrafen wahrscheinlich die Reihenfolge der #include. Ich bekam unsinnige Fehlermeldungen in nicht selbst erstelltem Code. Mittlerweile hab ich 'ne zumindest vorläufige Lösung gefunden. Aber Danke für den link.