![]() |
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 |
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 ...
|
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. |
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 |
Re: Wörter kombinieren
Am besten du lernst erst einmal die
![]() Wenn du das hast, weißt du auch, was Whookie meint. Und: Willkommen in der DP. :dp: |
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. |
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 ^^ |
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:
Freundliche Grüße
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; |
Alle Zeitangaben in WEZ +1. Es ist jetzt 02:49 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz