Autor Beitrag
Od3on
Hält's aus hier
Beiträge: 7



BeitragVerfasst: 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
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 6393
Erhaltene Danke: 147

Windows 7 + Windows 10
Sydney Prof + CE
BeitragVerfasst: 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 Threadstarter
Hält's aus hier
Beiträge: 7



BeitragVerfasst: 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
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 5284
Erhaltene Danke: 27

Win Vista (32), Win 7 (64)
Eclipse, SciTE, Lazarus
BeitragVerfasst: Mi 18.05.05 16:29 
ausblenden 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..5of 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..21of 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;

ausblenden 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
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 6393
Erhaltene Danke: 147

Windows 7 + Windows 10
Sydney Prof + CE
BeitragVerfasst: 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 Threadstarter
Hält's aus hier
Beiträge: 7



BeitragVerfasst: Mi 18.05.05 16:36 
und wie würdest du es so machen?? :roll:
F34r0fTh3D4rk
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 5284
Erhaltene Danke: 27

Win Vista (32), Win 7 (64)
Eclipse, SciTE, Lazarus
BeitragVerfasst: Mi 18.05.05 16:37 
so wie ich oben ?

konsonanten ist dann die anzahl der konsonanten und vokale, die anzahl der vokale :D
Od3on Threadstarter
Hält's aus hier
Beiträge: 7



BeitragVerfasst: Mi 18.05.05 16:42 
echt??
hätte ich nicht gedacht :wink:

könnte man noch was anderes nehmen, wo man den text einfügt?
crakos
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 195


D2k5 Pers
BeitragVerfasst: Mi 18.05.05 16:53 
ausblenden volle Höhe 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:
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;
  //Text aus Editfeld laden
  EditFeld:=edit1.Text;
  //Alle sonderzeichen Herrausfiltern
  for i:=1 to length(EditFeld) do
    if (ord(EditFeld[i])<=90and (ord(EditFeld[i])>=65//90=Z 65=A
    or (ord(EditFeld[i])<=122and (ord(EditFeld[i])>=97//122=z 97=a
    or (ord(EditFeld[i])<=57and (ord(EditFeld[i])>=48)  then //57=9 48=0
      reinText:=reinText+EditFeld[i];
  //alles zu großbuchstaben machen
  reinText:=uppercase(reinText);
  // Zahlen zählen
  for i:=1 to length(reinText) do
    if (ord(reinText[i])>=48and (ord(reinText[i])<=57then
      Zahlen:=Zahlen+1;
  //Vokale Zählen
  for i:=1 to length(reinText) do
    if  (reinText[i] in ['A','E','I','O','U']) then
      Vokale:=Vokale+1;
  //Konsonanten berechnen
  if Zahlen+Vokale < length(reinText) then
    Konsonanten:=length(reinText)-Zahlen-Vokale;
  //Ausgeben
  label3.caption:='Zahlen: '+IntToStr(Zahlen)+' Vokale: '+IntToStr(Vokale)+' Konsonaten: '+IntToStr(Konsonanten);
end;

_________________
Das Ende der Menschheit ist der Anfang der Unendlichkeit.
crakos
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 195


D2k5 Pers
BeitragVerfasst: 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
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 6393
Erhaltene Danke: 147

Windows 7 + Windows 10
Sydney Prof + CE
BeitragVerfasst: Mi 18.05.05 16:55 
user profile iconOd3on hat folgendes geschrieben:
und wie würdest du es so machen?? :roll:

etwa so:
ausblenden 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
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 195


D2k5 Pers
BeitragVerfasst: 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
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 5284
Erhaltene Danke: 27

Win Vista (32), Win 7 (64)
Eclipse, SciTE, Lazarus
BeitragVerfasst: 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 :wink:
crakos
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 195


D2k5 Pers
BeitragVerfasst: 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
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 5284
Erhaltene Danke: 27

Win Vista (32), Win 7 (64)
Eclipse, SciTE, Lazarus
BeitragVerfasst: Mi 18.05.05 18:05 
dass es für die ansi zeichentabelle gilt und nicht für die ascii denke ich mal :roll:

Ich habe den Befehl noch nie benutzt, wie wäre es mit F1 ?
jasocul
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 6393
Erhaltene Danke: 147

Windows 7 + Windows 10
Sydney Prof + CE
BeitragVerfasst: 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
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 5284
Erhaltene Danke: 27

Win Vista (32), Win 7 (64)
Eclipse, SciTE, Lazarus
BeitragVerfasst: 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
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 195


D2k5 Pers
BeitragVerfasst: 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.