Delphi-PRAXiS
Seite 2 von 2     12   

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Frage zu einer Simulation (https://www.delphipraxis.net/124045-frage-zu-einer-simulation.html)

DeddyH 13. Nov 2008 19:06

Re: Frage zu einer Simulation
 
Nur zur Entwicklungszeit, zur Laufzeit siehst Du ihn nicht.

Teekeks 13. Nov 2008 19:08

Re: Frage zu einer Simulation
 
also jetz mich ich mich auch mahl ein:
Ein Label ist ein teil womit man Texte darstellen kann.
Ein Timer ist ein ding mit dem man nach einer gewissen Zeit etwas machen kann.
Was denkst du was da wohl besser geeignet ist?

gruß Teekeks

DeddyH 13. Nov 2008 19:11

Re: Frage zu einer Simulation
 
Zitat:

Zitat von teekeks
Was denkst du was da wohl besser geeignet ist?

Die Frage ist so aber falsch gestellt. Besser wäre: was denkst Du, welche Komponente Du für welche Teilaufgabe verwenden kannst?

Pro-Grammierer 13. Nov 2008 19:12

Re: Frage zu einer Simulation
 
Meine Problemstellung (langsam nervts, ich weiß):

Ich brauch ein Button mit einem OnClick Ereignis, dass besagt, dass zwei Zahlen anfangen zu laufen. Eine Zahl für die Anzahl des geflossenen Benzins, eine Zahl für den Preis in Euro. (geht das nicht auch mit Editfeldern?!)
Zwei Labels, die das ganze halt beschriften.
Einen Button, der eben das OnClik Ereignis ausführt.

Wie soll ich das ganze verpacken? Ich bin maßlos überfordert, was ich eig. nicht nachvollziehen kann...

Teekeks 13. Nov 2008 19:19

Re: Frage zu einer Simulation
 
zuerst mal die besagten Komponente auf die Form klatschen. (Zwei Labels+Einen Button)
Dann Doppelclick auf den Button.
Dort dann das entschprechende reinschreiben (wass weis ich z.B.
Delphi-Quellcode:
inc(Liter);
betrag:=betrag+preis_pro_Liter;
Label1.Caption:=zahl1+Liter;
Label2.Caption:=zahl2+betrag;
)

DeddyH 13. Nov 2008 19:20

Re: Frage zu einer Simulation
 
Fangen wir einfach an: Du definierst Dir 2 Konstanten vom Typ double (=Fließkommazahl), eine für den Literpreis und eine für den Durchfluss pro Takt. Zusätzlich zwei globale Variablen (auch double) für den aktuellen Preis und das aktuell gezapfte Volumen, die Du mit 0 vorbelegst. Auf dem Formular platzierst Du zusätzlich zu Deinem Timer (Enabled auf false gestellt) noch 2 Labels und einen Button. Der Button schaltet den Timer ein bzw. aus
Delphi-Quellcode:
Timer1.Enabled := not Timer1.Enabled;
So, im Timer-Event erhöhst Du nun Volumen um Durchsatz, multiplizierst das mit dem Literpreis, um den aktuellen Preis zu erhalten und gibst diese beiden Zahlen auf den Labels aus (FloatToStr).
Versuch es mal auf diesem Weg.

Fridolin Walther 13. Nov 2008 19:22

Re: Frage zu einer Simulation
 
[OT]Wie sie wieder alle schneller sind :(.[/OT]

Statt FloatToStr wäre Format übrigens sinnvoller, weil mans hübscher formatieren kann :).

DeddyH 13. Nov 2008 19:27

Re: Frage zu einer Simulation
 
Format ist allerdings eher was für Fortgeschrittene ;) . MIr fällt übrigens ein, dass der aktuelle Preis auch eine lokale Variable sein darf, aber ist erstmal egal.

Pro-Grammierer 13. Nov 2008 19:41

Re: Frage zu einer Simulation
 
Ok war grad draußen. Ich werd mich wieder ransetzen. Danke für die kurze Erläuterung

Pro-Grammierer 13. Nov 2008 19:48

Re: Frage zu einer Simulation
 
Ich versteh die ganzen Fachsbegriffe nicht oô Und schulisch bin ich noch nicht soweit ausgebildet, dass ich jemals Fließkommazahlen hatte.

DeddyH 13. Nov 2008 19:50

Re: Frage zu einer Simulation
 
Eine Fließkommazahl ist eine Zahl mit Nachkommastellen, im Gegensatz zu einer ganzen Zahl.

[edit] Achja, In Pascal ist der Punkt der Dezimaltrenner, nicht das Komma.
Delphi-Quellcode:
const Literpreis = 1,23; //geht nicht, falscher Trenner
const Literpreis = 1.23; //so muss das geschrieben werden
[/edit]

Pro-Grammierer 13. Nov 2008 19:51

Re: Frage zu einer Simulation
 
Achso, also mit Real gell?

DeddyH 13. Nov 2008 19:53

Re: Frage zu einer Simulation
 
Jepp, real oder double (ich nehme immer double, um Missverständnissen vorzubeugen).

Pro-Grammierer 13. Nov 2008 19:56

Re: Frage zu einer Simulation
 
Und was genau sind globale Variable?

DeddyH 13. Nov 2008 19:58

Re: Frage zu einer Simulation
 
Delphi-Quellcode:
unit Wuppdi;

uses ...

type ...

implementation

var Global: double = 1.23; //globale Variable, gilt für die ganze Unit

procedure TFormBlubb.MachWas();
var Lokal: integer; //lokale Variable, nur innerhalb der Methode gültig
begin
  ...
end;

Fridolin Walther 13. Nov 2008 20:03

Re: Frage zu einer Simulation
 
Man unterscheidet Variablen zw. Global und Lokal. Wenn Du eine Variable in einer Funktion oder Prozedur deklarierst wie z.B. hier:

Delphi-Quellcode:
procedure TestFunktion();
var
  TestVariable : Integer;
begin
  TestVariable := 2 * 2;
end;


procedure TestFunktion2()
begin
  TestVariable := 2 * 2;
end;
Dann ist die Variable TestVariable nur in der entsprechenden Prozedur oder Funktion (hier Testfunktion()) verfügbar. Entsprechend würde Delphi in der TestFunktion2 einen Fehler melden, weil die Variable TestVariable für den die TestFunktion2 nicht gilt.

Eine Globale Variable wird ausserhalb einer Funktion deklariert. Dadurch gilt sie, vereinfacht gesagt, mehr oder weniger überall. Beispiel:

Delphi-Quellcode:
var
  TestVariableGlobal : Integer;

procedure TestFunktion();
begin
  TestVariableGlobal := 2 * 2;
end;

procedure TestFunktion2()
begin
  TestVariableGlobal := 2 * 2;
end;
In dem Fall gibt es nichts auszusetzen für Delphi. Denn TestVariableGlobal ist Global deklariert, existiert also sowohl in TestFunktion() als auch in TestFunktion2(), sowie in allen anderen Funktionen die es da noch geben mag.

[OT]Und er war wieder schneller :([/OT]

DeddyH 13. Nov 2008 20:06

Re: Frage zu einer Simulation
 
Deshalb sollst Du die angesprochenen Variablen auch global deklarieren, da sie sonst ihren Wert nach Beendigung der enhaltenden Methode verlieren würden, Du könntest also nicht hochzählen.

[edit] Dafür warst Du ausführlicher [/edit]


Alle Zeitangaben in WEZ +1. Es ist jetzt 14:55 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