Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   Wert einer Variabelen zuweisen - dynamischer Variablenname (https://www.delphipraxis.net/131809-wert-einer-variabelen-zuweisen-dynamischer-variablenname.html)

seim 31. Mär 2009 13:54


Wert einer Variabelen zuweisen - dynamischer Variablenname
 
Hi,

ich bräuchte da so etwas in der Art:

Delphi-Quellcode:
Variablentyp(Variablenname) := Wert;

Also nehmen wir mal an ich will einen festen Wert in einen String schreiben und der Name der Variable (Typ string) steht im Edit1:

Edit1 Inhalt: 'str1'

Delphi-Quellcode:
String(Edit1.Text) := 'jo is drin';
so als würde ich quasi diesen Befehl ausführen:

Delphi-Quellcode:
str1 := 'jo is drin';
Nur das hier halt die Variable in die geschrieben werden soll variiert.

Bernhard Geyer 31. Mär 2009 14:04

Re: Wert einer Variabelen zuweisen - dynamischer Variablenna
 
So ganz wirst du das nicht machen können. da wir die strenge Typprüfung von Delphi nicht mitmachen bzw. ist Delphi nicht dynamisch genug.

Für Properties von Klassen schau dir mal die Funktionen von TypInfo an. Damit wird auch das DFM-Streaming realisiert.

jfheins 31. Mär 2009 14:10

Re: Wert einer Variabelen zuweisen - dynamischer Variablenna
 
Die Namen der Variablen sind zudem nicht mehr im compilat (der exe Datei) enthalten.

Was möchtest du damit erreichen? Es gibt sicher andere Möglichkeiten dafür ;)

himitsu 31. Mär 2009 14:13

Re: Wert einer Variabelen zuweisen - dynamischer Variablenna
 
Abgesehn davon, daß Variablen nach dem Kompilieren keine Namen mehr haben.

seim 31. Mär 2009 14:19

Re: Wert einer Variabelen zuweisen - dynamischer Variablenna
 
IniFiles sind recht nervig und jetzt wollte ich so eine Art XML-Ini Coden also quasi:

Code:
<data>
 <variable1 type="string">lala</variable1>
 <variable2 type="int">0815</variable2>
</data>
So dass der halt jedesmal komplett alle Daten aus der Datei ausliest und am Ende auch wieder speichert.. sowas in der Art

--

Und ja das hab' ich nicht bedacht, dass Assembler keine Namen kennt :/

Dachte nur weil sowas wie TButton(Sender).Tag kann man auch auslesen halt. Und auch sowas geht..
Delphi-Quellcode:
Edit1.Text := TButton(Sender).Name;

himitsu 31. Mär 2009 14:30

Re: Wert einer Variabelen zuweisen - dynamischer Variablenna
 
Zitat:

Zitat von seim
Dachte nur weil sowas wie TButton(Sender).Tag kann man auch auslesen halt. Und auch sowas geht..
Delphi-Quellcode:
Edit1.Text := TButton(Sender).Name;

das Sender ist schon das Object bzw. eine Variable
und TButton(Sender) ist nur eine Typkonvertierung

TButton('Edit1') geht da auch nicht.

TButton(FindComponent('Edit1')) geht zwar, aber das schaut in der übergeortneten Komponente (meißt was von TForm) sich alle da eingetragenen Komponenten an und sucht dort die mit dem passendem Namen.
eine Liste von Variablen gibt es aber nicht. (ja ich weiß, abgesehn bestimmter Debuginformationen)

shmia 31. Mär 2009 14:55

Re: Wert einer Variabelen zuweisen - dynamischer Variablenna
 
Liste der Anhänge anzeigen (Anzahl: 1)
Es gibt fertige Komponenten bei denen man zur Entwicklungszeit sagt welche Properties gespeichert und geladen werden sollen.
Die Komponente (FormStorage) kann ihre Daten in eine Ini-Datei oder in der Registry ablegen.
Neuere Komponenten können auch XML.
Wär' das was?

p80286 31. Mär 2009 15:00

Re: Wert einer Variabelen zuweisen - dynamischer Variablenna
 
Hallo seim,

natürlich geht das, Du mußt nur mit Pointern arbeiten.
Damit begibst Du Dich natürlich auf ein Niveau auf dem auf eine Codezeile zwei Kommentarzeilen kommen.

Darum der gut gemeinte Rat, laß die Finger davon.

Übrigens wenn Du eine .INI auslesen willst, dann werden Werte über Namen zugeordnet. Wenn Du die INI einfach über die Zeilennummer auslesen willst, dann begibst Du Dich in Teufels Küche.

Gruß
K-H

guidok 31. Mär 2009 15:01

Re: Wert einer Variabelen zuweisen - dynamischer Variablenna
 
Leider hast du ja nicht geschrieben, was du überhaupt erreichen möchtest, aber vielleicht könnte dir die TStringList ja helfen?

Diese kann auch Namen=Wertepaare in der Art von Inifiles verwalten. Damit hättest du so eine Art dynamische Variablenliste.

So in der Art:

Delphi-Quellcode:
type
  VarList : TStringList;

Valist.Values[Edit1.Text] := 'jo is drin';

seim 31. Mär 2009 15:13

Re: Wert einer Variabelen zuweisen - dynamischer Variablenna
 
Hmm Pointer auch so ein Begriff den ich bislang zu faul war nachzuschlagen.. mal gucken so wie ich das verstanden hab' ist das wohl nur eine Pseudo-Variable die auf den Speicher einer anderen var verweist.

Das Problem an Inis ist einfach:

Delphi-Quellcode:
Bild1_Filename:= IniFile.ReadString('Images', 'Bild1', Bild1_Filename);
Bild2_Filename:= IniFile.ReadString('Images', 'Bild2', Bild2_Filename);
Bild3_Filename:= IniFile.ReadString('Images', 'Bild3', Bild3_Filename);
//...
Bild100_Filename:= IniFile.ReadString('Images', 'Bild100', Bild3_Filename);
Ok schlechtes Beispiel weil ich das eh mit nem Array machen würde (und da wüsste ich auch das es auf jedenfall geht).. aber stellt euch ne Menge Variablen vor die nicht vom gleichen Typ sind; für jede brauch ich eine Zeile die die Ini ausliest..

Delphi-Quellcode:
LoadVarsFromXML('Project1.xml');
Und schon sind alle Variablen die auch in meinem Programm existieren mit dem Wert in der XML gefüllt und zwar unabhängig davon wie viele und ob ich nicht nachträglich selbst was in die XML hinzugefügt hab' ohne das dies im Programmcode steht.


Alle Zeitangaben in WEZ +1. Es ist jetzt 15:09 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