Einzelnen Beitrag anzeigen

Blup

Registriert seit: 7. Aug 2008
Ort: Brandenburg
1.464 Beiträge
 
Delphi 12 Athens
 
#26

AW: String buchstabenweise in array einlesen

  Alt 14. Jun 2011, 12:53
Einfach an die Aufgabenstellung halten, offensichtlich soll der Umgang mit dyn. Array geübt werden:
Zitat:
Schreib ein Programm welches ein eingegebenes Wort buchstabenweise in ein dyn. Array einliest.
Delphi-Quellcode:
type
  TCharDynArray = array of Char;

function StringToDynArray(const AValue: string): TCharDynArray;
begin
  // Strings beginnen bei Index 1, Arrays bei 0 => wichtiges Lernziel
  SetLength(Result, Length(AValue));
  for i := 0 to Length(Result) - 1 do
    Result[i] := AValue[i + 1];
end;
Zitat:
Nach Eingabe eines Buchstabens soll ausgegeben werden wie oft dieser Buchstabe im eingegebenen Wort vorkommt.
Delphi-Quellcode:
// Array-Parameter immer als "const" oder "var" übergeben, sonst wird beim Funktionsaufruf eine Kopie angelegt
function GetBuchstabenAnzahl(const ACharDynArray: TCharDynArray; AValue: Char): Integer;
begin
  Result := 0;
  for i := 0 to Length(ACharDynArray) - 1 do
  begin
    if ACharDynArray[i] = AValue then
      Result := Result + 1;
  end;
end;

procedure TForm1.Button1Click(Sender: TObject);
var
  a: TCharDynArray;
  s: string;
  n: Integer;
begin
  // Text der durchsucht werden soll
  s := edit1.text;
  if Length(s) = 0 then
  begin
    MessageBox('Geben Sie einen Text an der durchsucht werden soll!', Caption);
    Exit;
  end;
  a := StringToDynArray(s);

  // Buchstabe der gesucht wird
  s := edit2.text;
  if Length(s) = 0 then
  begin
    MessageBox('Geben Sie einen Buchstaben an der gesucht werden soll!', Caption);
    Exit;
  end;
  
  if Length(s) > 1 then
  begin
    MessageBox('Geben Sie nur einen Buchstaben an der gesucht werden soll!', Caption);
    edit2.text := '';
    Exit;
  end;

  n := GetBuchstabenAnzahl(a, s[1]);
  s := Format('Der Buchstabe %s ist %d mal enthalten.', [s, n]);
  MessageBox(s, Caption);
end;
  Mit Zitat antworten Zitat