AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Sonstige Fragen zu Delphi Delphi Es ist so einfach komme aber nich drauf - Wert addieren ...
Thema durchsuchen
Ansicht
Themen-Optionen

Es ist so einfach komme aber nich drauf - Wert addieren ...

Ein Thema von dual · begonnen am 26. Nov 2007 · letzter Beitrag vom 29. Nov 2007
Antwort Antwort
Seite 1 von 2  1 2      
dual

Registriert seit: 22. Feb 2007
6 Beiträge
 
#1

Es ist so einfach komme aber nich drauf - Wert addieren ...

  Alt 26. Nov 2007, 23:28
Hi, mache gerade ein Delphi Programm (Roulette).

Jetzt hab ich ein Edit Fenster wo ich die Summe eingebe die auf mein "Konto" geladen werden soll.
Dann hab ich ein Panel wo mein Kontostand angzeigt wird.

Nun wenn ich einen Gewinn erziele (g1 ist also >0) dann soll dies zum eingelesen Edit Wert addiert werden (dieser Wert heißt "einsatz").
Jedoch hab ich immer das Problem, sobald ich den Button drücke, das meine Panel wieder den Wert von Edit1 einliest d.h. wenn ich am anfang 500 eingebe addiert er nich den Gewinn (z.B. 15) hinzu sondern zeigt wieder 500 an.

Also wo liegt der Fehler ?

[edit=Phoenix].NET -> Win32 geändert. Mfg, Phoenix[/edit]
  Mit Zitat antworten Zitat
fLaSh11
(Gast)

n/a Beiträge
 
#2

Re: Es ist so einfach komme aber nich drauf - Wert addieren

  Alt 26. Nov 2007, 23:31
Wenn du uns mal den Codeschnipsel reinstellst, mit dem du die genannte Aktion ausführtst, könnten wir dir evtl helfen.
  Mit Zitat antworten Zitat
oldmax

Registriert seit: 27. Apr 2006
Ort: Gieboldehausen
167 Beiträge
 
#3

Re: Es ist so einfach komme aber nich drauf - Wert addieren

  Alt 27. Nov 2007, 06:28
Hi
Nun, es geht auch ohne Codeschnipsel, glaub ich. Zuerst muß dir klar sein, was dein Konto und was dein Einsatz ist.
ok, also Einsatz wird vom Konto abgebucht und in Feld Einsat geschrieben. Da die Felder mit Text, also Strings gefüllt sind, du aber mit Zahlen (Real ) rechnest, mußt du umwandeln.
Von String nach Real => StrToFloat(String)
Von Real nach String=>FormatFloat('#0.00',Float)
Hinweise dazu findest du in der Hilfe.
Vorgehensweise für Einsatz:
Konto = Konto - Einsatz
bei Verloren ist einsatz weg und du setzt neuen Einsatz
bei Gewinn
Konto = konto +(Einsatz*Gewinnfaktor)

Ich hab hier keine Delphi-Codes geschrieben und auf Wandlung jeglicher Art verzichtet. Dies dürfte aber kein Problem sein, oder ?
Gruß oldmax
Noch ist mein Rechner mir zu Diensten.... ansonsten habe ich die Macht ihn zu vernichten !
  Mit Zitat antworten Zitat
dual

Registriert seit: 22. Feb 2007
6 Beiträge
 
#4

Re: Es ist so einfach komme aber nich drauf - Wert addieren

  Alt 27. Nov 2007, 19:31
Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
var kkeinsatz1, kkeinsatz2, keinsatz1, keinsatz2, einsatz1, einsatz2, x, y1, y2, g1, g2, a, b :integer;
begin
randomize;

keinsatz1 := strtoint(edit3.text);
keinsatz1 := strtoint(edit4.text);

einsatz1 := strtoint(edit1.text);
einsatz2 := strtoint(edit2.text);

x:=random(36);
Panel3.Caption:=inttostr(x);

begin
if combobox1.Text='Zerothen y1:=0;
if combobox1.Text='Rotthen y1:=1;
if combobox1.Text='Schwarzthen y1:=2;
if combobox1.Text='1 Dutzendthen y1:=3;
if combobox1.Text='2 Dutzendthen y1:=4;
if combobox1.Text='3 Dutzendthen y1:=5

end;

begin
if combobox2.Text='Zerothen y2:=0;
if combobox2.Text='Rotthen y2:=1;
if combobox2.Text='Schwarzthen y2:=2;
if combobox2.Text='1 Dutzendthen y2:=3;
if combobox2.Text='2 Dutzendthen y2:=4;
if combobox2.Text='3 Dutzendthen y2:=5

end;

if (y1=0) and (x in [0]) then
   begin
    g1:=einsatz1*36;
    showmessage('Zero gewinnt!');
  end;

if (y1=1) and (x in [1,3,5,7,9,11,13,15,17,19,21,23,25,27]) then
   begin
    g1:=einsatz1*1;
    showmessage('Rot gewinnt!');
  end;

if (y1=2) and (x in [2,4,6,8,10,12,14,16,18,20,22,24,26]) then
   begin
    g1:=einsatz1*1;
    showmessage('Schwarz gewinnt!');
  end;

if (y1=3) and (x in [1..12]) then
   begin
    g1:=einsatz1*2;
    showmessage('1 Dutzend gewinnt!');
  end;

if (y1=4) and (x in [13..24]) then
   begin
    g1:=einsatz1*2;
    showmessage('2 Dutzend gewinnt!');
  end;

if (y1=5) and (x in [25..36]) then
   begin
    g1:=einsatz1*2;
    showmessage('3 Dutzend gewinnt!');

  end;









if (y2=0) and (x in [0]) then
   begin
    g2:=einsatz2*36;
    showmessage('Zero gewinnt!');
  end;

if (y2=1) and (x in [1,3,5,7,9,11,13,15,17,19,21,23,25,27]) then
   begin
    g2:=einsatz2*1;
    showmessage('Rot gewinnt!');
  end;

if (y2=2) and (x in [2,4,6,8,10,12,14,16,18,20,22,24,26]) then
   begin
    g2:=einsatz2*1;
    showmessage('Schwarz gewinnt!');
  end;

if (y2=3) and (x in [1..12]) then
   begin
    g2:=einsatz2*2;
    showmessage('1 Dutzend gewinnt!');
  end;

if (y2=4) and (x in [13..24]) then
   begin
    g2:=einsatz2*2;
    showmessage('2 Dutzend gewinnt!');
  end;

if (y2=5) and (x in [25..36]) then
   begin
    g2:=einsatz2*2;
    showmessage('3 Dutzend gewinnt!');
  end;

Panel1.Caption:=inttostr(g1);
Panel2.Caption:=inttostr(g2);





end;

end.
So das ist hier Zufallszahl+Zuordnung zu jeweiligen Gewinnfeld . Zuvor wird das Konto mit einem Betrag aufgeladen.
Drücke ich jetzt den Button so wird das Konto immer wieder , mit der am Anfang eingegebenen Summe, aufgefüllt.
  Mit Zitat antworten Zitat
Klaus01

Registriert seit: 30. Nov 2005
Ort: München
5.767 Beiträge
 
Delphi 10.4 Sydney
 
#5

Re: Es ist so einfach komme aber nich drauf - Wert addieren

  Alt 27. Nov 2007, 20:15
Guten Abend,

vielleicht so:

Delphi-Quellcode:
if (y2=4) and (x in [13..24]) then
   begin
    g2:=g2+einsatz2*2;
    showmessage('2 Dutzend gewinnt!');
  end;
var kkeinsatz1, kkeinsatz2, keinsatz1, keinsatz2, einsatz1, einsatz2, x, y1, y2, g1, g2, a, b :integer; Ausserdem ist Dein g1 und g2 lokal deklariert, es gilt nur in der ButtonClick Routine.


Und randomize bitte nur einmal im Programm aufrufen, z.B. in der OnCreate Routine.

Grüße
Klaus
Klaus
  Mit Zitat antworten Zitat
dual

Registriert seit: 22. Feb 2007
6 Beiträge
 
#6

Re: Es ist so einfach komme aber nich drauf - Wert addieren

  Alt 27. Nov 2007, 21:19
Ok jetzt klappt es schon besser aber ich will ja auch bei einen Verlust den Einsatz vom Konto abziehen aber da läuft es acuh schief ...
  Mit Zitat antworten Zitat
oldmax

Registriert seit: 27. Apr 2006
Ort: Gieboldehausen
167 Beiträge
 
#7

Re: Es ist so einfach komme aber nich drauf - Wert addieren

  Alt 28. Nov 2007, 06:59
Hi
Nun, wie wäre es, wenn du mal über meinen Text chaust. Du brauchst ein Konto, also ein Editfeld Ed_Konto.Text;
Dann ein Editfeld ED_Einsatz.Text.
Nun Schreibst du in das Einsatzfeld deinen Einsatz. Beim onExit Ereignisziehst du den Einsatz vom Konto ab, du hast ja auf das Spielfeld gesetzt. Dieses onExit Ereignis wird bspw.ausgelöst, wenn du dein Button drückst, um die Zufallszahl zu bilden.
also :

Delphi-Quellcode:
Procedure TMyForm.Ed_EinsatzExit(Sender : TObject);
Var Betrag : Real;
Begin
  Betrag:=StrToFloat(ED_Konto.Text)-StrToFloat(Ed_Einsatz.Text);
  Ed_Konto.Text:=FormatFloat('#0.00',Betrag);
end;
Nun setzt du in deiner Spiel-Ergebnisberechnung den Gewinn auf die Gewinnsumme, d.h.

Delphi-Quellcode:
If gewonnen then Gewinn:=StrToFloat(Ed_Einsatz.Text)+StrToFloat(Ed_Einsatz.Text)*Gewinnstufe
else Gewinn:=0;
statt einer Boolean "gewonnen" wäre auch denkbar, die Gewinnstufe auf >0 abzufragen.

Nun brauchst du nur noch den Wert in Gewinn aufs Konto zu schreiben, also

Ed_Konto.Text:=FormatFloat('#0.00',StrToFloat(Ed_Konto.Text)+Gewinn); fertig..........

aber nix anderes hab ich bereits geschrieben, nur nicht im Delphi-Code..
Ach ja, noch ein wenig zur Erleichterung. Nimm Variablennamen, die es dir ermöglichen, auch nach einem halben Jahr ihre Bedeutung zu erkennen, ohne gleich das gesammte Programm nachzuvollziehen. Bei den Editfeldern, wie auch bei anderen Objekten benutze ich eine Abkürzung wie z.B. "Ed_" bei TEdit und dann einen entsprechenden Namen. Auch übe ein wenig die Anwendung von Prozeduren oder Funktionen.
Bspw
Delphi-Quellcode:
Funktion TMyForm.EinSpiel(Einsatzfeld :String): Integer;
Var Kugel : Integer;
    Stufe : Integer;
Begin
  Stufe:=0;
  Kugel:=Random(nn); //nn ist die Anzahl der Felder
  Case Kugel of 1: If Einsatzfeld='1then Stufe :=36; // oder so
                2: If Einsatzfeld='2then Stufe :=36;
                3: ......
                nn: ....
   end; // Case...
   Result :=Stufe;
end; // Function....
Setzen der Gewinnstufe erfolgt durch Aufruf der Function

Gewinnstufe:=Einspiel(Wert der Taste); Wenn du für jedes Roulettfeld ein Button setzt, kannst du in der Ereignisroutine z.B. damit die Gewinnstufe setzen..

Das macht dein Programm übersichtlicher.
Gruß oldmax
Noch ist mein Rechner mir zu Diensten.... ansonsten habe ich die Macht ihn zu vernichten !
  Mit Zitat antworten Zitat
dual

Registriert seit: 22. Feb 2007
6 Beiträge
 
#8

Re: Es ist so einfach komme aber nich drauf - Wert addieren

  Alt 28. Nov 2007, 18:05
wie kann ich den die neue Procedure "...Exist" eibinden ? Ich mein er meckert immer rum das er die nich kennt ... oder kommt die in meinen Button Prozess ?
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.619 Beiträge
 
Delphi 12 Athens
 
#9

Re: Es ist so einfach komme aber nich drauf - Wert addieren

  Alt 28. Nov 2007, 18:11
Das ist das Ereignis OnExit von Ed_Einsatz.
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
dual

Registriert seit: 22. Feb 2007
6 Beiträge
 
#10

Re: Es ist so einfach komme aber nich drauf - Wert addieren

  Alt 28. Nov 2007, 18:17
hmm dann raf ich es iwie net ... nochmal ne dau erklärung ?
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 02:30 Uhr.
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