Wörter zählen
-
void __fastcall TForm1::Edit2KeyDown(TObject *Sender, WORD &Key, TShiftState Shift) { if(Key==13) { int x,counter; String Eingabe; counter=0; Eingabe=Edit1->Text; for(x=1;x<=Eingabe.Length;x++) { if (Eingabe[x]==' ') { counter++; } Label1->Visible=true; Label1->Caption=IntToStr(summe); } } }hallo kann mir einer sagen warum das obrige Prog. nicht funktioniert und könnt ihr mir den Code auch ausbessern und richtig stellen? bitte danke.
Also es geht ums Wörter zählen.
ich komm alleine nicht drauf... : (MFG
-
Hast du das schon mal versucht?
http://www.c-plusplus.net/forum/viewtopic-var-t-is-120832.html
-
nö weil
Dieser Artikel bezieht sich auf Visual C++ 6 (SP6)
ich benütz den c++ builder 3 von borland. und ich bleib auch bei dem :p
-
Ich bin mir sicher, dass man mit dem auch debuggen kann, auch man breakpoints mit ner anderen Tastenkombination setzt.
-
tzername: schrieb:
breakpoints mit ner anderen Tastenkombination setzt.
na toll
-
Was? Ist es zu schwer für dich nachzuschauen, wie man nen Breakpoint setzt? Irgenwann musst du debuggen, wenn du was größeres programmieren willst.
-
ja aber jetz noch nicht. ich wende nur befehle an die ich auch in der schule gelernt habe.
und jetzt zurück zu meinem Syntax-Problem..
Kann jmd den "Fehler" ausbessern?
mfg
-
Wie Syntaxproblem, gibts ne compilerfehlermeldung?
-
for(x=1;x<=Eingabe.Length;x++)[C++Fehler] Unit1.cpp(77): Member function must be called or its address taken.
-
Hi,
hast nicht gesagt wo das Problem GENAU lag daher hab ich einfach das hier gebastelt müsstest du allerdings anpassenint nWordCounter = 1; char *strDeinText = "Hallo Welt, aber diesmal mit einigen Leerzeichen mehr . . ."; char *strTemp; for ( int i = 0; i < strlen( strDeinText ); i++ ) { if ( strDeinText[i] == ' ' ) { nWordCounter++; //printf( "\n" ); } else { //printf( "%c", strDeinText[i] ); } } //printf( "\n\n--> %d\n\n", nWordCounter );
-
Wenn überhaupt Eingabe.length**()**

-
Blubbbbb schrieb:
Wenn überhaupt Eingabe.length**()**

danke^^ hätt ich auch selber draufkommen können
naja jetzt tut sich gar nix wenn ich auf enter drück bei edit nach der wörter eingabe...
-
bitte helfen .. is wichtig

-
LoSt schrieb:
bitte helfen .. is wichtig

Hat wieder keiner gesehen, ist aber ganz einfach. Dein Index 'x' läuft von 1 bis Eingabe.Length() - korrekt ist 0 bis Eingabe.Length()-1. Also in Zeile 11:
for( x=0; x<Eingabe.Length(); x++ )Angenommen je zwei Wörter sind durch genau ein Leerzeichen getrennt und vor dem ersten Wort und hinter dem letzten Wort befindet sich kein Leerzeichen, so ist die Anzahl der Wörter = Anzahl der Leerzeichen plus 1. Also ändere Zeile 9 noch nach:
counter=1;.. und Zeile 18 müsste doch eher
Label1->Caption=IntToStr(counter);heißen - oder?
Tipp: verwende ausschließlich lokale Variablen.
Eine sicher Alternative ist:
istringstream buf( Eingabe ); // oder ähnlich counter = distance( istream_iterator< string >( buf ), istream_iterator< string >() );erfordert includes: <sstream>, <iterator> und <algorithm>.
Die Alternative ist auch robust gegenüber führenden und endenden Leerzeichen und mehr als ein Leerzeichen zwischen zwei Wörtern.Gruß
Werner
-
löschn
-
{ if(Key==13) { int x,counter; String Eingabe; counter=1; Eingabe=Edit2->Text; for(x=0;x<Eingabe.Length();x++) { if (Eingabe[x]==' ') { counter++; } Label4->Visible=true; Label4->Caption=IntToStr(counter); } } }so hab ich es jetzt und bekomm ne "fehlermeldung":
http://www.directupload.net/images/070304/temp/945s4OXb.jpgkan mir wer helfen, damit das prog jetzt endlich funzt? danke
EDIT:
ok mit
[cpp] for(x=1;x<Eingabe.Length();x++)[/cpp]
geht es!!
danke
-
Hallo,
Fragen bezüglich des BCB solltest du auch in dem dortigen Forum stellen. Dort hätte man gewußt, dass die Zählung der AnsiStrings mit 1 beginnt.