AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Programmieren allgemein Delphi Grafische Ausgabe von Zufallszahlen, Bestimmung von PI nach der Monte-Carlo-Methode
Thema durchsuchen
Ansicht
Themen-Optionen

Grafische Ausgabe von Zufallszahlen, Bestimmung von PI nach der Monte-Carlo-Methode

Ein Thema von hamptoncourt · begonnen am 20. Nov 2010 · letzter Beitrag vom 21. Nov 2010
Antwort Antwort
Benutzerbild von Sir Rufo
Sir Rufo

Registriert seit: 5. Jan 2005
Ort: Stadthagen
9.454 Beiträge
 
Delphi 10 Seattle Enterprise
 
#1

AW: Grafische Ausgabe von Zufallszahlen, Bestimmung von PI nach der Monte-Carlo-Metho

  Alt 21. Nov 2010, 14:22
Delphi-Quellcode:
procedure foo;
var
  u : integer;
begin
  u := 0;
  repeat

  until u = 25;
end;

procedure anotherfoo;
var
  u : integer;
begin
  u := 25;
end;
Das Problem ist, diese beiden Variablen u haben eine lokale Gültigkeit und wissen absolut nichts voneinander! Du würdest hier eine Variable benötigen mit einem größeren Gültigkeitsbereich.
Delphi-Quellcode:
var
  u : integer;
procedure foo;
begin
  u := 0;
  repeat

  until u = 25;
end;

procedure anotherfoo;
begin
  u := 25;
end;
Problematisch ist hierbei jetzt nur noch, dass wenn die procedure foo arbeitet man so keine Möglichkeit hat, von aussen die procedure anotherfoo aufzurufen.

Hier ein kleines Beispiel, wie so eine simple Abbruchbedingung in einer Form mit Buttons realisert werden kann
Delphi-Quellcode:
unit Unit1;

interface

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

type
  TForm1 = class( TForm )
    btnAbbruch: TButton;
    btnStart: TButton;
    procedure btnAbbruchClick( Sender : TObject );
    procedure btnStartClick(Sender: TObject);

  private
    { Private-Deklarationen }
    Abbruch : Boolean;

  public
    { Public-Deklarationen }
  end;

var
  Form1 : TForm1;

implementation

{$R *.dfm}

procedure TForm1.btnAbbruchClick( Sender : TObject );
  begin
    Abbruch := True;
  end;

procedure TForm1.btnStartClick(Sender: TObject);
begin
  Abbruch := False;
  while not Abbruch do
  begin
    // ganz tolle Berechnung

    // Der Anwendung die Möglichkeit geben anstehende Ereignisse abzuarbeiten
    Application.ProcessMessages;
  end;
end;

end.
Application.ProcessMessages ist hierbei einer der Schlüssel, denn ansonsten könntest du auf dem Button btnAbbruch Samba tanzen und es würde trotzdem nichts passieren und abgebrochen schon mal gar nichts.

Dieses ist ein simples Beispiel und eigentlich nicht wirklich schöner Stil.
Die Berechnung sollte innerhalb eines Threads erfolgen, den man sehr schon von aussen abbrechen kann.
Aber das würde die Aufgabe hier extrem sprengen, würde aber im Gegenzug die Trennung von Code und Ausgabe sehr elegant machen.
Kaum macht man's richtig - schon funktioniert's
Zertifikat: Sir Rufo (Fingerprint: ‎ea 0a 4c 14 0d b6 3a a4 c1 c5 b9 dc 90 9d f0 e9 de 13 da 60)

Geändert von Sir Rufo (21. Nov 2010 um 14:29 Uhr)
  Mit Zitat antworten Zitat
hamptoncourt

Registriert seit: 20. Nov 2010
34 Beiträge
 
#2

AW: Grafische Ausgabe von Zufallszahlen, Bestimmung von PI nach der Monte-Carlo-Metho

  Alt 21. Nov 2010, 15:37
wow ... danke für die ausführliche beschreibung ... das hilft mir auf jeden fall weiter ....

mir viel auch auf, dass u ja immer nur auf diese eine Prozedur beschränkt ist .... ich dummerchen *lol* hatte das dann oben zu den Variablen gesetzt dann funzte es auch ...

aber dein Beispiel ist auch sehr gut. Werde mich auf jeden Fall daran versuchen ... danke dir ...
  Mit Zitat antworten Zitat
Antwort Antwort


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 12:32 Uhr.
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz