Vielen Dank für eure Mühe, leider muss ich mit dem Compilerschalter {$R+,Q+,X-} arbeiten, da funktionieren diese Varianten leider nicht, mann könnte das aber sicher umschreiben
Und wann werdet ihr Delphi lernen? {$X-} soll man in Delphi Programmen nicht verwenden. Noch einmal der
Link.
TStringList.Add() ist eine Funktion. Mit {$X-} musst du den Funktionswert zwingend abfragen.
hs.add(was) gibt den Index:Integer in der Liste
hs zurück, wo
was eingefügt worden ist. Du musst (wegen {X-}) diesen Rückgabewert abfragen. Also so:
dummy := hs.add(was).
Wenn du {$X-} kompilierst hast du in Funktionen auch keinen Zugriff auf Result (siehe frühere Hausaufgaben).
Delphi-Quellcode:
procedure absolute_haeufigkeit( satz : string; hs : TStringList );
var zeichen : char;
procedure zaehler( was : string );
var dummy, anzahl : integer;
begin
anzahl := strtointdef(hs.Values[was],0);
if (anzahl = 0) then dummy := hs.Add( was + '=1' ) else hs.Values[was] := inttostr(anzahl+1);
end;
begin
satz := Uppercase( satz );
for zeichen in satz do
if CharInSet( zeichen, ['A'..'Z'] ) then
begin
zaehler( zeichen );
if CharInSet( zeichen, ['A','E','I','O','U'] ) then zaehler( '*Vokale' ) else zaehler( '*Konsonanten' );
end;
end;