Autor Beitrag
bf109g.01
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 84



BeitragVerfasst: Do 25.08.11 15:17 
Hallo, ich habe zwei verschiedene Recordtypen. Und zwei jeweils dazugehörige Arraytypen für diese Records angelegt.
Außerdem existieren natürlich noch mehrere Arrays, welche diesen Typen entsprechen.
ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
//Unit1
type  TFrage = record
                [...]
              end;
 FragenArray = array[1..150of TFrage;

var AFragen, AFilter: FragenArray;

//Unit2
type  TKategorie = record
                    [...] 
                   end;
 KategArray = array[1..50of TKategorie;

var AKateg, Löschliste: KategArray;

Mein Problem ist, dass ich von 2 (uns später vllt 3) verschiedenen Units auf ein und dieselben Record-Arrays Zugriff benötige.
Alternative wäre den gleichen Programmcode in jeder Unit neu einzufügen, nach jedem Zugriff in einer Datei auf der Festplatte zu speichern und von dort mit einer anderen Unit weiterzuarbeiten.
Meiner Meinung nach ist das weder elegant noch effizient, deshalb wüsste ich gerne, wo/wie ich das deklarieren kann, damit alle Units Zugriff auf die RecorsTypen, die Arraytypen und die unter var deklarierten Arrays mit den Daten haben.
Narses
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Administrator
Beiträge: 10183
Erhaltene Danke: 1256

W10ent
TP3 .. D7pro .. D10.2CE
BeitragVerfasst: Do 25.08.11 16:17 
Moin!

Packe die gemeinsamen Deklarationen in eine eigene Unit und die bindest du dann per uses da ein, wo du sie brauchst. :idea:

cu
Narses

_________________
There are 10 types of people - those who understand binary and those who don´t.
bf109g.01 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 84



BeitragVerfasst: Do 25.08.11 16:22 
user profile iconNarses hat folgendes geschrieben Zum zitierten Posting springen:
Packe die gemeinsamen Deklarationen in eine eigene Unit und die bindest du dann per uses da ein, wo du sie brauchst. :idea:


Schon probiert, klappte nicht.
Wie/ unter welchem Punkt muss ich die Infos in die Unit schreiben?

So sieht meine Deklarationsunit aus, die anderen Units erkennen die ArrayTypen nicht.
ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
unit Deklaration;

interface

uses Forms, Classes, Graphics;
type  TKategorie = record
                   [...]
                   end;
 KategArray = array[1..50of TKategorie;


type  TFrage = record
               [...]
               end;
 FragenArray = array[1..150of TFrage;

implementation

end.
Narses
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Administrator
Beiträge: 10183
Erhaltene Danke: 1256

W10ent
TP3 .. D7pro .. D10.2CE
BeitragVerfasst: Do 25.08.11 18:25 
Moin!

user profile iconbf109g.01 hat folgendes geschrieben Zum zitierten Posting springen:
Schon probiert, klappte nicht.
Was heißt das als Fehlermeldung? :lupe: ;)

user profile iconbf109g.01 hat folgendes geschrieben Zum zitierten Posting springen:
Wie/ unter welchem Punkt muss ich die Infos in die Unit schreiben?
Ist schon richtig so. :zustimm:

cu
Narses

_________________
There are 10 types of people - those who understand binary and those who don´t.
Xion
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
EE-Maler
Beiträge: 1952
Erhaltene Danke: 128

Windows XP
Delphi (2005, SmartInspect), SQL, Lua, Java (Eclipse), C++ (Visual Studio 2010, Qt Creator), Python (Blender), Prolog (SWIProlog), Haskell (ghci)
BeitragVerfasst: Do 25.08.11 23:25 
user profile iconbf109g.01 hat folgendes geschrieben Zum zitierten Posting springen:
die anderen Units erkennen die ArrayTypen nicht.

Du musst in deinen andren Units die Unit "Deklaration" bei uses einbinden :nixweiss:

user profile iconbf109g.01 hat folgendes geschrieben Zum zitierten Posting springen:

Mein Problem ist, dass ich von 2 (uns später vllt 3) verschiedenen Units auf ein und dieselben Record-Arrays Zugriff benötige.

In dem Fall müsstest du natürlich auch die Arrays selbst in eine Unit packen (also bei "Deklaration" mit rein)

_________________
a broken heart is like a broken window - it'll never heal
In einem gut regierten Land ist Armut eine Schande, in einem schlecht regierten Reichtum. (Konfuzius)
Bergmann89
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 1742
Erhaltene Danke: 72

Win7 x64, Ubuntu 11.10
Delphi 7 Personal, Lazarus/FPC 2.2.4, C, C++, C# (Visual Studio 2010), PHP, Java (Netbeans, Eclipse)
BeitragVerfasst: Fr 26.08.11 15:59 
Hey,

so wie das aussieht willst du die Arrays als globale Variable definieren. Das sollte man aber vermeiden, weil man bei globalen Varaiblen schnell den Überblick verliert. Wenn du uns beschreibst, was genau du vor hast, dann könn wir dir vlt eine besser Lösung für dein Problem geben ;) Aber um erstma deine Frage zu beantworten:
ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
unit uTypes;

interface

type
  TTestArray = array of Integer;

var
  MyTestArray: TTestArray;

implementation

end.


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:
unit Unit1;

interface

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

type
  TForm1 = class(TForm)
    Button1: TButton;
    Memo1: TMemo;
    procedure FormCreate(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.FormCreate(Sender: TObject);
var
  i: Integer;
begin
  for i := 0 to High(MyTestArraydo
    Memo1.Lines.Add(IntToStr(MyTestArray[i]));
end;

end.




MfG Bergmann.

_________________
Ich weiß nicht viel, lern aber dafür umso schneller^^