AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Object-Pascal / Delphi-Language Delphi auf variable einer anderen unit zugreifen klapt nicht

auf variable einer anderen unit zugreifen klapt nicht

Ein Thema von TheAn00bis · begonnen am 5. Dez 2004 · letzter Beitrag vom 7. Dez 2004
Antwort Antwort
Seite 1 von 2  1 2   
TheAn00bis

Registriert seit: 7. Jun 2004
386 Beiträge
 
#1

auf variable einer anderen unit zugreifen klapt nicht

  Alt 5. Dez 2004, 17:06
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 Bild.canvas.Pen.Color := Farben.vordergrundfarbe; schreibe. Warum?
  Mit Zitat antworten Zitat
TheAn00bis

Registriert seit: 7. Jun 2004
386 Beiträge
 
#2

Re: auf variable einer anderen unit zugreifen klapt nicht

  Alt 5. Dez 2004, 19:47
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!
Angehängte Dateien
Dateityp: zip test_444.zip (3,1 KB, 13x aufgerufen)
  Mit Zitat antworten Zitat
Benutzerbild von fkerber
fkerber
(CodeLib-Manager)

Registriert seit: 9. Jul 2003
Ort: Ensdorf
6.716 Beiträge
 
Delphi XE Professional
 
#3

Re: auf variable einer anderen unit zugreifen klapt nicht

  Alt 5. Dez 2004, 19:52
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
Frederic Kerber
  Mit Zitat antworten Zitat
Benutzerbild von Helmi
Helmi

Registriert seit: 29. Dez 2003
Ort: Erding, Republik Bayern
3.283 Beiträge
 
Delphi XE2 Professional
 
#4

Re: auf variable einer anderen unit zugreifen klapt nicht

  Alt 5. Dez 2004, 19:58
und die Unit1 ist nicht im Projekt dabei

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

ich hab das mal im Projekt gemacht
Angehängte Dateien
Dateityp: zip test_496.zip (213,4 KB, 3x aufgerufen)
  Mit Zitat antworten Zitat
TheAn00bis

Registriert seit: 7. Jun 2004
386 Beiträge
 
#5

Re: auf variable einer anderen unit zugreifen klapt nicht

  Alt 6. Dez 2004, 15:55
Ich bekomme es trotz des super Beispiels nicht hin .

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 ...

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?)
  Mit Zitat antworten Zitat
Benutzerbild von fkerber
fkerber
(CodeLib-Manager)

Registriert seit: 9. Jul 2003
Ort: Ensdorf
6.716 Beiträge
 
Delphi XE Professional
 
#6

Re: auf variable einer anderen unit zugreifen klapt nicht

  Alt 6. Dez 2004, 18:13
Hi!

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


Ciao Frederic
Frederic Kerber
  Mit Zitat antworten Zitat
Benutzerbild von Helmi
Helmi

Registriert seit: 29. Dez 2003
Ort: Erding, Republik Bayern
3.283 Beiträge
 
Delphi XE2 Professional
 
#7

Re: auf variable einer anderen unit zugreifen klapt nicht

  Alt 6. Dez 2004, 18:15
Was willst du überhaupt damit machen?
  Mit Zitat antworten Zitat
TheAn00bis

Registriert seit: 7. Jun 2004
386 Beiträge
 
#8

Re: auf variable einer anderen unit zugreifen klapt nicht

  Alt 6. Dez 2004, 18:17
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='pinselthen 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

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 ), 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...
  Mit Zitat antworten Zitat
Benutzerbild von fkerber
fkerber
(CodeLib-Manager)

Registriert seit: 9. Jul 2003
Ort: Ensdorf
6.716 Beiträge
 
Delphi XE Professional
 
#9

Re: auf variable einer anderen unit zugreifen klapt nicht

  Alt 6. Dez 2004, 20:25
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
Frederic Kerber
  Mit Zitat antworten Zitat
Benutzerbild von runningsoft
runningsoft

Registriert seit: 8. Okt 2004
Ort: Bernau
71 Beiträge
 
Delphi 2010 Professional
 
#10

Re: auf variable einer anderen unit zugreifen klapt nicht

  Alt 6. Dez 2004, 21:30
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
Steffen
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2   

Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 15:21 Uhr.
Powered by vBulletin® Copyright ©2000 - 2019, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2019 by Daniel R. Wolf