Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi formularübergreifende Variablen und Zuweisung neuer Namen? (https://www.delphipraxis.net/66202-formularuebergreifende-variablen-und-zuweisung-neuer-namen.html)

fabgo 26. Mär 2006 15:37


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

konda 26. Mär 2006 15:40

Re: formularübergreifende Variablen und Zuweisung neuer Name
 
Zitat:

Zitat von fabgo
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

1. Formularübergreifende Variablen definiertst du unter Public. Um sie dann in FormY zu verwenden musst du in denn Uses-Klauseln UnitX einbinden.

2.Um immer neue Variablennamen zuzuweisen, wenn ich dich richtig verstehe musst du ein Array verwenden. :bouncing4:

fabgo 26. Mär 2006 16:46

Re: formularübergreifende Variablen und Zuweisung neuer Name
 
Warum funktioniert folgendes nicht?

UNIT1:
Delphi-Quellcode:

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

mkinzler 26. Mär 2006 16:55

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;

fabgo 1. Apr 2006 11:51

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

mkinzler 1. Apr 2006 12:00

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);

MrKnogge 1. Apr 2006 12:06

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

fabgo 1. Apr 2006 12:14

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

mkinzler 1. Apr 2006 12:23

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:
procedure TFormular.BtHinzufuegenClick(Sender: TObject);
begin
  SetLength( XY, Length( XY)+1);

  XY[Length(XY)] := edit1.Text;
end;
So fügst du den aktuellen Wert des Edits in den Array ein. Aber mir wird immer unklarer was du eigentlich vorhast.

markusj 1. Apr 2006 12:34

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:28 Uhr.
Seite 1 von 2  1 2      

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