![]() |
Worte-wechsler
Hallo Leute,
stehe echt auf'm Schlauch. :wall: Ich möcht gern einen kleinen Wort-Wechsler schreiben und hänge da schon seit Stunden dran fest (totaler Anfänger). :oops: Also eigentlich ne simple Sache, schätze ich. Das Programm soll bei jedem Klick ein anderes Wort in der TEdit anzeigen. Sonst nix. Kann mir bitte jemand helfen und mein Listing vervollständigen, dass das funzt. Ich komme echt nich weiter so. Muss mir unbedingt mal ein Buch kaufen. Konnte aber nich abwarten es selbst zu probieren... :gruebel: Hier das Listing:
Delphi-Quellcode:
Freue mich auf Eure Hilfe. Danke
unit wortwechsel;
interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, jpeg, Shellapi, ExtCtrls; type TForm1 = class(TForm) GroupBox1: TGroupBox; Edit1: TEdit; Button1: TButton; GroupBox2: TGroupBox; Image1: TImage; Button2: TButton; Label1: TLabel; procedure Button1Click(Sender: TObject); procedure Label1Click(Sender: TObject); procedure Button2Click(Sender: TObject); private { Private-Deklarationen } public { Public-Deklarationen } end; var Form1: TForm1; implementation {$R *.dfm} procedure TForm1.Button1Click(Sender: TObject); begin close; end; //Link zur Homepage procedure TForm1.Label1Click(Sender: TObject); begin ShellExecute(Application.Handle, 'open', PChar(Label1.Caption), nil, nil, SW_ShowNormal); Cursor:=crHandPoint; Font.Color:=clBlue; Font.Style:=[fsUnderline]; end; procedure TForm1.Button2Click(Sender: TObject); var txt: String; begin txt := 'Hase-Hund-Maus-Dogge-Bunny-Mickey'; //txt := 'Fisch-Eidechse-Vogel-Schwuppi-Lurchi-Hansi'; (es gibt noch einige weitere Wortgruppen!!) Edit1.Text := txt; end; end. |
Re: Worte-wechsler
Delphi-Quellcode:
unit wortwechsel;
interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, jpeg, Shellapi, ExtCtrls; type TForm1 = class(TForm) GroupBox1: TGroupBox; Edit1: TEdit; Button1: TButton; GroupBox2: TGroupBox; Image1: TImage; Button2: TButton; Label1: TLabel; procedure Button1Click(Sender: TObject); procedure Label1Click(Sender: TObject); procedure Button2Click(Sender: TObject); procedure FormCreate(Sender: TObject); //FormCreate angelegt private { Private-Deklarationen } public { Public-Deklarationen } end; var Form1: TForm1; implementation {$R *.dfm} procedure TForm1.FormCreate(Sender: TObject); begin Randomize; end; procedure TForm1.Button1Click(Sender: TObject); begin close; end; //Link zur Homepage procedure TForm1.Label1Click(Sender: TObject); begin ShellExecute(Application.Handle, 'open', PChar(Label1.Caption), nil, nil, SW_ShowNormal); Cursor:=crHandPoint; Font.Color:=clBlue; Font.Style:=[fsUnderline]; end; procedure TForm1.Button2Click(Sender: TObject); const txt: array[0..5] of string = ('Fisch','Eidechse','Vogel','Schwuppi','Lurchi','Hansi'); begin Edit1.Text := txt[Random(Length(txt))]; end; end. |
Re: Worte-wechsler
Hey hallo Detlef,
danke für deine superschnelle Antwort. Wichtig ist, dass die Worte auch tatsächlich wie in meinem Listing gezeigt, aneinander gereiht stehen: 'Fisch-Eidechse-Vogel-Schwuppi-Lurchi-Hansi'. Es soll nämlich immer eine andere Reihe von Wortkombinationen (durch "-" getrennt) mit jedem neuen "ButtonClick" erscheinen. Also sechs Worte, manchmal auch Ziffern, in Reihe so zu sagen... Hast du da evtl. auch ne Lösung für? |
DP-Maintenance
Dieses Thema wurde von "Matze" von "Neuen Beitrag zur Code-Library hinzufügen" nach "Sonstige Fragen zu Delphi" verschoben.
Das ist kein Vorschlag für die Code-Library |
Re: Worte-wechsler
Dazu musst Du lediglich die Konstante txt ändern.
Delphi-Quellcode:
const txt: array[0..{Anzahl der Wortgruppen - 1}] of string =
('Hase-Hund-Maus-Dogge-Bunny-Mickey', 'Fisch-Eidechse-Vogel-Schwuppi-Lurchi-Hansi', //usw. ); |
Re: Worte-wechsler
Super. Dickes Dankeschön. :hi:
Okay, ich werde es gleich mal ausprobieren. :coder: |
Re: Worte-wechsler
Damit es sich wirklich bei jedem Click ändert:
Delphi-Quellcode:
Altrw ist zwar eine globale Variable aber man kann sie ja auch in das Form verbannen.var altrw : integer; procedure TForm1.Button2Click(Sender: TObject); const rw : integer; txt: array[0..5] of string = ('Fisch','Eidechse','Vogel','Schwuppi','Lurchi','Hansi'); begin repeat rw:=Random(Length(txt)); until rw<>altrw; Edit1.Text := txt[rw]; altrw:=rw; end; Bei Detlefs Lösung kann es so aussehen als würde der Text nicht geändert, da die gleiche Zufallszahl zweimal nacheinander kommt. Ähm was möchtest Du denn jetzt? Etwa so ähnlich?
Delphi-Quellcode:
Gruß
txt := 'Hase-Hund-Maus-Dogge-Bunny-Mickey';
txt := 'Hase-Maus-Hund-Dogge-Bunny-Mickey'; txt := 'Dogge-Hase-Hund-Maus-Bunny-Mickey'; K-H /edit zu spät! |
Re: Worte-wechsler
Das müsste aber auch ohne globale Variable gehen, wenn man den String selbst vergleicht.
Delphi-Quellcode:
var index: integer;
begin repeat index := Random(Length(txt)); until txt[index] <> Edit1.Text; |
Re: Worte-wechsler
@DeddyH
Mir scheit der Vergleich zweier Integer-Werte nicht so aufwendig. Aber hier macht das eine oder andere hundertstel wohl keinen Unterschied. Gruß K-H |
Re: Worte-wechsler
Denk ich mir auch, vor allem hat der TE nichts von einer hochoptimierten Lösung, die er dann erst nach Jahren begreift, wenn überhaupt :zwinker:
|
Re: Worte-wechsler
Die Wortkombinationen stehen fest.
in etwa so: 'Hase-Hund-Maus-Dogge-Bunny-Mickey' 'Katze-Esel-Tiger-Taube-Muschi-Ia-Brummi-Guruguru' 'Geist-Tisch-Teppich-Huibuh-Deckdich-Alibaba' 'Zahnarzt-Klempner-Pilot-Karies-Rohrbruch-Flugzeug' Tja und nach jedem ButtonClick soll eine andere Wortreihe angezeigt werden. Die Worte innerhalb der Wortreihe sollen dabei NICHT vertauscht werden. |
Re: Worte-wechsler
2 Lösungsmöglichkeiten hast Du ja jetzt, oder klappt irgendetwas noch nicht?
|
Re: Worte-wechsler
Offen gestanden bin ich noch dabei.
Ich habe deine Postings gelesen und gedacht, vielleicht hatte ich da etwas missverständlich geschrieben und deshalb in meinen Ausführungen nachgebssert um zu sehen ob du evtl. etwas an deinem Beitrag änderst. Sonst fange ich ja stets neu an... |
Re: Worte-wechsler
Nö, geändert hab ich nichts mehr, lediglich erweitert. Versuch es mal und wenn etwas nicht funktionieren sollte, meld Dich einfach nochmal.
|
Re: Worte-wechsler
Ja, okay.
Danke. :) |
Re: Worte-wechsler
Mach mal
Detlefs Lösung funktioniert schon! Gruß K-H P.S. der Integer ist ein Reflex aus uralten Zeiten, aber Dinos sterben ja eh aus. |
Re: Worte-wechsler
Meine Lösung funktioniert nur dann nicht mehr, wenn alle Strings im Array exakt gleich sind, aber das macht ja niemand, gell? :mrgreen:
|
Re: Worte-wechsler
Weiß man's?
|
Re: Worte-wechsler
Ich hoff es stört nicht, wenn ich nun alles einfach so ignoriere und nochmal von Anfang an anfang?
Du möchtest also daß beim Aufruf von Button 2 unterschiedelich "Befehle" ausgeführt werden ... > Was nimmt man dafür?
Delphi-Quellcode:
OK, du möchtest aber nun noch mehrer Unterschiedliche ...
if XYZ then
txt := 'Hase-Hund-Maus-Dogge-Bunny-Mickey' else txt := 'Fisch-Eidechse-Vogel-Schwuppi-Lurchi-Hansi'; > Dafür kann man die IF-THEN-ELSE verschachteln oder man nutzt CASE.
Delphi-Quellcode:
if XYZ then
txt := 'Hase-Hund-Maus-Dogge-Bunny-Mickey' else txt := 'Fisch-Eidechse-Vogel-Schwuppi-Lurchi-Hansi' else if XYZ then txt := 'es gibt noch einige weitere Wortgruppen!!';
Delphi-Quellcode:
So, nun hat man erstmal alles "nebeneinander".
case XYZ of
0: txt := 'Hase-Hund-Maus-Dogge-Bunny-Mickey'; 1: txt := 'Fisch-Eidechse-Vogel-Schwuppi-Lurchi-Hansi'; 2: txt := 'es gibt noch einige weitere Wortgruppen!!'; end; Jetzt kommt noch die Auswahl, was wann ausgeführt werden soll. > Dafür gibt es ![]() jetzt noch alles kombiniert, würde z.B. dieses rauskommen
Delphi-Quellcode:
case Random(3) of
0: txt := 'Hase-Hund-Maus-Dogge-Bunny-Mickey'; 1: txt := 'Fisch-Eidechse-Vogel-Schwuppi-Lurchi-Hansi'; 2: txt := 'es gibt noch einige weitere Wortgruppen!!'; end; Soooo, das war jetzt einfach nur ein einfacher Lösungsansatz. Erstellt anhand der "Forderungen", welche man erreichen wollte. Dieses könnte man dann natürlich noch bebliebig ausbauen/erweitern und würde dann eventuell auch auf derartige Lösungen stoßen, wie schon genannt wurden. (z.B. aus dem Case ein Array oder Stringliste machen) |
Re: Worte-wechsler
Hi Detlef,
du hast mir echt super geholfen. :cheers: So hat es prima geklappt. Beliebig erweiterbar. Super.
Delphi-Quellcode:
procedure TForm1.Button2Click(Sender: TObject);
const txt: array[0..5] of string = ('Hund-Katze-Maus-Bello-Muschi-Mickey','Esel-Tiger-Ente-Ia-Fauch-Quack','Tisch-Stuhl-Leiter-Essen-Sitzen-Klettern','Geld-Bild-Haus-Münze-Farbe-Wohnen','Flasche-Teller-Glas-Wein-Porzellan-Scherben','Karotte-Erbse-Mandel-Hase-Strauch-Schale'); begin Edit1.Text := txt[Random(Length(txt))]; Also ich werde mir echt ein gescheites Buch zulegen. Wie ich das mit den Arrays hätte machen sollen, da wäre ich so nich dahinter gekommen. Nun ists klar. Wünsche dir und allen hier noch viel Freude beim Programmieren und ein schönes WE. :dancer: |
Re: Worte-wechsler
Wenn Du die repeat-Schleife noch einbaust, ist es wirklich immer ein anderer String ;), ansonsten freue ich mich, dass ich Dir helfen konnte. Übrigens musst Du nicht gleich Geld für Bücher ausgeben, gute Tutorials gibt es auch online, beispielsweise
![]() |
Alle Zeitangaben in WEZ +1. Es ist jetzt 06:34 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-2025 by Thomas Breitkreuz