Autor Beitrag
CK_CK
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 140

Win 2000, Win XP Prof
Delphi 2006 Enterprise
BeitragVerfasst: Fr 12.08.05 18:33 
Hallo Delphi-Forumianer! *ggg*

Ich sitze hier schon seit Stunden an folgendem Problem:
Ich habe einen neuen typ generiert:
ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
type
  TBeispiel = record
    Visible: Boolean;
    pos_x,pos_y: Integer;
    Tag: Byte;
  end;

Das habe ich in ein dynamisches Array gepackt:
ausblenden Delphi-Quelltext
1:
2:
var
  Beispiel: Array of TBeispiel;


Wenn ich jetzt im Programm die Länge dieses Arrays anpassen will (SetLength(Beispiel,10);), bekomme ich immer einen Ausnahmefehler...

Weiß jemand, was ich machen soll?

Ich bin schon so verzweifelt, dass ich am überlegen bin, ob ich
ausblenden Delphi-Quelltext
1:
2:
var
  Beispiel: Array[1..99999] of TBeispiel;
machen soll... ;)

Danke für eure Hilfe,
CK_CK

Moderiert von user profile iconAXMD: Code- durch Delphi-Tags ersetzt.
Tilman
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 1405
Erhaltene Danke: 51

Win 7, Android
Turbo Delphi, Eclipse
BeitragVerfasst: Fr 12.08.05 18:49 
ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
 type
  TBeispiel = record
    Visible: Boolean;
    pos_x,pos_y: Integer;
    Tag: Byte;
  end;

  var beispiel: array of TBeispiel;
procedure TForm1.Button1Click(Sender: TObject);
begin
SetLength(Beispiel,100);
Beispiel[90].Visible := true;
end;


Dieser Code produziert bei mir keinen Fehler. Poste mal deinen genauen code.
CK_CK Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 140

Win 2000, Win XP Prof
Delphi 2006 Enterprise
BeitragVerfasst: Fr 12.08.05 18:55 
Also, ich hab' gerade genau deinen Code bei mir eingegeben und kompiliert...
(Das einzige was in meinem Code anders war ist: TBeispiel heißt TLinie...)

Nach einem klick auf den Button: Zugriffsverletzung... :(

CK_CK
Tilman
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 1405
Erhaltene Danke: 51

Win 7, Android
Turbo Delphi, Eclipse
BeitragVerfasst: Fr 12.08.05 19:06 
Tja, bei mir funzt es - bei dir nicht. ich kann mich nur nochmal wiederholen: Poste mal deine komplette Unit die den Fehler produziert, sonst kann dir hier wohl keiner Helfen.
CK_CK Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 140

Win 2000, Win XP Prof
Delphi 2006 Enterprise
BeitragVerfasst: Fr 12.08.05 19:19 
In Ordnung... :oops:
ausblenden Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
type
  TLinie = record
    Visible: Boolean;
    pos_x: Integer;
    pos_y: Integer;
    Tag: Byte;
  end;

var
  Tool: Byte;
  Skin: TPicture;
  Design: Array[1..24] of Array[1..18] of byte;
  Status: Boolean;
  Linien: Array of TLinie;

...
ausblenden Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
procedure TForm1.BitBtn1Click(Sender: TObject);
var
  i,j: Integer;
  tmpstr: String;
begin
  ListBox1.Clear;
  for j := 1 to 18 do begin
    tmpstr := '';
    for i := 1 to 24 do begin
      tmpstr := tmpstr + IntToStr(Design[i,j]) + ',';
    end;
    ListBox1.Items.Add(tmpstr);
  end;
  ThreadedTimer1.Enabled := True;
  SetLength(Linien,100);
  Linien[90].Visible := true;
end;


Aber das bringt glaub' ich auch nichts... Ist ja das gleiche wie oben...
Vielleicht liegt's ja an Delphi 5...
EDIT: Bei Delphi 7 klappt's auch nicht... Wie hast du's nur gemacht??? Hast du auch schon auf den Button geklickt... Der Laufzeitfehler kommt erst dann...

CK_CK


Zuletzt bearbeitet von CK_CK am Fr 12.08.05 19:31, insgesamt 3-mal bearbeitet
Tilman
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 1405
Erhaltene Danke: 51

Win 7, Android
Turbo Delphi, Eclipse
BeitragVerfasst: Fr 12.08.05 19:28 
Jetzt hast du aber genau die deklaration von "Linien" vorenthalten
CK_CK Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 140

Win 2000, Win XP Prof
Delphi 2006 Enterprise
BeitragVerfasst: Fr 12.08.05 19:32 
Da ist sie doch:

Zitat:
ausblenden Quelltext
1:
2:
3:
4:
5:
6:
var
  Tool: Byte;
  Skin: TPicture;
  Design: Array[1..24] of Array[1..18] of byte;
  Status: Boolean;
  Linien: Array of TLinie;


Oder ist irgendetwas in meiner uses-Klausel, was Dynamische Arrays nicht mag?
ausblenden Quelltext
1:
2:
3:
uses
  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
  Menus, ComCtrls, ToolWin, ImgList, StdCtrls, ExtCtrls, Buttons;


CK_CK
Tilman
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 1405
Erhaltene Danke: 51

Win 7, Android
Turbo Delphi, Eclipse
BeitragVerfasst: Fr 12.08.05 19:40 
user profile iconCK_CK hat folgendes geschrieben:
Da ist sie doch:

Zitat:
ausblenden Quelltext
1:
2:
3:
4:
5:
6:
var
  Tool: Byte;
  Skin: TPicture;
  Design: Array[1..24] of Array[1..18] of byte;
  Status: Boolean;
  Linien: Array of TLinie;


verarsch mich nicht freundchen, eben stand da noch Lasers: Array :wink:

user profile iconCK_CK hat folgendes geschrieben:
Oder ist irgendetwas in meiner uses-Klausel, was Dynamische Arrays nicht mag?
ausblenden Quelltext
1:
2:
3:
uses
  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
  Menus, ComCtrls, ToolWin, ImgList, StdCtrls, ExtCtrls, Buttons;


CK_CK


Bei mir funzt das! Kein Fehler, davür wird die Listbox voller Nullen geschrieben.


Bist du dir eigentlich 100%ig sicher das der fehler an dieser Stelle
SetLength(Linien,100);
Linien[90].Visible := true;
auftritt?


Zuletzt bearbeitet von Tilman am Fr 12.08.05 19:43, insgesamt 1-mal bearbeitet
CK_CK Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 140

Win 2000, Win XP Prof
Delphi 2006 Enterprise
BeitragVerfasst: Fr 12.08.05 19:43 
Ich weiß, ich hatte mich verschrieben...
(Im Programm und hab's falsch rüberkopiert, so ist's aber wie in meinem Programm... :oops:)

CK_CK
Tilman
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 1405
Erhaltene Danke: 51

Win 7, Android
Turbo Delphi, Eclipse
BeitragVerfasst: Fr 12.08.05 19:46 
Also bei mir (D7,WinXP) arbeitet dieser Code (abgesehen von Warnungen: Tool,Skin,Status deklariert aber nicht verwendet):

ausblenden volle Höhe 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:
unit Unit1;

interface

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

type
  TForm1 = class(TForm)
    BitBtn1: TBitBtn;
    ListBox1: TListBox;
    procedure BitBtn1Click(Sender: TObject);
  private
    { Private-Deklarationen }
  public
    { Public-Deklarationen }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}
type
  TLinie = record
    Visible: Boolean;
    pos_x: Integer;
    pos_y: Integer;
    Tag: Byte;
  end;

var
  Tool: Byte;
  Skin: TPicture;
  Design: Array[1..24] of Array[1..18] of byte;
  Status: Boolean;
  Linien: Array of TLinie;
procedure TForm1.BitBtn1Click(Sender: TObject);
var
  i,j: Integer;
  tmpstr: String;
begin
  ListBox1.Clear;
  for j := 1 to 18 do begin
    tmpstr := '';
    for i := 1 to 24 do begin
      tmpstr := tmpstr + IntToStr(Design[i,j]) + ',';
    end;
    ListBox1.Items.Add(tmpstr);
  end;
  SetLength(Linien,100);
  Linien[90].Visible := true;
end;

end.
LigH
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 239

Win98SE, Win2000SP4
D7
BeitragVerfasst: Fr 12.08.05 19:48 
Denkt mal darüber nach, ob bestimmte Compiler-Optionen das eventuell verhindern könnten.
CK_CK Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 140

Win 2000, Win XP Prof
Delphi 2006 Enterprise
BeitragVerfasst: Fr 12.08.05 19:55 
Ich merk' gerade, dass bei mir gar keine dynamischen Arrays funktionieren...

Aber nur in diesem Programm...

Wenn ich ein neues Projekt starte funktioniert alles einwandfrei...
(Dein Code, meiner und sonstige dynamische spielereien...)

*langsam durchdreh*

Wie kann so etwas nur sein???

Ich werd' einfach das Projekt löschen und es von vorne anfangen...
...Auch wenn's weh tut...

Aber TROTZDEM VIELEN DANK FÜR DEINE HILFE!!!

CK_CK
LigH
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 239

Win98SE, Win2000SP4
D7
BeitragVerfasst: Fr 12.08.05 19:56 
HAAALOOO - Erde an CK_CK!

Bitte die Compiler-Optionen überprüfen!
CK_CK Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 140

Win 2000, Win XP Prof
Delphi 2006 Enterprise
BeitragVerfasst: Fr 12.08.05 19:57 
Was soll da denn falsch sein?

CK_CK
Tilman
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 1405
Erhaltene Danke: 51

Win 7, Android
Turbo Delphi, Eclipse
BeitragVerfasst: Fr 12.08.05 19:58 
Nur noch als letzten Hinweis: Mann kann statt dynamischer Arrays auch Listen verwenden. Z.B. eine Zeigerkonstruktion. Eventuell musst du dein Programm also nicht wegwerfen. (Find ich eh sehr merkwürdig, hatte neulich aber mal ein ähnliches Problem, bestimmte Dinge liefen in genau einem Project nicht mehr)
Keldorn
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 2266
Erhaltene Danke: 4

Vista
D6 Prof, D 2005 Pro, D2007 Pro, DelphiXE2 Pro
BeitragVerfasst: Fr 12.08.05 20:03 
user profile iconCK_CK hat folgendes geschrieben:
ausblenden Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
procedure TForm1.BitBtn1Click(Sender: TObject);
var
  i,j: Integer;
  tmpstr: String;
begin
  ....
  ThreadedTimer1.Enabled := True;
  SetLength(Linien,100);
  ....
end;



was machst du in dem Timer-ereignis?

_________________
Lükes Grundlage der Programmierung: Es wird nicht funktionieren.
(Murphy)
LigH
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 239

Win98SE, Win2000SP4
D7
BeitragVerfasst: Fr 12.08.05 20:04 
user profile iconCK_CK hat folgendes geschrieben:
Was soll da denn falsch sein?

Solange du uns nicht schreibst, wie du sie eingestellt hast, können wir dir auch nicht sagen, ob sie eventuell falsch eingestellt sind, und eine der Optionen vielleicht die Array-Erweiterung verhindert.
CK_CK Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 140

Win 2000, Win XP Prof
Delphi 2006 Enterprise
BeitragVerfasst: Fr 12.08.05 20:12 
@Keldorn:
Der Timer macht (noch) gar nichts (keine Ereignisse),
ich hab ihn auch zum Test schon gelöscht, es funktioniert trotzdem nicht...

@LigH:
user defined image
(Das ist doch, was du meinst, oder?

CK_CK
Keldorn
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 2266
Erhaltene Danke: 4

Vista
D6 Prof, D 2005 Pro, D2007 Pro, DelphiXE2 Pro
BeitragVerfasst: Fr 12.08.05 20:16 
dann zeige mal deinen kompletten code, bzw häng dein Projekt als Anhang dran

_________________
Lükes Grundlage der Programmierung: Es wird nicht funktionieren.
(Murphy)
LigH
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 239

Win98SE, Win2000SP4
D7
BeitragVerfasst: Fr 12.08.05 20:20 
Genau.

"Erweiterte Syntax", "Offene Parameter", "Huge-Strings" sind an, gut.

"Strenge Prüfung von VAR-Strings" muss meist nicht sein - dürfte hier aber keine Auswirkung haben.

Noch sehe ich hier keine Ursache; da wird als nächstes wohl Quelltext-Debugging angesagt sein, um genau die Zeile zu finden, wo es passiert ist, sowie die Belegung der Variablen, als es passierte...