Delphi-PRAXiS
Seite 2 von 2     12   

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   Programmiercode verkürzen! (https://www.delphipraxis.net/132097-programmiercode-verkuerzen.html)

mr_emre_d 6. Apr 2009 10:31

Re: Programmiercode verkürzen!
 
Also ich hatte gestern mit Modulo zoff.
Das dürfte alles erklären :mrgreen:

Edit: Zu meiner Verteidigung/Ausrede/whatever -> Ich hab dein Beitrag gar nicht gelesen, ich hab mir nur dein Dreizeiler angesehen und mir gedacht, der will alle Zahlen von 0..10 .. Anschließend kamen die unnötigen Beiträge von mir :P

MfG

himitsu 6. Apr 2009 10:47

Re: Programmiercode verkürzen!
 
Da Math.Min Inline-Code erzeugen sollte, ergitbt das wohl auch fast das selbe Ergebnis.
Delphi-Quellcode:
Wert := Min(Zufallszahl mod 13, 10);

jaenicke 6. Apr 2009 10:53

Re: Programmiercode verkürzen!
 
Insgesamt wäre es mit Funktionen mit Parametern jedenfalls sinnvoller. Was bei der Berechnung passiert ist wegen der globalen Variablen auf den ersten Blick nicht zu sehen, deshalb schreibe ich dazu lieber nix...
Delphi-Quellcode:
function TForm1.Wertzuordnen(Number: Integer): Integer;
begin
  Result := Number mod 13;
  if Result > 10 then
    Result := 10;
end;

function TForm1.ZufallszahlErstellen(): Integer;
begin
  Result := Trunc(Random(52) + 1);
end;

procedure TForm1.Kartenzuordnen();

  procedure ImageZuordnen(Image: TImage; var Zufall, Wert: Integer);
  begin
    Zufall := ZufallszahlErstellen();
    img_Ba1.Picture.LoadFromFile(ExtractFilePath(Application.ExeName)
      + 'Karten/' + IntToStr(Zufall) + '.bmp');
    Ba1Wert := Wertzuordnen(Zufall);
  end;

begin
  img_Ba3.Visible := false;
  img_Sp3.Visible := false;

  ImageZuordnen(img_Ba1, Ba1, Ba1Wert);
  ImageZuordnen(img_Ba2, Ba2, Ba2Wert);
  ImageZuordnen(img_Ba3, Ba3, Ba3Wert);

  ImageZuordnen(img_Sp1, Sp1, Sp1Wert);
  ImageZuordnen(img_Sp2, Sp2, Sp2Wert);
  ImageZuordnen(img_Sp3, Sp3, Sp3Wert);
end;
// EDIT:
@himitsu:
Das ist aber auch nicht das selbe. :gruebel:
25 mod 13 = 12
Max(12, 10) = 12

Meinst du Min? Damit sollte es klappen.

DeddyH 6. Apr 2009 10:57

Re: Programmiercode verkürzen!
 
Zitat:

Delphi-Quellcode:
Result := Trunc(Random(52) + 1);

Wozu das Trunc? :gruebel:

uligerhardt 6. Apr 2009 11:01

Re: Programmiercode verkürzen!
 
Zitat:

Zitat von jaenicke
Das -1 ist aber bei dem Quelltext im Projekt falsch.

Stümmt. :mrgreen:
Zitat:

Zitat von jaenicke
Delphi-Quellcode:
Wert := Zufallszahl mod 13;
if Wert > 10 then
  Wert := 10;
Das reicht schon.

Dann fehlt noch ein Fall für die Eingabe 13:
Delphi-Quellcode:
Wert := Zufallszahl mod 13;
if (Wert = 0) or (Wert > 10) then
  Wert := 10;
oder (mit himitsus Einwurf)
Delphi-Quellcode:
Wert := Max(Succ(Pred(Zufallszahl) mod 13), 10);
. (Alles ungetestet.)

ÄHM: Min, nicht Max. :oops:

himitsu 6. Apr 2009 11:02

Re: Programmiercode verkürzen!
 
Zitat:

Delphi-Quellcode:
function TForm1.ZufallszahlErstellen(): Integer;
begin
  Result := Trunc(Random(52) + 1);
end;

Random = Float
Random(x) = Integer

also Random liefert schon einen Integer :zwinker:
(da muß der Integer nicht erst nach Float konvertiert werden und dann zurück ... Trunc ist ja nicht für Integer da und verlangt einen Float ... ergibt also erstmal eine Implizite Typumwandlung :angel2: )
Delphi-Quellcode:
function TForm1.ZufallszahlErstellen(): Integer;
begin
  Result := Random(52) + 1;
end;
[edit] man sollte nix nebenbei machen -.-°

jaenicke 6. Apr 2009 11:03

Re: Programmiercode verkürzen!
 
Bei Max kommt aber das falsche heraus, denn Max(12, 10) ist z.B. nicht wie gewünscht 10...
Wegen Trunc: Ja, hab ich nicht drauf geachtet als ich das so gelassen habe. :oops:

himitsu 6. Apr 2009 11:56

Re: Programmiercode verkürzen!
 
arg ... Min *geändert hab*


Alle Zeitangaben in WEZ +1. Es ist jetzt 17:19 Uhr.
Seite 2 von 2     12   

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz