Zufallstext

  • geschlossen
  • Delphi

Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

  • Hallo,
    ich hab nun mal angefangen mit Delphi zu arbeiten. Nun möchte ich, dass wenn ich auf einen Button klicke, zufällig vorgegebene Texte auf der Form erscheinen.

    Also, wenn ich nun den Button drücke, dass einmal "asdfjkflda" erscheint und ein anderes mal "jklfdalkjfd".( Die Wörter sollen aus einer vorher festgelegten Liste ausgewählt werden).

    Ich hoffe ihr könnt mir helfen und wenns geht nicht zu kompliziert bin wie gesagt noch Anfänger.

    MfG
    Frau_Kallwass
  • wenn ich das richtig verstehe willst du in eine Liste

    ehruifhewouifhrö
    eworigtjvioewjf
    erqiogjvfoierhjf
    dwokfkvoiwe
    ewvigfojewoirfjr
    eiworjgoiferjf
    ergtoiiowerjfo
    erigovjwetigovf

    eintragen und diese dann Zufällig ausgeben lassen????:confused:

    Also Delphi kann ich net deswegen erklär ich dir das mal allgemein. Du musst deine Strings in ein Array speichern oder in eine Listbox (kommt drauf an).
    Dann lässt du mit random eine zufallszahl generieren und speicherst die zahl in eine variable. Dann lässt du einfach das Segment des arrays mit dem indey der zufallszahl ausgaben.

    Ich hoffe das du das so gemeint hast.

    Gruß Lacky
  • Hm, ich hab mich wohl etwas unverständlich ausgedrückt. =/

    Naja, sagen wir mal so. Ich hab nen Button und ein Label. Jetzt möchte ich, dass wenn ich auf den Button klicke der Text des Labels zufällig geändert wird. Dabei ist es wichtig, dass nicht i-ein Wort verwendet wird sonder eins, was man vorher vorgegeben hat.

    Ich werd mal deine Lösung ausprobieren.

    MfG
    Frau_Kallwass
  • also, ich glaub ich hab was du wills^^

    erstmal im form.create bastels du dir ein array aus wörtern

    Quellcode

    1. randomize;
    2. n := 10; // anzahl deiner woerter!
    3. setlength(woerter,n);
    4. // Woerter eintragen
    5. woerter[0] := 'wort_1';
    6. woerter[1] := 'wort_2';
    7. woerter[2] := 'wort_3';
    8. woerter[3] := 'wort_4';
    9. woerter[4] := 'wort_5';
    10. woerter[5] := 'wort_6';
    11. woerter[6] := 'wort_7';
    12. woerter[7] := 'wort_8';
    13. woerter[8] := 'wort_9';
    14. woerter[9] := 'wort_10';
    Alles anzeigen


    danach beim button.click

    Quellcode

    1. //wort festlegen
    2. wort := woerter[random(9)];
    3. //caption ändern
    4. label1.Caption := wort;


    habs nich getestet aber müsste so funktionieren
  • Hm, klappt bei mir nicht so ganz. Liegt aber wahrscheinlich daran, dass ich zu doof dafür bin. Wie gesagt, ich arbeite erst seit gestern mit Delphi.
    Also so siehts gerade aus:

    Quellcode

    1. unit Unit3;
    2. interface
    3. uses
    4. Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
    5. Dialogs, StdCtrls, ExtCtrls;
    6. type
    7. THauptform = class(TForm)
    8. Image1: TImage;
    9. Label1: TLabel;
    10. Button1: TButton;
    11. Button2: TButton;
    12. Edit2: TEdit;
    13. Label2: TLabel;
    14. procedure Button1Click(Sender: TObject);
    15. procedure Button2Click(Sender: TObject);
    16. procedure FormCreate(Sender: TObject);
    17. private
    18. { Private-Deklarationen }
    19. public
    20. { Public-Deklarationen }
    21. end;
    22. var
    23. Hauptform: THauptform;
    24. implementation
    25. {$R *.dfm}
    26. procedure THauptform.Button1Click(Sender: TObject);
    27. var wort:string;
    28. begin
    29. //wort festlegen
    30. wort := woerter[random(9)];[B][COLOR='DarkRed']--Bekomme hier Fehlermeldung
    31. "Undefinierter Bezeichner"--[/COLOR][/B]
    32. //caption ändern
    33. label1.Caption := wort;
    34. end;
    35. procedure THauptform.Button2Click(Sender: TObject);
    36. begin
    37. application.Terminate;
    38. end;
    39. procedure THauptform.FormCreate(Sender: TObject);
    40. var
    41. n:integer;
    42. woerter:array [1..10] of string;
    43. begin
    44. randomize;
    45. n := 10; // anzahl deiner woerter!
    46. setlength(woerter,n); [B][COLOR='DarkRed']--Bekomme hier die Fehlermeldung "inkompetable Typen"--[/COLOR][/B]
    47. // Woerter eintragen
    48. woerter[10] := 'wort_1';
    49. woerter[1] := 'wort_2';
    50. woerter[2] := 'wort_3';
    51. woerter[3] := 'wort_4';
    52. woerter[4] := 'wort_5';
    53. woerter[5] := 'wort_6';
    54. woerter[6] := 'wort_7';
    55. woerter[7] := 'wort_8';
    56. woerter[8] := 'wort_9';
    57. woerter[9] := 'wort_10';
    58. end;
    59. end.
    Alles anzeigen
  • Nun siehts so aus:

    Quellcode

    1. unit Unit3;
    2. interface
    3. uses
    4. Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
    5. Dialogs, StdCtrls, ExtCtrls;
    6. type
    7. THauptform = class(TForm)
    8. Image1: TImage;
    9. Label1: TLabel;
    10. Button1: TButton;
    11. Button2: TButton;
    12. Edit2: TEdit;
    13. Label2: TLabel;
    14. procedure Button1Click(Sender: TObject);
    15. procedure Button2Click(Sender: TObject);
    16. procedure FormCreate(Sender: TObject);
    17. private
    18. { Private-Deklarationen }
    19. public
    20. { Public-Deklarationen }
    21. end;
    22. var
    23. Hauptform: THauptform;
    24. woerter : array of string;
    25. implementation
    26. {$R *.dfm}
    27. procedure THauptform.Button1Click(Sender: TObject);
    28. var wort:string;
    29. begin
    30. //wort festlegen
    31. wort := woerter[random(9)];
    32. //caption ändern
    33. label1.Caption := wort;
    34. end;
    35. procedure THauptform.Button2Click(Sender: TObject);
    36. begin
    37. application.Terminate;
    38. end;
    39. procedure THauptform.FormCreate(Sender: TObject);
    40. var
    41. n:integer;
    42. begin
    43. randomize;
    44. n := 10; // anzahl deiner woerter!
    45. setlength(woerter,n);
    46. // Woerter eintragen
    47. woerter[10] := 'wort_1';
    48. woerter[1] := 'wort_2';
    49. woerter[2] := 'wort_3';
    50. woerter[3] := 'wort_4';
    51. woerter[4] := 'wort_5';
    52. woerter[5] := 'wort_6';
    53. woerter[6] := 'wort_7';
    54. woerter[7] := 'wort_8';
    55. woerter[8] := 'wort_9';
    56. woerter[9] := 'wort_10';
    57. end;
    58. end.
    Alles anzeigen


    Ich bekomme nun immer bei dieser Stelle: wort := woerter[random(9)];
    folgenden Fehler: img3.imagebanana.com/img/n31fmuew/Unbenannt.jpg
  • kein wunder^^

    wenn du "setlength(woerter,10)" machst (n = 10) ist der höchste index 9

    aber du machst

    Quellcode

    1. // Woerter eintragen
    2. woerter[10] := 'wort_1';
    3. woerter[1] := 'wort_2';


    mach woerter[0] := 'Wort_1'
    und random(10)-1
    weil es 10 elemente im array mit index 0 - 9 sind, war aber mein fehler ;)



    //EDIT

    sry, daran liegts wohl nicht, aber trotzdem würd ich das mal ändern

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von sHiNoDa ()

  • hier mal mein code, der funktioniert:

    Quellcode

    1. unit Unit1;
    2. interface
    3. uses
    4. Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
    5. Dialogs, StdCtrls;
    6. type
    7. TForm1 = class(TForm)
    8. Button1: TButton;
    9. Label1: TLabel;
    10. procedure FormCreate(Sender: TObject);
    11. procedure Button1Click(Sender: TObject);
    12. private
    13. { Private-Deklarationen }
    14. public
    15. { Public-Deklarationen }
    16. end;
    17. var
    18. Form1: TForm1;
    19. woerter : array of string;
    20. implementation
    21. {$R *.dfm}
    22. procedure TForm1.FormCreate(Sender: TObject);
    23. var n:integer;
    24. begin
    25. randomize;
    26. n := 10; // Anzahl deiner Woerter!
    27. setlength(woerter,n);
    28. // Woerter eintragen
    29. woerter[0] := 'wort_1';
    30. woerter[1] := 'wort_2';
    31. woerter[2] := 'wort_3';
    32. woerter[3] := 'wort_4';
    33. woerter[4] := 'wort_5';
    34. woerter[5] := 'wort_6';
    35. woerter[6] := 'wort_7';
    36. woerter[7] := 'wort_8';
    37. woerter[8] := 'wort_9';
    38. woerter[9] := 'wort_10';
    39. end;
    40. procedure TForm1.Button1Click(Sender: TObject);
    41. var wort : string;
    42. begin
    43. if woerter = nil then
    44. showmessage('Kein Array vorhanden')
    45. else
    46. wort := woerter[random(10)];
    47. label1.Caption := wort;
    48. end;
    49. end.
    Alles anzeigen


    bau ruhig mal die if-abfrage für das array ein, gibt schonmal mehr informationen

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von sHiNoDa ()