AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein GUI-Design mit VCL / FireMonkey / Common Controls Delphi Variable aus anderer Unit kann nicht richtig ausgelesen werd
Thema durchsuchen
Ansicht
Themen-Optionen

Variable aus anderer Unit kann nicht richtig ausgelesen werd

Ein Thema von JBJHJM · begonnen am 30. Jun 2009 · letzter Beitrag vom 1. Jul 2009
 
Popov
(Gast)

n/a Beiträge
 
#11

Re: schon wieder ein Problem mit globale Variablen...

  Alt 30. Jun 2009, 14:31
Zitat von JBJHJM:
Ziel: Ich will auf eine Variable einer anderen Unit zugreifen, der Einfachheit halber erstmal mit showmessage(Form1.variable).
Problem: Der genannte Befehl erzeugt einfach nur eine leere Meldung.
Da du mit Form1.variable kommst und man deshalb nicht weiß wo du deine Variable deklariert hast, hier ein kleines 1 x 1 der Variablen. Ich habe 10 Variablen in verschiedenen Bereichen deklariert. Fünf in Unit2, fünf in Unit1. Je nachdem von wo man sie abrufen will, klappt es entweder nicht oder man muß etwas beachten. Zuerst Unit1 mit der Abfrage, dann Unit2:

Delphi-Quellcode:
unit Unit1;

interface

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

type
  TForm1 = class(TForm)
    Button1: TButton;
    procedure FormCreate(Sender: TObject);
    procedure Button1Click(Sender: TObject);
  private
    { Private-Deklarationen }
    Variable1a: String;
  public
    { Public-Deklarationen }
    Variable2a: String;
  end;


var
  Form1: TForm1;
  Variable3a: String;

implementation

{$R *.dfm}

uses
  Unit2;

var
  Variable4a: String;

procedure TForm1.FormCreate(Sender: TObject);
var
  Variable5a: String;
begin
  Variable1a := 'Hallo Welt 1 A!';
  Variable2a := 'Hallo Welt 2 A!';
  Variable3a := 'Hallo Welt 3 A!';
  Variable4a := 'Hallo Welt 4 A!';
  Variable5a := 'Hallo Welt 5 A!';
end;

procedure TForm1.Button1Click(Sender: TObject);
var
  Variable6a: String;
begin
  Variable6a := 'Hallo Welt 6 A!';

  //## Fremde Unit ##
  //ShowMessage(Variable1b); //klappt nicht - privat und andere Unit
  //ShowMessage(Variable2b); //klappt so nicht, trotz public
    ShowMessage(Form2.Variable2b); //klappt, aber nur mit Form2 davor
  ShowMessage(Variable3b); //klappt, wenn Unit eingetragen. Globale Variable
  //ShowMessage(Variable4b); //klappt nicht, global nur innerhalb der eigenen Unit
  //ShowMessage(Variable5b); //klappt nicht, lokale Variable

  //## Eigene Unit ##
  ShowMessage(Variable1a); //klappt, so aber nur in Form1-Prozeduren
    ShowMessage(Form1.Variable1a); //in normalen Prozeduren Form1 davor setzten
  ShowMessage(Variable2a); //klappt, so aber nur in Form1-Prozeduren
    ShowMessage(Form1.Variable2a); //in normalen Prozeduren Form1 davor setzten
  ShowMessage(Variable3a); //klappt überall in der eigenen Unit und in fremden Units
  ShowMessage(Variable4a); //klappt überall in der eigenen Unit
  //ShowMessage(Variable5a); //klappt nicht in fremder Prozedur, lokale Variable
  ShowMessage(Variable6a); //klappt, lokale Variable
end;

procedure Test; // normale Prozedur
begin
  //## Fremde Unit ##
  //ShowMessage(Variable1b); //klappt nicht - privat und andere Unit
  //ShowMessage(Variable2b); //klappt so nicht, trotz public
    ShowMessage(Form2.Variable2b); //klappt, aber nur mit Form2 davor
  ShowMessage(Variable3b); //klappt, wenn Unit eingetragen. Globale Variable
  //ShowMessage(Variable4b); //klappt nicht, global nur innerhalb der eigenen Unit
  //ShowMessage(Variable5b); //klappt nicht, lokale Variable

  //## Eigene Unit ##
  //ShowMessage(Variable1a); //klappt nicht so...
    ShowMessage(Form1.Variable1a); //...in normalen Prozeduren Form1 davor setzten
  //ShowMessage(Variable2a); //klappt nicht so...
    ShowMessage(Form1.Variable2a); //in normalen Prozeduren Form1 davor setzten
  ShowMessage(Variable3a); //klappt überall in der eigenen Unit und in fremden Units
  ShowMessage(Variable4a); //klappt überall in der eigenen Unit
  //ShowMessage(Variable5a); //klappt nicht in fremder Prozedur, lokale Variable
end;

procedure TForm1.Button2Click(Sender: TObject);
begin
  Test;
end;

end.
Unit2

Delphi-Quellcode:
unit Unit2;

interface

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

type
  TForm2 = class(TForm)
    procedure FormCreate(Sender: TObject);
  private
    { Private-Deklarationen }
    Variable1b: String;
  public
    { Public-Deklarationen }
    Variable2b: String;
  end;

var
  Form2: TForm2;
  Variable3b: String;

implementation

{$R *.dfm}

var
  Variable4b: String;

procedure TForm2.FormCreate(Sender: TObject);
var
  Variable5b: String;
begin
  Variable1b := 'Hallo Welt 1 B!';
  Variable2b := 'Hallo Welt 2 B!';
  Variable3b := 'Hallo Welt 3 B!';
  Variable4b := 'Hallo Welt 4 B!';
end;

end.
  Mit Zitat antworten Zitat
 


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 21:17 Uhr.
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz