Noch ein Tip:
Es ist sinnvoll solche Aufgaben auf mehrere Prozeduren und auch Funktionen zu verteilen. Denn dann ist der Code viel übersichtlicher, du kannst eine einmal programmierte Prozedur oder Funktion immer wieder verwenden und Fehler sind leichter auszumerzen.
Dazu ein Beispiel:
Diese Prozedur gibt zu jedem ihr übergebenen Satz die Anzahl von Konsonanten und Vokalen zurück:
Delphi-Quellcode:
procedure ZaehleVokUndKons(pSatz: String; var pnVok, pnKons: Integer);
var i:integer;
begin
pnVok := 0;
pnKons := 0;
for i:=1 to length(pSatz) do
begin
if (pSatz[i] in ['a', 'e', 'i', 'o', 'u', 'A', 'E', 'I', 'O', 'U']) then
inc(pnVok)
else if (pSatz[i] in ['a'..'z', 'A'..'Z']) then
inc(pnKons);
end;
end;
In deinem Projekt könntest du diese jetzt beliebig oft aufrufen, ohne alles nochmal tippen zu müssen. Aufgerufen würde sie beispielsweise so:
Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
var nVok,
nKons: integer;
begin
ZaehleVokUndKons(edit1.text, nVok, nKons);
edit2.text := inttostr(nVok);
edit3.text := inttostr(nKons)
end;
Noch besser wäre aber auch die Überprüfung, ob es sich bei einem Buchstaben um Vokale oder Konsonanten handelt auch "auszulagern", dazu bieten sich Funktionen an. Dann sähre das ganze so aus:
Delphi-Quellcode:
function istVokal(pChar: Char): Boolean;
begin
if pChar in ['a', 'e', 'i', 'o', 'u', 'A', 'E', 'I', 'O', 'U'] then result := true
else result := false;
end;
function istKonsonant(pChar: Char): Boolean;
begin
if (pChar in ['a'..'z', 'A'..'Z']) and (not isVowel(pChar)) then result := true
else result := false;
end;
procedure ZaehleVokUndKons(pSatz: String; var pnVok, pnKons: Integer);
var i:integer;
begin
pnVok := 0;
pnKons := 0;
for i:=1 to length(pSatz) do
begin
if istVokal(pSatz[i] )then
inc(pnVok)
else if istKonsonant(pSatz[i]) then
inc(pnKons);
end;
end;
Der Aufruf ist der selbe, wie oben.
Mir hat sowas früher im sehr geholfen, da ich mich selber auch verbessern wollte. Wenn es dich weniger interessiert dann überseh den Beitrag einfach.
Edit: Verwirrenden Bezeichner "Konst" in "Kons" geändert.