Entwickler-Ecke

Delphi Language (Object-Pascal) / CLX - Array-Typ erforderlich


Genei - Do 20.12.07 01:11
Titel: Array-Typ erforderlich
bekomme in den zeilen 46, 46, 49, 49, 65, 65, 65, 65, 66, 66, 66, 66 und 74 den fehler array-typ erforderlich.
habe schon gegrübelt komme aber nicht darauf wie ich ihn beheben kann.
mir würde schon ein kleines beispiel an einer zeile reichen, da ich denke, dass ich ihn dann auch auf die anderen zeilen übertragen kann.


Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:
36:
37:
38:
39:
40:
41:
42:
43:
44:
45:
46:
47:
48:
49:
50:
51:
52:
53:
54:
55:
56:
57:
58:
59:
60:
61:
62:
63:
64:
65:
66:
67:
68:
69:
70:
71:
72:
73:
74:
75:
76:
77:
78:
79:
80:
81:
82:
83:
84:
85:
86:
87:
88:
89:
90:
91:
92:
93:
94:
95:
96:
97:
98:
99:
100:
unit Unit1;

interface

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

type
  TForm1 = class(TForm)
    Image1: TImage;
    Image2: TImage;
    Image3: TImage;
    Image4: TImage;
    Image5: TImage;
    Image6: TImage;
    procedure FormCreate(Sender: TObject);
    procedure Image1Click(Sender: TObject);
  private
    { Private-Deklarationen }
  public
    { Public-Deklarationen }
  end;

var
  Form1: TForm1;
  zweitekarte: boolean = true;
  karte1, karte2: integer;
  karte: array [1..3of string;
  position: array [1..6of integer;
  deckblatt1, deckblatt2: string;

implementation

{$R *.dfm}

procedure TForm1.FormCreate(Sender: TObject);
var anzahl, k, zufall, nummer: integer;
    karte: array [1..6of string;
begin

randomize;
 while anzahl > 0 do
  begin
   zufall := random(anzahl)+1;
   nummer[anzahl] := position[zufall];
  for k := zufall to anzahl-1 do
   begin
    position[k] := position[k+1];
   end;
  anzahl := anzahl -1;
 end;

 image1.Picture.LoadFromFile('images/hansawappen.jpg');
 image2.Picture.LoadFromFile('images/hansawappen.jpg');
 image3.Picture.LoadFromFile('images/hansawappen.jpg');
 image4.Picture.LoadFromFile('images/hansawappen.jpg');
 image5.Picture.LoadFromFile('images/hansawappen.jpg');
 image6.Picture.LoadFromFile('images/hansawappen.jpg');

 karte[1]:= 'images/spieler1.jpg';
 karte[2]:= 'images/spieler2.jpg';
 karte[3]:= 'images/spieler3.jpg';

 position[1]:= 1; position[2]:= 2; position[3]:= 3;
 position[4]:= 3; position[5]:= 2; position[6]:= 1;
end;

procedure TForm1.image1Click(Sender: TObject);
var i, k: integer;
begin
zweitekarte:= not(zweitekarte);
i:= strtoint(timage(sender).name[6]); showmessage('position_'+inttostr(i)+' gedrückt');
timage(sender).Picture.LoadFromFile(karte[position[i]]);
deckblatt1:= timage(sender).name; showmessage('deckblatt1'+'wurde ausgewählt');

if zweitekarte
  then begin
   karte1:= i;
   deckblatt1:= timage(sender).Name;
  end
 else begin
  karte2:= i;
  deckblatt2:= timage(sender).name;
 end;

if zweitekarte
 then
  if position[karte1] <> position[karte2]
   then
    begin
    messagedlgpos('gesehn?', mtconfirmation, mbyesnocancel, 0400400);
     for k:=0 to componentcount-1 do
      if (timage(components[k]).name=deckblatt1) or (timage(components[k]).name=deckblatt2)
       then timage(components[k]).Picture.LoadFromFile('hansawappen.jpg');
      end
  // else
end;

end.



mfg..


Popov - Do 20.12.07 01:26

In der Zeile 46 steht z.B.


Delphi-Quelltext
1:
nummer[anzahl] :=                    


nummer ist nur ein Integer, allerdings versuchst du es als Array zu nutzen.

Den Rest habe ich nicht geprüft, wird aber auch sowas in der Richtung sein.


DrRzf - Do 20.12.07 03:22

nächster fehler.
anzahl ist als var in FormCreate erstellt.
Anzahl wurde kein wert vor der benutzung zugewiesen.
du arbeitest also mit einem wert der grad zufällig in dem speicherbereich stand auf den die var zugewiesen wurde.

das selbe in zeile 49

Delphi-Quelltext
1:
position[k] := position[k+1];                    


position wurde global deklariert. daher ist das array mit 0en vorinitialisiert.
da der inhalt aber nicht geändert wurde, schiebst du hier nur 0en durch die gegend.