Einzelnen Beitrag anzeigen

Michael II
Online

Registriert seit: 1. Dez 2012
Ort: CH BE Eriswil
719 Beiträge
 
Delphi 11 Alexandria
 
#9

AW: Zerteilen eines String in einzelne Zeichen

  Alt 25. Jun 2021, 15:58
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;
Michael Gasser

Geändert von Michael II (25. Jun 2021 um 16:11 Uhr)
  Mit Zitat antworten Zitat