Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi auf variable einer anderen unit zugreifen klapt nicht (https://www.delphipraxis.net/35329-auf-variable-einer-anderen-unit-zugreifen-klapt-nicht.html)

TheAn00bis 5. Dez 2004 17:06


auf variable einer anderen unit zugreifen klapt nicht
 
Hi,

ich habe zwei Units: Unit1, Farben. Auf Unit1 steht unter Implementation "uses farben;". Die Variable "vordergrundfarbe" ist in Farben unter Public deklariert.

Unit1 sieht "vordergrundfarbe" als undefinierten bezeichner, wenn ich
Delphi-Quellcode:
Bild.canvas.Pen.Color := Farben.vordergrundfarbe;
schreibe. Warum?

TheAn00bis 5. Dez 2004 19:47

Re: auf variable einer anderen unit zugreifen klapt nicht
 
Liste der Anhänge anzeigen (Anzahl: 1)
Ok, hier ein winziges Beispiel, wie ich es gemacht habe. Auch hier klappt es nicht. Wäre super wenn sich das jemand anschauen könnte!

fkerber 5. Dez 2004 19:52

Re: auf variable einer anderen unit zugreifen klapt nicht
 
Hi!

1) Du darfst nicht Unit1.Mess schreiben, sondern Form1.Mess
2) Du versuchts auf etwas zuzugreifen, was es noch nicht gibt. Mess wird in Form1.Create zugewiesen. Wenn du dann nach dem Start auf den Button klickst wurde das Create ja noch nicht ausgeführt ==> Bumm
(Dieser Fehler beruht auf de Tatsache, die Helmi weiter unten noch gepostet hat)

Ciao Frederic

Helmi 5. Dez 2004 19:58

Re: auf variable einer anderen unit zugreifen klapt nicht
 
Liste der Anhänge anzeigen (Anzahl: 1)
und die Unit1 ist nicht im Projekt dabei

Projekt - Dem Projekt hinzufügen
Unit1.pas auswählen

ich hab das mal im Projekt gemacht

TheAn00bis 6. Dez 2004 15:55

Re: auf variable einer anderen unit zugreifen klapt nicht
 
Ich bekomme es trotz des super Beispiels nicht hin :cry:.

Also ich muss als erstes die *.pas, die die Variable enthält in das Projekt einfügen, in dem ich auf Projekt->dem Prohekt hinzufügen gehe, dann schreib ich in den Public bereich der besagten *.pas die Variable rein, dann schreib ich noch in die pas, die die Variable bekommen möchte uses "die pas mit der variable". Dann ruf ich die Variable mit "NamederForminderdieVariableist.variable" auf, oder?

Was kann man da falsch machen? Wie kann ich überprüfen, ob die *pas in der Projektdatei drin ist?

Der findet die Variable immer noch nicht :cry:...

edit: Wenn ich die *.exe ausführe, dann werden beide Formen geöffnet, von daher muss die ja auch im Projekt sein, oder? Spielt es eine Rolle, welche zu erst ausgeführt wird? (da sonst die andere Variable ja noch nicht deklariert wurde?)

fkerber 6. Dez 2004 18:13

Re: auf variable einer anderen unit zugreifen klapt nicht
 
Hi!

Häng dein Projekt mal nochmal an.
Die Reihenfolge ist nicht so wichtig, da sie ja beide created werden.


Ciao Frederic

Helmi 6. Dez 2004 18:15

Re: auf variable einer anderen unit zugreifen klapt nicht
 
Was willst du überhaupt damit machen?

TheAn00bis 6. Dez 2004 18:17

Re: auf variable einer anderen unit zugreifen klapt nicht
 
Vielleicht hilft ja der SourceCode...

Erste Unit:
Delphi-Quellcode:
unit Unit1;

interface

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

type
  TForm1 = class(TForm)
    procedure SpeedButton7Click(Sender: TObject);
    procedure SpeedButton8Click(Sender: TObject);
    procedure SpeedButton9Click(Sender: TObject);
    procedure ScrollBox1MouseMove(Sender: TObject; Shift: TShiftState; X,
      Y: Integer);
    procedure SpeedButton12Click(Sender: TObject);
    procedure SpeedButton13Click(Sender: TObject);
    procedure Button1Click(Sender: TObject);
//...
  private
  werkzeug: string;
  zaehler, zaehler1, menge: integer;
//...
    { Private-Deklarationen }
  public
    { Public-Deklarationen }
  end;

var
  Form1: TForm1;

implementation

uses Farben;

{$R *.DFM}

//....

Procedure TForm1.PaintBox1MouseMove(Sender: TObject; Shift: TShiftState; X,
  Y: Integer);
   var xwert, ywert,i: Integer;
begin
StatusBar1.Panels[1].Text := Format('%d : %d', [X,Y]);

  if Zeichnen then begin

      if werkzeug='pinsel' then begin
         Bild.canvas.Brush.Style := bssolid;
         Bild.canvas.Pen.Color := farben.vordergrundfarbe;

//....
2.Unit:
Delphi-Quellcode:
unit Farben;

interface

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

type
  TFarben = class(TForm)
    Panel2: TPanel;
    Image1: TImage;
    procedure Panel5Click(Sender: TObject);
    procedure Image1MouseMove(Sender: TObject; Shift: TShiftState; X,
      Y: Integer);
    procedure Image1Click(Sender: TObject);
    procedure FormCreate(Sender: TObject);
//...
  private
    farbe1, farbe2: BOOLEAN;
    farbe: TColor;
    { Private-Deklarationen }
  public
     hintergrundfarbe: TColor;
     vordergrundfarbe: TColor;
    { Public-Deklarationen }
  end;

var
  Farben1: TFarben;

implementation


{$R *.DFM}
Code:
Delphi-Quellcode:
program MRpaintdpr;

uses
  Forms,
  Unit1 in 'Unit1.pas' {Form1},
  Farben in 'Farben.pas' {Farben};

{$R *.RES}

begin
  Application.Initialize;
  Application.CreateForm(TForm1, Form1);
  Application.CreateForm(TFarben, Farben1);
  Application.Run;
end.
Kein Ahnung, ob das letzte gebraucht wird. Wäre super wenn sich da mal jemand durchschlagen könnte. ICh bin kurz davor mit dem Kopf vor die Wand zu rennen :wall: :pale: :wink:

P.S.: Coole Idee mit den Weihnatchtssmilies, sowas hab ich in keinem anderen Forum erlebt!

//Edit: Ich habe eine Art Paint programmiert (ist ein wenig besser, als MS's Paint :-D ), jetzt will ich aber die Farbauswahl in einer neuen Form haben, da das dann wie in professionellen Programmen ist, aber leider klappt die Variable-Übergabe ja nicht...

fkerber 6. Dez 2004 20:25

Re: auf variable einer anderen unit zugreifen klapt nicht
 
Hi!

Evtl. ist das Problem, dass bei dir Unit und Form gleich heißen.
Probier mal den Zugriff über Farben.Farben.Vordergrundfarbe.


BTW: Was kommt denn für ein Fehler?


Ciao Frederic

runningsoft 6. Dez 2004 21:30

Re: auf variable einer anderen unit zugreifen klapt nicht
 
Hallo An00bis,

ich finde in Deinem geposteten Quelltext der Unit Farben keinen Verweis auf Unit1. Müsste der nicht im uses - Bereich der Unit Farben stehen (gleich unter interface)?

Steffen


Alle Zeitangaben in WEZ +1. Es ist jetzt 18:31 Uhr.
Seite 1 von 2  1 2      

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz