![]() |
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:
so als würde ich quasi diesen Befehl ausführen:
String(Edit1.Text) := 'jo is drin';
Delphi-Quellcode:
Nur das hier halt die Variable in die geschrieben werden soll variiert.
str1 := 'jo is drin';
|
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. |
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 ;) |
Re: Wert einer Variabelen zuweisen - dynamischer Variablenna
Abgesehn davon, daß Variablen nach dem Kompilieren keine Namen mehr haben.
|
Re: Wert einer Variabelen zuweisen - dynamischer Variablenna
IniFiles sind recht nervig und jetzt wollte ich so eine Art XML-Ini Coden also quasi:
Code:
So dass der halt jedesmal komplett alle Daten aus der Datei ausliest und am Ende auch wieder speichert.. sowas in der Art
<data>
<variable1 type="string">lala</variable1> <variable2 type="int">0815</variable2> </data> -- 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;
|
Re: Wert einer Variabelen zuweisen - dynamischer Variablenna
Zitat:
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) |
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? |
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 |
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'; |
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:
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..
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);
Delphi-Quellcode:
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.
LoadVarsFromXML('Project1.xml');
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 17:36 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 by Thomas Breitkreuz