![]() |
formularübergreifende Variablen und Zuweisung neuer Namen?
Hallo ihr,
habe ein paar fragen zu meinem Programm. Ich möchte nämlich sagen, dass wenn ich im LabelX von FormularX etwas eingebe und dies mit einem Button bestätige, dass dem Text von LabelX eine Variable zugewiesen wird, die ich dann weiterverwenden kann, und im Forumlar Y aufrufen kann. Bei erneuter Eingabe soll das dann wieder eine neue Variable sein. zentrale Fragen: Wie werden formularübergreifende Variablen definiert :?: Wie werden immer neue Variablennamen zugewiesen :?: Vielen Dank im vorraus fabgo |
Re: formularübergreifende Variablen und Zuweisung neuer Name
Zitat:
2.Um immer neue Variablennamen zuzuweisen, wenn ich dich richtig verstehe musst du ein Array verwenden. :bouncing4: |
Re: formularübergreifende Variablen und Zuweisung neuer Name
Warum funktioniert folgendes nicht?
UNIT1:
Delphi-Quellcode:
Unit2:unit Unit1; interface uses Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, Unit2; type TForm1 = class(TForm) procedure Edit1Change(Sender: TObject); private { Private-Deklarationen } public Variable:string; { Public-Deklarationen } end; var Form1: TForm1; implementation {$R *.DFM} procedure TForm1.Edit1Change(Sender: TObject); begin Variable:='Hallo'; end; end.
Delphi-Quellcode:
unit Unit2;
interface uses Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls; type TForm2 = class(TForm) Edit1: TEdit; procedure Edit1Change(Sender: TObject); private { Private-Deklarationen } public { Public-Deklarationen } end; var Form2: TForm2; implementation {$R *.DFM} procedure TForm2.Edit1Change(Sender: TObject); begin Edit1.Text:=Variable; end; end. Folgende Fehlermeldung: Unit2.pas Undefinierter Bezeichner Variable |
Re: formularübergreifende Variablen und Zuweisung neuer Name
1. Es fehlt Uses Unit1 in Unit2.
2. Die Variable "Variable" ist keine globale Variable von Unit 1 sondern eine Eigenschaft von Form1.
Delphi-Quellcode:
Edit1.Text:=Form1.Variable;
|
Re: formularübergreifende Variablen und Zuweisung neuer Name
Ich bin noch ein Anfänger was das programmieren betrifft,
daher weiss ich nicht, wie das mit den arrays funktioniert. Ich möchte in ein Textfeld etwas eingeben, dass per Buttonklick als Variable speichern, um diese dann woanders verwenden zu können. var XY: array[1..?]of string Wie wird das zugewiesen, dass der immer eins mehr zähllt??? |
Re: formularübergreifende Variablen und Zuweisung neuer Name
Wenn du nicht weißt, wiviele Elemente dein Array aufnehmen muß, nimm am Besten einen dynamischen Array. Dessen Größe kannst du zur Laufzeit verändern.
Delphi-Quellcode:
var
XY: array of string; ... SetLength( XY, <Größe>); //bzw SetLength( XY, Length( XY)+1); |
Re: formularübergreifende Variablen und Zuweisung neuer Name
Hallo,
ich würde dir raten, alle Variablen die du in mehreren Units brauchst in einer extra Unit zu definieren, bspw. globalsu.pas. Diese Unit bindest du nun in jede Unit ein, in der du die Variablen brauchst. gruss |
Re: formularübergreifende Variablen und Zuweisung neuer Name
also müsste das dann so aussehen?
[delphi] procedure TFormular.BtHinzufuegenClick(Sender: TObject); var XY:array of string; begin Edit1.text:=SetLength( XY, Length( XY)+1); wie funktioniert das mit dem text-gleichsetzen??? |
Re: formularübergreifende Variablen und Zuweisung neuer Name
Nein ! Bei der lokalen Vraibalendefinition in einer Prozedur ist die Variable nur während des ihres Ablaufs definiert.
Du mußr den Array global definieren. am Besten in eigener Unit für Globals.
Delphi-Quellcode:
So fügst du den aktuellen Wert des Edits in den Array ein. Aber mir wird immer unklarer was du eigentlich vorhast.
procedure TFormular.BtHinzufuegenClick(Sender: TObject);
begin SetLength( XY, Length( XY)+1); XY[Length(XY)] := edit1.Text; end; |
Re: formularübergreifende Variablen und Zuweisung neuer Name
Ausserdem empfielt es sich, wenn das Array nicht mehr gebraucht wird, dieses mittels finalize(array) wieder freizugeben. (Geht setlength(array,0) eigentlich auch?)
mfG Markus |
Alle Zeitangaben in WEZ +1. Es ist jetzt 01:04 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