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
Antwort Antwort
Seite 3 von 3     123   
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.624 Beiträge
 
Delphi 12 Athens
 
#21

Re: Variable aus anderer Unit kann nicht richtig ausgelesen

  Alt 1. Jul 2009, 16:30
Zitat:
Delphi-Quellcode:
unit ErsteUnit
type
  TForm1 = class(TForm)
...
  private
    WichtigerString: String;
  public
    property Instanz: string read WichtigerString write WichtigerString;
  end;

var
  Form1: TForm1;
  //WichtigerString: string; Weg damit
   
implementation

procedure TForm1.FormCreate(Sender: TObject);
begin
  WichtigerString:= 'A1CW5d3f';
end;
Zugreifen kannst Du dann über Form1.Instanz. Wobei es sich eingebürgert hat, die privaten Variablen wie die Property zu nennen, nur mit einem "F" (für Feld) davor.
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.071 Beiträge
 
Delphi 12 Athens
 
#22

Re: Variable aus anderer Unit kann nicht richtig ausgelesen

  Alt 1. Jul 2009, 16:30
Delphi-Quellcode:
type
  TForm1 = class(TForm)
  private
    WichtigerString: String;
  public
    property Instanz: string read WichtigerString write WichtigerString;
  end;

var
  Form1: TForm1;
  WichtigerString: string;

begin
  WichtigerString:= 'A1CW5d3f';
end.
showmessage(form1.instanz); form1.instanz greift auf ErsteUnit.Form1.WichtigerString aka TForm1.WichtigerString zu, wärend
WichtigerString:='A1CW5d3f'; auf ErsteUnit.WichtigerString zugreift ...
es sind also unterschiedliche Variablen und demnach auch unterschiedliche Inhalte.

also ersrmal entferne eine der beiden Variablen.

1: entweder die in TForm1 entfernen, einen Getter/Setter für .Instanz erstellen und die globlae Variable auslesen/beschreiben

2: siehe mein Vorredner

oder 3: eine Klassen-Variable erstellen
Delphi-Quellcode:
unit ErsteUnit

type
  TForm1 = class(TForm)
...
  private
    class var WichtigerString: String;
  public
    class property Instanz: string read WichtigerString write WichtigerString;
  end;

var
  Form1: TForm1;
   
implementation
...
begin
  TForm1.WichtigerString:= 'A1CW5d3f';
end.
Neuste Erkenntnis:
Seit Pos einen dritten Parameter hat,
wird PoSex im Delphi viel seltener praktiziert.
  Mit Zitat antworten Zitat
JBJHJM

Registriert seit: 16. Jan 2009
88 Beiträge
 
Delphi 2005 Personal
 
#23

Re: Variable aus anderer Unit kann nicht richtig ausgelesen

  Alt 1. Jul 2009, 19:48
Ok, habe jetzt Klassenvariablen verwendet, funktioniert.
Hätte mir doch bloss einer *z.B. mein Lehrer * den Unterschied zwischen Unit.Form1.variable und Unit.variable erklärt...

Vielen Dank, von meiner Seite wars das dann mit Fragen!
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.071 Beiträge
 
Delphi 12 Athens
 
#24

Re: Variable aus anderer Unit kann nicht richtig ausgelesen

  Alt 1. Jul 2009, 20:26
Zitat:
Hätte mir doch bloss einer *z.B. mein Lehrer Shocked * den Unterschied zwischen Unit.Form1.variable und Unit.variable erklärt...
der Unterschied ist erstmal egal ... du hattest 2 Variablen mit dem selben Namen, also jede Variable hatte ihren eigenen Inhalt.


bei den Klassen-Variablen gibt es aber Einiges zu beachten
Delphi-Quellcode:
type
  TMyClass = class(...)
    abc: Integer;
    var def: Integer;
    class var xyz: Integer;
  end;

var a, b: TMyClass;
abc und def stellen erstmal grundsätzlich das Gleiche dar
> Variablen innerhalb einer Klasseninstanz (nur daß man innerhalb einer Klasse das VAR nicht unbedingt angeben muß)

xyz ist eine Variable innerhalb der Klasse (Achtung: nicht Klasseninstanz)

also
Delphi-Quellcode:
a.abc <> b.abc {TMyClass.abc ist nicht möglich}

a.xyz = b.xyz = TMyClass.xyz
heißt also, xyz ist bei allen Instanzen einer Klasse genau das Selbe,
es ist also überall genau der gleiche Inhalt drin und man kann auch ohne eine vorhandene Instanz der Klasse drauf zugreifen.
Neuste Erkenntnis:
Seit Pos einen dritten Parameter hat,
wird PoSex im Delphi viel seltener praktiziert.
  Mit Zitat antworten Zitat
Popov
(Gast)

n/a Beiträge
 
#25

Re: Variable aus anderer Unit kann nicht richtig ausgelesen

  Alt 1. Jul 2009, 20:31
JBJHJM, unabhängig davon ob globale Variablen nun schön sind oder nicht, das klappt auf jeden Fall:

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 }
  public
    { Public-Deklarationen }
  end;

var
  Form1: TForm1;
  WichtigerString: string;

implementation

uses Unit2;

{$R *.dfm}

procedure TForm1.FormCreate(Sender: TObject);
begin
  WichtigerString := 'A1CW5d3f';
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
  // oder auch hier: WichtigerString := 'A1CW5d3f';
  Form2.ShowModal;
end;

end.
Delphi-Quellcode:
unit Unit2;

interface

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

type
  TForm2 = class(TForm)
    Button1: TButton;
    procedure Button1Click(Sender: TObject);
  private
    { Private-Deklarationen }
  public
    { Public-Deklarationen }
  end;

var
  Form2: TForm2;

implementation

{$R *.dfm}

uses
  Unit1;

procedure TForm2.Button1Click(Sender: TObject);
begin
  showmessage(WichtigerString);
end;

end.
Du kannst durchaus die zuletzt genannten Lösungen mit property nehmen - wenn du es willst - du kannst es aber auch normal wie oben lösen. Beides funktioniert.
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.624 Beiträge
 
Delphi 12 Athens
 
#26

Re: Variable aus anderer Unit kann nicht richtig ausgelesen

  Alt 1. Jul 2009, 20:38
Damit verzichtest Du allerdings auf die u.a. in #17 genannten Vorteile.
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
Popov
(Gast)

n/a Beiträge
 
#27

Re: Variable aus anderer Unit kann nicht richtig ausgelesen

  Alt 1. Jul 2009, 20:40
Zitat von JBJHJM:
Hätte mir doch bloss einer *z.B. mein Lehrer * den Unterschied zwischen Unit.Form1.variable und Unit.variable erklärt...
Ist aber nicht unbedingt nötig, denn das eine ist das normale Pascal, das andere schon objektorientierte Programmierung.
  Mit Zitat antworten Zitat
Popov
(Gast)

n/a Beiträge
 
#28

Re: Variable aus anderer Unit kann nicht richtig ausgelesen

  Alt 1. Jul 2009, 20:45
Zitat von DeddyH:
Damit verzichtest Du allerdings auf die u.a. in #17 genannten Vorteile.
Ich sag ja auch nicht, daß es schlecht oder Unsinn ist, sondern, daß bevor man bei a, b und c, zuerst b verstehen sollte bevor man sich c zuwendet.
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.624 Beiträge
 
Delphi 12 Athens
 
#29

Re: Variable aus anderer Unit kann nicht richtig ausgelesen

  Alt 1. Jul 2009, 20:46
Wir haben die Unterschiede ja nun lang und breit erläutert, der TE muss nur noch die für ihn beste Möglichkeit umsetzen
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
JBJHJM

Registriert seit: 16. Jan 2009
88 Beiträge
 
Delphi 2005 Personal
 
#30

Re: Variable aus anderer Unit kann nicht richtig ausgelesen

  Alt 1. Jul 2009, 22:02
Naja hab mich etwas ungenau ausgedrückt - ich hätte sagen sollen "... dass es da überhaupt einen Unterschied gibt..."
Das erklärt doch einiges über das ich mich wunderte, und nicht wirklich eine Antwort bekam - naja halt ein normaler Informatiklehrer.
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 3 von 3     123   


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 14:33 Uhr.
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