Entwickler-Ecke

Delphi Language (Object-Pascal) / CLX - von unit1 zugriff auf andere units


darkdester - Fr 22.10.04 12:47
Titel: von unit1 zugriff auf andere units
hallo leutz,

wie kann ich von unit1 auf ne var in unit2 zugreifen?

danke im voraus

mfg darkdester


Stübi - Fr 22.10.04 13:00

Hallo

Du musst die Variabel in der 2. Unit als public definieren.
Bei den Uses schreibst du den Titel deiner 2. Unit in die erste.
Und dann kanst du sie etwa so aufrufen (nicht ganz sicher)

Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
procedure
var
  Z         : TUnit;
  X         : Integer; //Als Beispiel
begin
  Z := TUnit.Create;
  X := Z.Variabel;  //Variabel so rausholen
  Z.Free  //Unbedingt wieder freigeben
end;


Gruss Stübi


jasocul - Fr 22.10.04 13:16

und nicht vergessen die unit2 in der uses-Klausel der unit1 aufzunehmen.


darkdester - Fr 22.10.04 13:21

hab ich jetzt irgendwie net gecheckt O.o


jasocul - Fr 22.10.04 13:23

Wenn du meins meinst:

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

interface

uses
  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
  ComCtrls, ExtCtrls, StdCtrls;

type
  TForm1 = class(TForm)
  private
    { Private-Deklarationen }
  public
    { Public-Deklarationen }
  end;

var
  Form1: TForm1;

implementation

{$R *.DFM}

uses
 Unit2; // Dies darfst du nicht vergessen, sonst hast du keinen Zugriff auf Unit2 !!!!!!!!

end.


Luzzifus - Fr 22.10.04 13:25

In der Unit in der du gern Zugriff hättest (hier unit1), schreibst du die Unit in der die Variable deklariert ist (hier unit2) in die uses:


Delphi-Quelltext
1:
2:
3:
4:
5:
6:
unit unit1;

interface

uses
  Windows, Messages, ..., unit2;


In der Unit in der die Variable ist auf die du gern Zugriff hättest musst du drauf achten dass eben selbige als public deklariert ist:

Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
unit unit2;

interface

uses
  Windows, Messages, ...;

type
  TForm2 = class(TForm)
    ...
  private
    { Private declarations }
  public
    { Public declarations }
    HIER DIE VARIABLE DEKLARIEREN !!!
  end;

jetz aber oder?! :twisted:


Stübi - Fr 22.10.04 13:26

Du hast die 2. Unit in etwa so:

Delphi-Quelltext
1:
2:
3:
4:
5:
6:
Unit2.pas
.
.
.
public
  X : Integer;

Und die erste Unit sieht dann etwa so aus:

Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
Unit1.pas
.
.
.
Uses
  ... Unit2;
.
.
.

procedure findvariabel;
var  
  Z         : TUnit;  
  y         : Integer; //Als Beispiel  
begin  
  Z := TUnit.Create;  
  y := Z.Variabel;  //Variabel so rausholen  
  Z.Free  //Unbedingt wieder freigeben  
end;


Besser?

Gruss Stübi

[edit] ups zu spät [/edit]


Luzzifus - Fr 22.10.04 13:28

lol na wenn er's jetzt ned gecheckt hat nachdem es 3 leute erklärt haben.. :D


darkdester - Fr 22.10.04 13:36

ehm bei mri steht jetzt

uses Unit2, Unit3;


reicht das schon?



muss das dann bei unit2 und 3 auch stehn?


Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
procedure findvariabel;
var  
  Z         : TUnit;  
  y         : Integer; //Als Beispiel  
begin  
  Z := TUnit.Create;  
  y := Z.Variabel;  //Variabel so rausholen  
  Z.Free  //Unbedingt wieder freigeben  
end;



häh für was soll das sein?


ne andere frage

wenn ich was in ascii umwandeln muss ich doch
Chr(X: Byte): Char; (laut hilfe)

nur was meint der mit X und mit Char?


Stübi - Fr 22.10.04 13:41

Du musst bei der Unit die die Hauptunit ist (UMain) und zwar nur dort die Units ins Uses schreiben auf die du zugreiffen willst. Mein Code war ein Beispiel musst ihn auf dich anpassen! Weiss ja nicht was für einen Wert du übergibst oder holen willst.

Stübi


Luzzifus - Fr 22.10.04 13:42

Die uses müssen nur in den Units stehen in denen sie auch gebraucht werden.

Das X ist die Variable die übergeben werden muss, in diesem Fall vom Typ Byte (also z.b. die ascii-codierung eines Buchstabens oder einer Taste). Das ":Char" hinter der Parameterliste gibt den Rückgabetyp an, da dies ja eine Funktion ist.

Und nichts für ungut, aber ich glaube du solltest dir für den Anfang mal die ersten paar Kapitel eines Delphi-Buches durchlesen, ich habe nämlich das Gefühl dass dir sämtliche Grundlagen über Variablen, Prozeduren/Funktionen und überhaupt über Delphi fehlen. :?


Stübi - Fr 22.10.04 13:43

darkdester hat folgendes geschrieben:
ehm bei mri steht jetzt
nur was meint der mit X und mit Char?

bezieht sich das auf mein Beispiel? Ich habe dort nur die Integer so bezeichnet weil mir nichts anderes einviel (oder einfiel???)


jasocul - Fr 22.10.04 13:48

darkdester hat folgendes geschrieben:
ehm bei mri steht jetzt

uses Unit2, Unit3;


reicht das schon?

wenn das in Unit1 steht, ja.

darkdester hat folgendes geschrieben:

muss das dann bei unit2 und 3 auch stehn?

Nein.

darkdester hat folgendes geschrieben:

ne andere frage

wenn ich was in ascii umwandeln muss ich doch
Chr(X: Byte): Char; (laut hilfe)

nur was meint der mit X und mit Char?


Wie du schon sagst, ist ne andere Frage -> Neues Topic

In der Hilfe steht aber bestimmt auch ein Beispiel


darkdester - Fr 22.10.04 13:51

hm mal ausproben
ob das jetzt funzt...


OK FUNZT :D

danke leutz^^