Alle Beiträge von Klotzkopp
-
Anfängerfehler: dynamische Arrays
Wird ja auch. Der neu allokierte Speicher wird aber zuerst dem Zeiger pDummy zugewiesen, damit der bestehende Array kopiert werden kann. Der Schleifenkörper besteht nur aus einer einzigen Anweisung: pDummy=pAnlagen; Der Rest des if-Blocks, und damit auch die Erhöhung von iSize, steht außerhalb der Schleife. Das for hat keine geschweiften Klammern, dadurch geht der Schleifenkörper nur bis zum nächsten Semikolon.
-
Zeitangaben der Beiträge
Jou, hab gar nicht daran gedacht, das zu versuchen. Danke!
-
Zeitangaben der Beiträge
Hallo Admins, Wenn Eure Server nicht gerade irgendwo auf den Britischen Inseln stehen, dann ist das: "Alle Zeitangaben in WEZ." vielleicht noch nicht ganz richtig
-
Anfängerfehler: dynamische Arrays
Diese Schleife wird beim ersten Mal gar nicht durchlaufen, weil iSize 0 ist, und die Schleifenbedingung i<iSize lautet. Nein, das ist kein Problem, ein delete auf einen NULL-Zeiger bewirkt gar nichts.
-
Anfängerfehler: dynamische Arrays
Du solltest erst die Struktur füllen und danach den Index inkrementieren.
-
Sound unter C++
Vielleich solltest Du bei nosound Klammern angeben Hat Dich der Compiler nicht gewarnt?
-
Komisches Zeichen vor Ausgelesenem!!!
<STRONG> /* Falls ich schon eine Datei durchsucht habe, ist nScnt > 0, da ich mit jedem Wort nScnt erhöhe. Folgendes mache ich, damit die Wörter die ich bereits in die index.tmp.txt geschrieben habe (welche ich am ende in index.txt umbenannt habe), auch weiterhin in der Datei stehen, und der Rest nur angehängt wird */ if(nScnt>0) { nD = 2; while(nD!=EOF) { nD = fgetc(FX); szAusgelesenes[0] = nD; fwrite(szAusgelesenes, sizeof(char), 1, FW); } fclose(FW); fclose(FX); FX = fopen(chB, "r"); FW = fopen(chA, "a+"); }[/code]</STRONG> Hier liegt der Fehler. Wenn fgetc EOF (-1) zurückliefert, schreibst Du trotzdem noch ein Zeichen in die Datei. Dabei brichst Du den int, den fgetc geliefert hat, auf einen unsigned char herunter, so dass 255 übrig bleibt, was dem Y mit zwei Punkten entspricht. Besser wäre: while( EOF != ( nD = fgetc(FX) ) ) {... Dann kannst Du Dir auch die Vorbelegung von nD sparen. Ach ja, anstelle von fclose und anschließendem fopen kannst Du auch einfach fseek(FX, 0, SEEK_SET) benutzen.
-
Teilstring in String finden
Die Parameter von basic_string::substr sind nicht Von,Bis sondern Von,Anzahl! Versuchs mal mit l_searchString_s = l_completeString_s.substr(l_completeString_s.find("~",0)+1,l_completeString_s.size() - l_completeString_s.find("~") -1 ); Falls das nicht hilft, setz mal die -1 am Ende auf -2. Kann ja sein, dass l_completeString_s schon ein nicht druckbares Zeichen am Ende hat. <FONT COLOR="#a62a2a" SIZE="1">[ 19. Dezember 2001 15:25: Beitrag 3 mal editiert, zuletzt von Klotzkopp ]</font>
-
Teilstring in String finden
Vielleicht hängt noch ein Leerzeichen hinten dran?
-
Teilstring in String finden
Nein, eigentlich nicht. Gib doch einfach mal die Strings direkt vor dem Aufruf von find aus.
-
Teilstring in String finden
cout interpretiert den Rückgabetyp von basic_string::find anscheinend als unsigned. 4294967295 ist FFFFFFFF, was -1 bei einem vorzeichenbehafteten Typ entspricht.
-
Ausgabe von Umlauten???
Das liegt daran, dass Dein Editor ANSI benutzt, die Konsole aber ASCII. Und die Codes für Umlaute sind in diesen beiden Codierungen unterschiedlich. Wenn Du Strings direkt ausgeben willst, dann kannst Du statt der Umlaute Escape-Sequenzen benutzen: ä \x84 ö \x94 ü \x81 Ä \x8e Ö \x99 Ü \x9a ß \xe1 z.B. printf( "St\x94rung!" ); Wenn Du eingelesene ANSI-Strings auf der Konsole ausgeben willst, dann könntest Du sowas machen: for( char* p= pAnsiString; *p; p++ ) { switch(*p) { case 'ä': *p = 0x84; break; case 'ö': *p = 0x94; break; // usw. default: break; } }[/code]
-
Teilstring in String finden
Jau, schon klar. Ich wollte mit dem Code nur zeigen, dass in den Strings nicht das stehen kann, was Kai als Beispiel angeführt hat, weil sonst 24 und eben nicht -1 rauskommen würde.
-
Teilstring in String finden
string s1( "01-12-06 15:39:32.465 0 Connecting to DB" ); string s2( "Connecting to DB" ); int i = s1.find( s2 );[/code] Da kommt bei mir 24 raus. Setzt doch mal einen Breakpoint auf die Zeile mit dem find, und prüf nach, ob in den Strings wirklich das drin steht, was drin stehen sollte. <FONT COLOR="#a62a2a" SIZE="1">[ 19. Dezember 2001 13:00: Beitrag 1 mal editiert, zuletzt von Klotzkopp ]</font>
-
Teilstring in String finden
<BLOCKQUOTE><font size="1" face="Verdana, Arial, Helvetica, sans-serif">Zitat:</font><HR>Original erstellt von Poldi: <STRONG>du mußt in der klammer mit angeben, wo er anfangen soll zu suchen.</STRONG> Nein, der zweite Parameter hat den Default-Wert 0. size_type find(const basic_string& str, size_type pos = 0) const;
-
Teilstring in String finden
Stimmt die Groß-/Kleinschreibung? Poste doch mal ein Beispiel für l_completeString_s und l_searchstring_s, das nicht gefunden wird. <FONT COLOR="#a62a2a" SIZE="1">[ 19. Dezember 2001 12:04: Beitrag 1 mal editiert, zuletzt von Klotzkopp ]</font>
-
VC6: Linker Error....
Verschieb die Implementierung von VAtoi in die Datei DataTimeEdit.cpp, und lass in DataTimeEdit.h nur die Deklaration stehen: bool VAtoi(CString str, int &res); Das gleiche solltest Du mit allen Funktionen machen, deren Implementierungen in .h-Dateien stehen, um zukünftige Linkerfehler zu vermeiden.
-
Teilstring in String finden
Enthält l_searchstring_s mehrere Suchwörter? <FONT COLOR="#a62a2a" SIZE="1">[ 19. Dezember 2001 11:31: Beitrag 2 mal editiert, zuletzt von Klotzkopp ]</font>
-
Word Makro für Syntax Highlighting?
Das erweiterte Syntax-Highlighting von Visual Assist bleibt beim Copy/Paste nach Word erhalten. Dann müsstest Du Dich nur noch um die Kommentare kümmern. Geht aber m.W. nur mit VC++. Eine 30-Tage-Testversion gibts hier: http://www.wholetomato.com/
-
VC6: Linker Error....
Implementierst Du diese Funktion in einer Headerdatei? Wenn ja, dann nimm sie da raus. Ansonsten füg mal den Linker-Optionen /FORCE:MULTIPLE hinzu. Das kuriert aber nur die Symptome, und ist keine Lösung des Problems.
- Shiften
-
Sonderzeichen in einer Konsolenanwendung ausgeben
<BLOCKQUOTE><font size="1" face="Verdana, Arial, Helvetica, sans-serif">Zitat:</font><HR>Original erstellt von Poldi: <STRONG>probiers mal mit printf printf("%c\n",310);</STRONG> Der ASCII-Code geht nicht bis 310. Das Ergebnis ist "6", genau wie bei printf("%c\n",54); <FONT COLOR="#a62a2a" SIZE="1">[ 18. Dezember 2001 10:03: Beitrag 1 mal editiert, zuletzt von Klotzkopp ]</font>
-
Sonderzeichen in einer Konsolenanwendung ausgeben
Wahrscheinlich weist Du Ganzzahlwerte mit führender Null zu, die werden als Oktalzahlen interpretiert. 310 (oktal) = 200 (dezimal). int a = 0310; int a = 200; int a = 0xC8; sind gleichbedeutend.
-
ClearScreen
Das Bildschirmlöschen unter C ist ohnehin so eine Sache. C kennt keine Shells oder Konsolen, deshalb gibt es immer nur plattformabhängige Lösungen. Je nach Plattform kann es sein, dass es eine clrscr()-Funktion gibt. Die wird dann in der Regel in der conio.h deklariert. Das ist weder ein ANSI- noch ein POSIX-Standard, und Microsoft kennt das auch nicht. In einer Konsolenanwendung unter Windows kann man aber z.B. mit system( "cls" ); den Bildschirm löschen. Siehe auch: http://support.microsoft.com/default.aspx?scid=kb;EN-US;q99261
-
ClearScreen
<BLOCKQUOTE><font size="1" face="Verdana, Arial, Helvetica, sans-serif">Zitat:</font><HR>Original erstellt von Woodstock: <STRONG>cout << "\033[2J";</STRONG> Ich befürchte, das wird nur mit geladenem ANSI.SYS funktionieren.