Autor Beitrag
cdvxdMAN
Hält's aus hier
Beiträge: 3



BeitragVerfasst: So 17.10.10 20:50 
Hallo,
ich hatte vor einer Weile Delphi in der Schule und wollte jetzt nach einigen Jahren mal wieder etwas damit machen. Hierbei handelt es sich um ein ziemlich simples Programm:

ausblenden volle Höhe Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:
36:
37:
38:
39:
40:
41:
42:
43:
44:
45:
46:
47:
48:
49:
50:
51:
52:
53:
54:
55:
56:
57:
58:
59:
60:
61:
62:
63:
64:
65:
66:
67:
68:
69:
70:
71:
72:
73:
74:
75:
76:
77:
78:
79:
80:
81:
82:
83:
84:
85:
86:
87:
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls;

type
  TForm1 = class(TForm)
    generieren: TButton;
    loeschen: TButton;
    Beenden: TButton;
    MBewertung: TMemo;
    Memo2: TMemo;
    Bewertung: TLabel;
    Fazit: TLabel;
    procedure BeendenClick(Sender: TObject);
    procedure generierenClick(Sender: TObject);
    procedure loeschenClick(Sender: TObject);
  private
    { Private-Deklarationen }
  public
    { Public-Deklarationen }
  end;

var
  Form1: TForm1;
  metxt,m1,m2,m3,m4,m5,m6,t1,t2,t3,t4,t5,t6,t7,t8,t9,t10,t11,t12,: string;
  h,h2: Integer;
const
  Zufallsbereich = 12;

implementation

{$R *.dfm}

procedure TForm1.BeendenClick(Sender: TObject);
begin
close;
end;

procedure TForm1.generierenClick(Sender: TObject);
begin

m1 := '';
m2 := '';
m3 := '';
m4 := '';
m5 := '';
m6 := '';

t1 := 'Der Arbeitsspeicher wird in einer kleinen Packung geliefert. ';
t2 := 'In einer kleinen Packung kommt sicher verpackt der Arbeitsspeicher. ';
t3 := 'Sicher und weich verpackt wird der Arbeitsspeicher in einer kleinen Packung geliefert. ';
t4 := 'Der Arbeitsspeicher kommt in einem kleinen Paket, in dem er gut gepolstert liegt. ';
t5 := 'Das Paket, in welchem der Arbeitsspeicher kommt, ist klein und gut gepolstert, sodass Beschädigungen eigentlich auszuschließen sind. ';
t6 := 'Der Speicher ist sicher in einem kleinen Paket mit Schaumstoff verpackt. ';
t7 := 'Der Speicher wird weich und sicher in einer kleinen Verpackung geliefert. ';
t8 := 'Gut geschützt wird der Arbeitsspeicher in einem kleinen Paket geliefert. ';
t9 := 'Gut verpackt in einem kleinen Paket mit Schaumstoffpolsterung wird der Arbeitsspeicher geliefert. ';
t10 := 'In einem relativ kleinen Paket wird der Arbeitsspeicher geliefert.  ';
t11 := 'Die Packung in der der Arbeitsspeicher geliefert wird ist klein und gut gepolstert. ';
t12 := 'Der Arbeitsspeicher wird in einer flachen, relativ kleinen Verpackung versendet, diese ist allerdings gut gepolstert um Schäden zu vermeiden. ';

/// 1. Teil

Randomize;
h := (Random(Zufallsbereich)+1);

If (Random(Zufallsbereich)+1) = 1 then m1 := t1;
If (Random(Zufallsbereich)+1) = 2 then m1 := t2;
If (Random(Zufallsbereich)+1) = 3 then m1 := t3;
If (Random(Zufallsbereich)+1) = 4 then m1 := t4;
If (Random(Zufallsbereich)+1) = 5 then m1 := t5;
If (Random(Zufallsbereich)+1) = 6 then m1 := t6;
If (Random(Zufallsbereich)+1) = 7 then m1 := t7;
If (Random(Zufallsbereich)+1) = 8 then m1 := t8;
If (Random(Zufallsbereich)+1) = 9 then m1 := t9;
If (Random(Zufallsbereich)+1) = 10 then m1 := t10;
If (Random(Zufallsbereich)+1) = 11 then m1 := t11;
If (Random(Zufallsbereich)+1) = 12 then m1 := t12;

metxt := m1 + m2 + m3 + m4 + m5;
MBewertung.text := metxt;

end;



Jetzt habe ich das Problem, dass manchmal kein Text im Memo "MBewertung.text" angezeigt wird, zum Beispiel wenn die Zufallszahl 7 oder 6 ist, oder irgendwie anders.
Das Ganze ist ja eigentlich ziemlich simple, aber ich finde einfach keinen Fehler.
Also wenn mir wer helfen könnte...

Gruß
cdvxdMAN


Zuletzt bearbeitet von cdvxdMAN am So 17.10.10 20:56, insgesamt 1-mal bearbeitet
Martok
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 3661
Erhaltene Danke: 604

Win 8.1, Win 10 x64
Pascal: Lazarus Snapshot, Delphi 7,2007; PHP, JS: WebStorm
BeitragVerfasst: So 17.10.10 20:54 
Hallo und :welcome:!

Bitte verwende für Quellcode die entsprechenden [delphi]-Tags, dann wird er "schöner" dargestellt als im Fließtext. Beispiel:
ausblenden Quelltext
1:
<span class="inlineSyntax"><span class="codecomment">{PROTECTTAGea6a50f95f7c5cabaa062b241a612313}</span></span>					

Wird:
ausblenden Delphi-Quelltext
1:
var Test: integer;					


Viele Grüße,
Martok

_________________
"The phoenix's price isn't inevitable. It's not part of some deep balance built into the universe. It's just the parts of the game where you haven't figured out yet how to cheat."
Gausi
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 8548
Erhaltene Danke: 477

Windows 7, Windows 10
D7 PE, Delphi XE3 Prof, Delphi 10.3 CE
BeitragVerfasst: So 17.10.10 21:02 
Hallo und :welcome: in der EE,

Du würfelst zu oft, das ist dein Problem. ;-)

Du würfelst ungefähr ein Dutzend mal und guckst jedes Mal, was du gerade gewürfelt hast und setzt dann den String. Du möchtest aber vermutlich nur einmal würfeln, also in etwa so:

ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
h := (Random(Zufallsbereich)+1);

case h of
  1: m1 := t1;
  2: m1 := t2;
  3: m1 := t3;
 // usw.
end;

metxt := m1 + m2 + m3 + m4 + m5;
MBewertung.text := metxt;

_________________
We are, we were and will not be.

Für diesen Beitrag haben gedankt: cdvxdMAN
Luckie
Ehemaliges Mitglied
Erhaltene Danke: 1



BeitragVerfasst: So 17.10.10 21:05 
Randomize initialisiert den Zufallsgenerator. Diesen nur ein mal beim Programmstart aufrufen.

Deine if-Verzweigung ist umständlich. Besser und einfacher wäre dort an der Stelle eine case-Verzweigung zu nutzen. Siehe dazu auch die Hilfe zu case.

Warum die zusätzliche variablen m? Du kannst doch auch die t-Variablen aneinander hängen? Des weiteren wäre zu überlegen, ob hier nicht ein Array sinnvoller wäre.

Du solltest auch deine variablen aussagekräftiger benennen, dann weiß man später auch noch was mit anzufangen und der Quellcode ist für andere besser lesbar.
cdvxdMAN Threadstarter
Hält's aus hier
Beiträge: 3



BeitragVerfasst: So 17.10.10 21:10 
Ja ich hab mir schon gedacht dass das alles viel zu kompliziert ist, aber ich kann es inzwischen nicht einfacherer ;)
Naja den Fehler hab ich verstanden... ein wenig dumm dass ich den nicht gesehen hab :D

Also vielen Dank.