Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Multimedia (https://www.delphipraxis.net/16-multimedia/)
-   -   Delphi Wörter kombinieren (https://www.delphipraxis.net/101636-woerter-kombinieren.html)

Sarah_H 16. Okt 2007 20:06


Wörter kombinieren
 
Hallo :)

ich wollte fragen wie man es hinbekommt (möglichst einfach, ich habe noch nicht sonderlich viele Kenntnisse), dass jemand beliebig viele Wörter in das Programm eingibt und das Programm dann auf Knopfdruck immer zwei der Wörter zu einem neuen zusammensetzt.

Ich hoffe ihr habt das verstanden und ihr könnt mir helfen.

Danke im Vorraus.

Sarah

Whookie 16. Okt 2007 20:11

Re: Wörter kombinieren
 
Für die Wörter kannst Du eine TStringList verwenden. Random(StringList.Count) liefert dir dann einen zufälligen Index in die Liste ...

Sarah_H 16. Okt 2007 20:26

Re: Wörter kombinieren
 
Tut mir leid aber so richtig versteh ich das trotzdem noch nicht ^^*

Also ich nehme dann eine Liste wo man die Wörter als Benutzer reinschreiben kann und mit
Random(StringList.Count) gebe ich dann sozusagen den Befehl zwei Wörter rauszusuchen und dann als ein neues Wort auszugeben?
Tut mir echt leid aber ich habe wiegesagt noch keine großen Kenntnisse.

oki 16. Okt 2007 20:35

Re: Wörter kombinieren
 
Hallo,

und herzlich willkommen in der DP :dp:

Willst du nur wahrlos immer zwei Worte verbinden, oder alle Kombinationen durchspielen?
Wookis Idee mit der StringList ist fürs erste sehr gut.

Gruß oki

3_of_8 16. Okt 2007 20:40

Re: Wörter kombinieren
 
Am besten du lernst erst einmal die Grundlagen.

Wenn du das hast, weißt du auch, was Whookie meint.

Und: Willkommen in der DP. :dp:

Progman 16. Okt 2007 20:45

Re: Wörter kombinieren
 
Liste der Anhänge anzeigen (Anzahl: 1)
Hi Sarah_H,
anbei als Demo und zur Anschauung ein komplettes Project, dass du in deinem Delphi öffnen kannst und dir anschauen, wie es funktioniert.

Sarah_H 16. Okt 2007 20:51

Re: Wörter kombinieren
 
Vielen dank für eure schnellen Antworten :) dann fang ich jetzt am besten mal mit den Grundlagen an und arbeite mich dann zu dem Programm hin.

und danke an Progman. Das ist eigentlich genau das was ich meinte. Dann versuche ich mich jetzt mal selbst daran.

Danke ^^

marabu 16. Okt 2007 20:54

Re: Wörter kombinieren
 
Hallo Sarah,

die Eingabe der Wörter kann man interaktiv wunderbar in einer TMemo-Komponente erledigen. Du kannst aber die Wörterliste auch beim Start aus einer Textdatei in das Memo laden - Memo.LoadFromFile('Wörterliste.txt').

Beim Verbinden zweier Wörter zu einer neuen Wortschöpfung wirst du feststellen, dass Katze und Klo zu KatzeKlo wird. Du wirst dich also darum kümmern müssen, dass das angehängte Wort der Verbindung immer klein geschrieben ist und für das vorangestellte Wort eine Flexionsform angegeben wird.

Versuche den Algorithmus zuerst in deiner Muttersprache zu formulieren, bevor du es mit Pascal angehst.

Delphi-Quellcode:
procedure TrimLines(s: TStrings);
var
  i: Integer;
begin
  s.BeginUpdate;
  for i := Pred(s.Count) downto 0 do
    if Trim(s[i]) = ''
      then s.Delete(i)
      else s[i] := Trim(s[i]);
  s.EndUpdate;
end;

function CombinedWords(s: TStrings): string;
var
  index1, index2: Integer;
  name, value: string;
begin
  s.BeginUpdate;
  index1 := Random(s.Count);
  name := s.Names[index1];
  value := s.ValueFromIndex[index1];
  s.Exchange(index1, Pred(s.Count));
  index2 := Random(Pred(s.Count));
  Result := StringReplace(value, '~', name, []) + AnsiLowercase(s.Names[index2]);
  s.Exchange(index1, Pred(s.Count));
  s.EndUpdate;
end;

procedure TDemoForm.TrimButtonClick(Sender: TObject);
begin
  TrimLines(Memo.Lines);
end;

procedure TDemoForm.TestButtonClick(Sender: TObject);
begin
  with Memo do
    if Lines.Count > 1
      then ShowMessage(CombinedWords(Memo.Lines))
      else ShowMessage('nice try!');
end;

procedure TDemoForm.InitButtonClick(Sender: TObject);
begin
  with Memo.Lines do
  begin
    Clear;
    Values['Katze'] := '~n';
    Values['Klo'] := '~';
    Values['Haar'] := '~';
    Values['Bürste'] := '~n';
  end;
end;
Freundliche Grüße


Alle Zeitangaben in WEZ +1. Es ist jetzt 11:08 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz