Entwickler-Ecke
Sonstiges (Delphi) - Variable mit Button erstellen !!!SEHR DRINGEND!!!
technotoolz - Di 13.04.04 12:30
Titel: Variable mit Button erstellen !!!SEHR DRINGEND!!!
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 - Di 13.04.04 12:54
Hi,
also ich würde es so machen:
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
Motzi: Code- durch Delphi-Tags ersetzt.
MartinPb - 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.
technotoolz - 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 - 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?
technotoolz - 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.:
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 - 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.:
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
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 V.Add('Wert1=Irgendwas'); V.Add('Wert2=Irgendwas anderes');
S := V.Values['Wert1']; ShowMessage(S);
V.Values['Wert1'] := 'Halli-hallo';
S := V.Values['Wert1']; ShowMessage(S); finally
V.Free; end; end; |
Du bräuchtest dann aber eine globale StringList Variable.
MartinPb - 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.
Motzi - 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...
technotoolz - 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 - Mi 14.04.04 12:08
Wenn du dich darum kümmerst, dass du die Daten auf die Festplatte speicherst schon..! ;)
technotoolz - 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 - 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
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2025 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!