Nen Guten Tag wünsche ich,
Ich versuche für die Schule den "Sieb des Eratosthenes" zu programmieren.
Das hier ist mein Quellcode:
Delphi-Quellcode:
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
StdCtrls, ExtCtrls;
type
TForm1 =
class(TForm)
ListBox1: TListBox;
Button1: TButton;
Panel1: TPanel;
Edit1: TEdit;
Edit2: TEdit;
procedure Button1Click(Sender: TObject);
private
{ Private-Deklarationen }
public
{ Public-Deklarationen }
end;
var
Form1: TForm1;
implementation
{$R *.DFM}
procedure TForm1.Button1Click(Sender: TObject);
Var Untergrenze, Obergrenze, Zaehler1, Zaehler2, Zaehler3:INTEGER;
Var Gestrichen:
ARRAY[2..2147483647]
of BOOLEAN;
begin
ListBox1.Clear;
Untergrenze:=StrToInt(Edit1.Text);
Obergrenze:=StrToInt(Edit2.Text);
IF Untergrenze < Obergrenze
Then Panel1.Caption:='
Die Untergrenze darf die Obergrenze nicht überschreiten!'
Else IF Obergrenze > 2147483647
Then Panel1.Caption:='
Die Obergrenze ist zu hoch! Sie darf maximal 2147483647 betragen.'
Else IF Untergrenze < 2
Then Panel1.Caption:='
Die Untergrenze muss mindestens 2 betragen!'
Else
Gestrichen[2]:=false;
For Zaehler1:=2
TO 2147483647
DO
IF Gestrichen[Zaehler1]=false
Then FOR Zaehler2:=2
TO 46342
DO
Gestrichen[Zaehler1*Zaehler2]:=true;
For Zaehler3:=Untergrenze
TO Obergrenze
DO
IF Gestrichen[Zaehler3]=false
Then ListBox1.Items.Add(IntToStr(Zaehler3));
end;
end.
Wenn ich das ausführe bekomme ich einen "Zugriffsfehler" Die Leiche liegt beim "Zaehler1*Zaehler2" begraben, doch warum will er das nicht?
Danke im Vorraus