Autor Beitrag
technotoolz
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 47

Win98;Win2k;WinXP
D7 Ente
BeitragVerfasst: Di 13.04.04 12:30 
Hallo Leute,
mein Problem:

Ich habe ein Programm mit mehreren Formularen. In einem von ihnen trage ich Benutzerdaten ein.
Diese sollen dann per Knopfdruck in mein Hauptformular in völlig neue Variablen geschrieben werden, die Sich aus den Feldnamen und dem Benutzernamen ergibt.

Wer kann mir helfen?
Meine Haare werden grau.

Danke
|TF|Alucard
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 43

XP

BeitragVerfasst: Di 13.04.04 12:54 
Hi,
also ich würde es so machen:
ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
var inhalt : string;
Form1
procedure TForm1.Button1Click(Sender: TObject);
begin
inhalt:=edit1.text;
end;
Form2
procedure TForm2.FormCreate(Sender: TObject);
begin
label1.caption:=inhalt;
end;

Ich glaube so hab ich es schonmal gemacht. :wink:

mfG |TF|Alucard

Moderiert von user profile iconMotzi: Code- durch Delphi-Tags ersetzt.

_________________
Ich weiß nicht mit welchen Waffen der 3. Weltkrieg geführt wird, aber im 4. werden es Stöcke und Steine sein. [Albert Einstein]
MartinPb
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 698



BeitragVerfasst: Di 13.04.04 12:57 
Du kannst nicht zur Laufzeit einen Variablennamen erstellen.

Den Namen kriegst du aber, vorausgesetzt du benutzt ein Editfeld, aus:

Edit1.Name + Edit1.Text

zusammen.

Aber auch das wird nicht klappen, denn der Benutzename kann unerlaubte Zeichen besitzen. Also mußt du es vorher bereinigen.

Also sag mal zuerst wozu du es so lösen willst.

_________________
Gruß
Martin
technotoolz Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 47

Win98;Win2k;WinXP
D7 Ente
BeitragVerfasst: Di 13.04.04 13:21 
Hört sich schon ganz gut an.
Brauche diese Funktion, da man das Programm immer aktualisieren können muss.
Ich möchte immer neue Werte erfassen können und diese bis ich sie nicht mehr brauche in einer Variable speichern.
MartinPb
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 698



BeitragVerfasst: Di 13.04.04 15:20 
Wenn ich erlich bin, dann weiß ich nicht so richtig was du wissen willst. Es ist eigentlich typisch für Programmiersprachen, daß man immer die Variablen aktualisiern kann. Einfach eine Variable zuweisen und schon ist das Programm aktualisiert.

Oder was willst du genau wissen?

_________________
Gruß
Martin
technotoolz Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 47

Win98;Win2k;WinXP
D7 Ente
BeitragVerfasst: Di 13.04.04 15:33 
ich will nicht die vorhandenen Variabeln aktualisieren, sondern ich suche einen Befehl um eine neue Variable zu erstellen während mein Programm läuft.

sowas wie? create var( ComputernameBuchhaltung: String;) oder so.

Es ergibt sich aus zwei Feldern der Bezeichner für meine Variable ( soll Konstante werden).
z.B.:

ausblenden Quelltext
1:
ComputernameBuchhaltung:= Edit1.Name+Edit1.Text;					

Da ich ComputernameBuchhaltung nicht vordefiniert habe muss ich diese Variable erst erstellen um ihr einen Wert zuzuweisen.
Das erstellen soll aber per Knopdruck passieren, da ich bei Erweiterungen das Programm nicht immer umschreiben möchte.

Gruß
MartinPb
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 698



BeitragVerfasst: Di 13.04.04 16:00 
Also das geht nicht. Du kannst keine neue Variabe erstellen während das Programm läuft. In einem Interpreter könnte man das vielleicht machen, aber nicht bei einem Compiler. Aussage bezieht sich auf Variablen.

Aber man kann es anders lösen. Ich gehe davon aus, daß du ein Anfänger bist, deshalb gebe ich dir Anfängertips. Wenn du kein Anfänger mehr bist, was ich aber aufgrund deiner Frage nicht glaube, dann sag es.

Tip 1:

Mach es mit einem Record, z.B.:

ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
type
  TVariable = record
    Name := String;
    Wert := String;
  end;


Das ganze jetzt mit einem Array kombinieren. Eine von den Werten wäre der Name. Du müßtest aber immer kontrolieren ob es der Name ist usw. Der Vorteil hier ist, daß du auch andere Typen außer String nehmen kannst.

Aber das ist vielleicht etwas zu kompliziert, weil man dafür einige Funktionen und Prozeduren braucht um auf deine Bedürfinsse anzupassen. Deshalb

Tip 2:

Das funktioniert nur mit einem Wert und Strings. Dazu brauchst du ein StringList. Mit Values und Names kannst du dir eine eigene Liste mit Variablen erstellen. Das funktioniert relativ gut, aber auch hier brauchst du eine eigene Variablenverwaltung. Keine so große wie bei Records, aber immerhin

ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
procedure TForm1.Button1Click(Sender: TObject);
var
  V: TStringList;
  S: String;
begin
  V := TStringList.Create;
  try
    // Hier zuerst neue Werte inc. Bezeichner hinzufügen
    V.Add('Wert1=Irgendwas');
    V.Add('Wert2=Irgendwas anderes');

    // Hier den Wert von Wert1 auslesen
    S := V.Values['Wert1'];
    ShowMessage(S);

    // Hier den Wert von Wert1 ändern
    V.Values['Wert1'] := 'Halli-hallo';

    // Hier den veränderten Wert von Wert1 nochmal auslesen
    S := V.Values['Wert1'];
    ShowMessage(S);
  finally

    // Hier gehen die Werte wieder verloren
    V.Free;
  end;
end;


Du bräuchtest dann aber eine globale StringList Variable.

_________________
Gruß
Martin
MartinPb
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 698



BeitragVerfasst: Di 13.04.04 16:03 
technotoolz hat folgendes geschrieben:
Das erstellen soll aber per Knopdruck passieren,


Übrigens, da Delphi Ereignisorientiert ist, passiert irgendwie alles auf Knopfdruck. Auch wenn es hin und wieder kein Knopf ist, aber es ist immer eine Reaktion.

_________________
Gruß
Martin
Motzi
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 2931

XP Prof, Vista Business
D6, D2k5-D2k7 je Prof
BeitragVerfasst: Di 13.04.04 19:44 
Also generell gibts mehrere Möglichkeiten und zwar: dyn. Array, TList, doppelt oder einfach Verkette Liste und das ganze entweder über Records oder Klassen...

_________________
gringo pussy cats - eef i see you i will pull your tail out by eets roots!
technotoolz Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 47

Win98;Win2k;WinXP
D7 Ente
BeitragVerfasst: Mi 14.04.04 08:15 
Gibt es nicht auch eine Möglichkeit das alle neu erstellten Variablen für immer und ewig gespeichert werden?
Motzi
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 2931

XP Prof, Vista Business
D6, D2k5-D2k7 je Prof
BeitragVerfasst: Mi 14.04.04 12:08 
Wenn du dich darum kümmerst, dass du die Daten auf die Festplatte speicherst schon..! ;)

_________________
gringo pussy cats - eef i see you i will pull your tail out by eets roots!
technotoolz Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 47

Win98;Win2k;WinXP
D7 Ente
BeitragVerfasst: Mi 14.04.04 12:12 
Bin dann auch irgendwann drauf gekommen. Hab meine Variablen jetzt als Txt gespeichert.
Hab halt nur eine Delphi Pause von drei Jahren gehabt und weiß fast nichts mehr. :oops:

So langsam kommt es wieder.

Trotzdem Danke.

Gruß
Inferno
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 76



BeitragVerfasst: Mi 14.04.04 12:54 
gibt es nicht auch die möglichkeit mit New(var P : Pointer) ne neue variable bzw. einen zeiger auf ne neue var zuerstellen, da du den datentyp pointer hier benutzt kannste die neue variable so für ziemlich jeden datentyp verwenden.
Berichtigt mich wenn das falsch war, hab auch schon lange nix mehr mit delphi gemacht


mfg
Inferno