Autor |
Beitrag |
Od3on
Hält's aus hier
Beiträge: 7
|
Verfasst: Mi 18.05.05 16:17
also, ich will ein progi schreiben, welches konsonanten, vokale und zahlen zählt und diese dann anzeigt.
brauche also button, label, edit.
ich hab mir überlegt, dass man dies mit array machen kann, leider weiß ich dann nicht, wie ich weiter machen soll...
könnt ihr mir da helfen?
|
|
jasocul
      
Beiträge: 6393
Erhaltene Danke: 147
Windows 7 + Windows 10
Sydney Prof + CE
|
Verfasst: Mi 18.05.05 16:22
Das Edit nimmst du zur Eingabe des Strings?
Beim Button willst du das prüfen?
Falls das so ist, kannst du einfach beim ButtonClick-Ereignis den Inhalt des Edit.Text in eine Stringvariable schreiben.
Diese kannst du dann wie ein Array durchlaufen. Allerdings fängst du bei 1 (eins) and und hörst bei Length(StringVariable) auf.
Je nachdem, was für ein Zeichen du dann hast, erhöhst du einen deiner Zähler (vokale, konsonanten, zahl).
|
|
Od3on 
Hält's aus hier
Beiträge: 7
|
Verfasst: Mi 18.05.05 16:27
jo, ist so wie du es sagst, aber warum fang ich bei eins an, und wie lass ich es "wie ein Arry durchlaufen"?
|
|
F34r0fTh3D4rk
      
Beiträge: 5284
Erhaltene Danke: 27
Win Vista (32), Win 7 (64)
Eclipse, SciTE, Lazarus
|
Verfasst: Mi 18.05.05 16:29
Delphi-Quelltext 1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23:
| function IsVokal(Buchstabe: String): boolean; const vokale: array [1..5] of string = ('a', 'e', 'i', 'o', 'u'); var i: integer; begin result := false; for i := 1 to high(vokale) do if lowercase(Buchstabe[1]) = vokale[i] then result := true; end;
function IsKonsonant(Buchstabe: String): boolean; const konsonanten: array [1..21] of string = ('b', 'c', 'd', 'f', 'g', 'h', 'j', 'k', 'l', 'm', 'n', 'p', 'q', 'r', 's', 't', 'v', 'w', 'x', 'y', 'z'); var i: integer; begin result := false; for i := 1 to high(konsonanten) do if lowercase(Buchstabe[1]) = konsonanten[i] then result := true; end; |
Delphi-Quelltext 1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13:
| var str: string; i, konsonanten, vokale: integer; begin str := edit1.text; for i := 1 to length(str) do begin if iskonsonant(str[i]) then inc(konsonanten); if isvokal(str[i]) then inc(vokale); end; end; |
|
|
jasocul
      
Beiträge: 6393
Erhaltene Danke: 147
Windows 7 + Windows 10
Sydney Prof + CE
|
Verfasst: Mi 18.05.05 16:31
Strings kann man wie ein Array behandeln. Im Grunde sind diese wie ein Array of Char.
Aus traditionellen Gründen (bei Pascal steht/stand im Byte 0 die Länge des Strings) und zur Kompatibilität wird bei Strings nicht bei Null angefangen, sondern bei eins.
Ein Beispiel von F34r0fTh3D4rk siehst du ja. Auch wenn ich es anders machen würde. Aber das ist hier nicht das Thema.
|
|
Od3on 
Hält's aus hier
Beiträge: 7
|
Verfasst: Mi 18.05.05 16:36
und wie würdest du es so machen?? 
|
|
F34r0fTh3D4rk
      
Beiträge: 5284
Erhaltene Danke: 27
Win Vista (32), Win 7 (64)
Eclipse, SciTE, Lazarus
|
Verfasst: Mi 18.05.05 16:37
so wie ich oben ?
konsonanten ist dann die anzahl der konsonanten und vokale, die anzahl der vokale 
|
|
Od3on 
Hält's aus hier
Beiträge: 7
|
Verfasst: Mi 18.05.05 16:42
echt??
hätte ich nicht gedacht
könnte man noch was anderes nehmen, wo man den text einfügt?
|
|
crakos
      
Beiträge: 195
D2k5 Pers
|
Verfasst: Mi 18.05.05 16:53
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25: 26: 27: 28: 29: 30: 31: 32: 33: 34: 35:
| procedure TForm1.Button1Click(Sender: TObject); var i:integer; EditFeld:string; Zahlen:integer; reinText:string; Vokale:integer; Konsonanten:integer;
begin Zahlen:=0; Vokale:=0; EditFeld:=edit1.Text; for i:=1 to length(EditFeld) do if (ord(EditFeld[i])<=90) and (ord(EditFeld[i])>=65) or (ord(EditFeld[i])<=122) and (ord(EditFeld[i])>=97) or (ord(EditFeld[i])<=57) and (ord(EditFeld[i])>=48) then reinText:=reinText+EditFeld[i]; reinText:=uppercase(reinText); for i:=1 to length(reinText) do if (ord(reinText[i])>=48) and (ord(reinText[i])<=57) then Zahlen:=Zahlen+1; for i:=1 to length(reinText) do if (reinText[i] in ['A','E','I','O','U']) then Vokale:=Vokale+1; if Zahlen+Vokale < length(reinText) then Konsonanten:=length(reinText)-Zahlen-Vokale; label3.caption:='Zahlen: '+IntToStr(Zahlen)+' Vokale: '+IntToStr(Vokale)+' Konsonaten: '+IntToStr(Konsonanten); end; |
_________________ Das Ende der Menschheit ist der Anfang der Unendlichkeit.
|
|
crakos
      
Beiträge: 195
D2k5 Pers
|
Verfasst: Mi 18.05.05 16:54
oh man, dachte hätte alles umsonst geschrieben, nur weil tele ging ^^
_________________ Das Ende der Menschheit ist der Anfang der Unendlichkeit.
|
|
jasocul
      
Beiträge: 6393
Erhaltene Danke: 147
Windows 7 + Windows 10
Sydney Prof + CE
|
Verfasst: Mi 18.05.05 16:55
Od3on hat folgendes geschrieben: | und wie würdest du es so machen??  |
etwa so:
Delphi-Quelltext 1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21:
| procedure TForm1.Button1Click(Sender: TObject); var vstr: string; i, konsonanten, vokale, deutscheSZ, zahlen, sonstige: integer; begin vokale := 0; konsonanten := 0; zahlen := 0; sonstige := 0; deutscheSZ := 0; vstr :=AnsiLowerCase(edit1.text); for i := 1 to length(vstr) do begin case vstr[i] of 'a','e','i','o','u' : inc(vokale); 'b'..'d','f'..'h','j'..'n','p'..'t','v'..'z' : inc(konsonanten); 'ä','ö','ü','ß' : inc(deutscheSZ); '0'..'9' : inc(zahlen); else inc(sonstige); end; end; end; |
ist aber nicht durchgeprüft.
|
|
crakos
      
Beiträge: 195
D2k5 Pers
|
Verfasst: Mi 18.05.05 17:09
Was bewirkt AnsiLowerCase() und was inc() ? jetzt plz net auf suche verweisen, einfach sagen.
_________________ Das Ende der Menschheit ist der Anfang der Unendlichkeit.
|
|
F34r0fTh3D4rk
      
Beiträge: 5284
Erhaltene Danke: 27
Win Vista (32), Win 7 (64)
Eclipse, SciTE, Lazarus
|
Verfasst: Mi 18.05.05 17:13
lowercase macht alle buchstaben klein und inc erhöht einen integer um eins (oder um was anderes, kann man auch mit anderen parametern aufrufen)
also sowas wie x := x + 1; nur kürzer 
|
|
crakos
      
Beiträge: 195
D2k5 Pers
|
Verfasst: Mi 18.05.05 18:03
das lowercase die buchstaben klein macht, hatte ich mir schon gedacht, von uppercase
aber was bedeutet das Ansi ?
ach und danke 
_________________ Das Ende der Menschheit ist der Anfang der Unendlichkeit.
|
|
F34r0fTh3D4rk
      
Beiträge: 5284
Erhaltene Danke: 27
Win Vista (32), Win 7 (64)
Eclipse, SciTE, Lazarus
|
Verfasst: Mi 18.05.05 18:05
dass es für die ansi zeichentabelle gilt und nicht für die ascii denke ich mal
Ich habe den Befehl noch nie benutzt, wie wäre es mit F1 ?
|
|
jasocul
      
Beiträge: 6393
Erhaltene Danke: 147
Windows 7 + Windows 10
Sydney Prof + CE
|
Verfasst: Mi 18.05.05 18:06
Einfach gesagt, werden dann auch lokale Spracheinstellungen berücksichtigt. Ohne ANSI werden die sprachlichen Sonderzeichen (bei uns die Umlaute und ß) nicht berücksichtigt.
|
|
F34r0fTh3D4rk
      
Beiträge: 5284
Erhaltene Danke: 27
Win Vista (32), Win 7 (64)
Eclipse, SciTE, Lazarus
|
Verfasst: Mi 18.05.05 18:07
Die Delphi Hilfe hat folgendes geschrieben: |
AnsiLowerCase gibt einen String zurück, der eine in Kleinbuchstaben konvertierte Kopie des angegebenen String-Wertes ist. Bei der Konvertierung wird das aktuelle Gebietsschema berücksichtigt. Diese Funktion unterstützt Multibyte-Zeichensätze (MBCS).
|
|
|
crakos
      
Beiträge: 195
D2k5 Pers
|
Verfasst: Mi 18.05.05 18:14
AH warum hab ich nur VOHER nix davon gehört. Naja nun weiss ichs auch ^^ werde es in den nächsten programmen einplanen :> thx (hab die sonder umlaute immer getrennt behandel)
_________________ Das Ende der Menschheit ist der Anfang der Unendlichkeit.
|
|