![]() |
Re: Variable aus anderer Unit kann nicht richtig ausgelesen
Zitat:
|
Re: Variable aus anderer Unit kann nicht richtig ausgelesen
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.
Delphi-Quellcode:
form1.instanz greift auf ErsteUnit.Form1.WichtigerString aka TForm1.WichtigerString zu, wärend
showmessage(form1.instanz);
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. |
Re: Variable aus anderer Unit kann nicht richtig ausgelesen
Ok, habe jetzt Klassenvariablen verwendet, funktioniert.
Hätte mir doch bloss einer *z.B. mein Lehrer :shock: * den Unterschied zwischen Unit.Form1.variable und Unit.variable erklärt... Vielen Dank, von meiner Seite wars das dann mit Fragen! |
Re: Variable aus anderer Unit kann nicht richtig ausgelesen
Zitat:
bei den Klassen-Variablen gibt es aber Einiges zu beachten
Delphi-Quellcode:
abc und def stellen erstmal grundsätzlich das Gleiche dar
type
TMyClass = class(...) abc: Integer; var def: Integer; class var xyz: Integer; end; var a, b: TMyClass; > 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:
heißt also, xyz ist bei allen Instanzen einer Klasse genau das Selbe,
a.abc <> b.abc {TMyClass.abc ist nicht möglich}
a.xyz = b.xyz = TMyClass.xyz es ist also überall genau der gleiche Inhalt drin und man kann auch ohne eine vorhandene Instanz der Klasse drauf zugreifen. |
Re: Variable aus anderer Unit kann nicht richtig ausgelesen
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:
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.
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. |
Re: Variable aus anderer Unit kann nicht richtig ausgelesen
Damit verzichtest Du allerdings auf die u.a. in #17 genannten Vorteile.
|
Re: Variable aus anderer Unit kann nicht richtig ausgelesen
Zitat:
|
Re: Variable aus anderer Unit kann nicht richtig ausgelesen
Zitat:
|
Re: Variable aus anderer Unit kann nicht richtig ausgelesen
Wir haben die Unterschiede ja nun lang und breit erläutert, der TE muss nur noch die für ihn beste Möglichkeit umsetzen ;)
|
Re: Variable aus anderer Unit kann nicht richtig ausgelesen
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. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 01:34 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