Und beim lesen des Quellcode hab' ich Augenkrebs bekommen.
Das kann man doch Übersichtlicher und lesbarer gestalten:
Delphi-Quellcode:
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, Grids, StdCtrls;
type
TForm1 =
class(TForm)
Button1: TButton;
Button2: TButton;
Button3: TButton;
StringGrid1: TStringGrid;
Edit1: TEdit;
Edit2: TEdit;
procedure Button1Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
procedure Button3Click(Sender: TObject);
procedure FormCreate(Sender: TObject);
private
FZufallsZahl:
array[1..20]
of Integer;
public
{ Public-Deklarationen }
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
procedure TForm1.FormCreate(Sender: TObject);
var
I: Byte;
begin
Randomize;
for I := 1
to 20
do
begin
FZufallsZahl[I] := Random(256);
end;
end;
procedure TForm1.Button1Click(Sender: TObject);
var
I: Byte;
begin
for I := 1
to 20
do
begin
StringGrid1.Cells[1,I] := IntToStr(FZufallsZahl[I]);
end;
end;
procedure TForm1.Button2Click(Sender: TObject);
begin
Edit2.Text := IntToStr(FZufallsZahl[StrToInt(Edit1.Text)]);
end;
procedure TForm1.Button3Click(Sender: TObject);
var
I: Integer;
begin
for I := 1
to 20
do
begin;
FZufallsZahl[I] := StrToInt(StringGrid1.Cells[1,I]);
end;
end;
end.
Übrigens funktioniert der Code oben, so wie Du es wolltest.
Und noch besser: man kann ihn lesen
Dein Problem war die "Sichtbarkeit" der Variable zufallszahl.
In jeder Prozedur erstellst Du diese Variabel neu und wunderst Dich, warum es nicht so will, wie es soll.
Wenn Du eine Variabel in einer Prozedur erstellst, also im var-Abschnitt der Prozedur, dann ist diese nur in dieser Prozedur gültig, auch wenn sie den gleichen Namen hat wie in einer anderen Prozedur.
Programmieren ist die Kunst aus Nullen und Einsen etwas sinnvollen zu gestalten.
Der bessere Künstler ist allerdings der Anwender, denn dieser findet Fehler, welche sich der Programmierer nicht vorstellen konnte.