Entwickler-Ecke
Sonstiges (Delphi) - Zufalstexte erzeugen
teamrocket0 - Do 25.01.07 22:07
Titel: Zufalstexte erzeugen
moin.
Ich habe mir so ein kleine Programm zum Üben gebastelt. Das soll immer auf Knopfdruck 5 Zeilen mit einem Text in einem Memo anzeigen.
Das Problem besteht darin das es vorkommt das nicht 5 sondern nur 4 Zeilen ausgegeben werden.
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:
| var Form1: TForm1;
implementation
{$R *.dfm}
procedure TForm1.Button1Click(Sender: TObject); begin Timer1.Enabled:=true; end;
procedure TForm1.FormActivate(Sender: TObject); begin randomize; Zahler:=0; end;
procedure TForm1.Timer1Timer(Sender: TObject); begin Wert:=random(27); if Zahler=5 then begin Zahler:=0; memo1.Lines.Add('-----------------------'); memo2.Lines.Add('-----------------------'); Timer1.Enabled:=false; end else begin case Wert of
1: begin memo1.Lines.Add('Aufgabe'); memo2.Lines.Add('Erklärung'); end;
2: begin memo1.Lines.Add('Aufgabe'); memo2.Lines.Add('Erklärung'); end; ... ... end; Zahler:=Zahler+1; end; end; end. |
Weiß einer wo der Fehler liegt?
Narses - Do 25.01.07 22:21
Moin!
Schonmal was von "Einrücken" oder "Styleguide" gehört... :? Den Code kann man ja kaum lesen... :|
Ich schätze mal, dass du besser FormCreate statt OnActivate verwenden solltest, denn da setzt du den Zähler zurück - was dann auch passiert, wenn du "wild" durch die Gegend klickst und das Formular zwischendurch wieder de-/aktivierst. ;)
cu
Narses
teamrocket0 - Do 25.01.07 22:28
Danke erstmal für deinen Hinweiß.... Ist es so besser mit dem sortieren?
Habe deinen Tip mal ausprobiert, leider ohne Erfolg.....
Narses - Do 25.01.07 22:33
Moin!
teamrocket0 hat folgendes geschrieben: |
| Ist es so besser mit dem sortieren? |
Besser, aber noch nicht gut. ;)
teamrocket0 hat folgendes geschrieben: |
| Habe deinen Tip mal ausprobiert, leider ohne Erfolg..... |
OK, dann ist dir bekannt, dass
Wert:=random(27); Zahlen im Bereich von 0..26 liefert? Du hast aber keinen case 0... ? ;)
cu
Narses
teamrocket0 - Do 25.01.07 22:36
:oops:
Hmmmmmmmmmmm, hmmmm. Das habe ich dan wohl mal so eben wegessen. :autsch: :autsch: :autsch:
Das ich das auch selber nicht gesehen habe!
Heißen Dank!
Und was müsste ich noch beim sortieren beachten?
Narses - Do 25.01.07 22:41
Moin!
Bitte. ;)
teamrocket0 hat folgendes geschrieben: |
| Und was müsste ich noch beim sortieren beachten? |
Es geht nicht um "Sortieren", sondern um Einrückungen der Zeilen, die die Struktur des Quelltextes sichtbar machen. Schau mal nach
STYLEGUIDE. ;)
cu
Narses
teamrocket0 - Do 25.01.07 22:46
Narses hat folgendes geschrieben: |
Es geht nicht um "Sortieren", sondern um Einrückungen der Zeilen, die die Struktur des Quelltextes sichtbar machen. Schau mal nach STYLEGUIDE. ;)
cu
Narses |
Also das Prinzip ist mir schon klar. Bloß woran erkenne ich diese Struktur?
Im Unterricht hat die Lehrerin darauf nie geachtet, und auch keine Hinweiße gegeben......
Also weiß ich nicht WANN ich den Quelltext einrücken muss!
Narses - Do 25.01.07 22:51
Moin!
teamrocket0 hat folgendes geschrieben: |
Also das Prinzip ist mir schon klar. Bloß woran erkenne ich diese Struktur?
Im Unterricht hat die Lehrerin darauf nie geachtet, und auch keine Hinweiße gegeben......
Also weiß ich nicht WANN ich den Quelltext einrücken muss! |
Immer dann, wenn der Ablauf nicht mehr linear ist. ;) Beispiel:
Delphi-Quelltext
1: 2: 3: 4:
| if (Bedingung) then MachWas else MachWasAnderes; |
oder beim case of:
Delphi-Quelltext
1: 2: 3: 4: 5: 6:
| case AnInteger of 0: ShowMessage('Null'); 1: ShowMessage('Eins'); else ShowMessage('Keine Binärziffer!'); end; |
cu
Narses
teamrocket0 - Do 25.01.07 23:00
Hm. OK.
Danke erstmal.
Werde versuchem mich daran zu halten wenn programmiere!
jaenicke - Do 25.01.07 23:24
Titel: Re: Zufalstexte erzeugen
Hallo, hab mal deinen Source etwas formatiert ;-). So siehts doch gleich viel ordnetlicher aus.
Wichtig ist vor allem, dass begin und das dazugehörige end gleich eingerückt sind, genauso das case und das entsprechende end. Und dazwischen wird alles jeweils einmal eingerückt. Dann überblickt man sofort zu welchem begin ein end gehört und so.
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:
| procedure TForm1.Timer1Timer(Sender: TObject); begin Wert := Random(27); if Zahler = 5 then begin Zahler := 0; Memo1.Lines.Add('-----------------------'); Memo2.Lines.Add('-----------------------'); Timer1.Enabled := false; end else begin case Wert of 1: begin Memo1.Lines.Add('Aufgabe'); Memo2.Lines.Add('Erklärung'); end; 2: begin Memo1.Lines.Add('Aufgabe'); Memo2.Lines.Add('Erklärung'); end; end; Zahler := Zahler + 1; end; end;
end. |
Beim case hab ich auch schon viele Schreibweisen gesehen, wenn es mit begin..end ist. Ich persönlich finde diese recht übersichtlich...
Wichtig ist aber vor allem, dass man den Stil immer konsequent anwendet, auch wenns mal etwas länger dauert. ;-)
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2026 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!