Delphi-PRAXiS
Seite 1 von 4  1 23     Letzte »    

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi Dynamische Variablen in Delphi ??? (https://www.delphipraxis.net/113644-dynamische-variablen-delphi.html)

lhmultimedia 12. Mai 2008 08:49


Dynamische Variablen in Delphi ???
 
Hi Leute.
Gibt es in Delphi sowas wie in PHP Das doppelte Dollarzeichen bei den Variablen, hier ein Beispiel:
Code:
<?php
$a = "b";
$b = "Hallo";
echo $$a;
?>
Hierbei steht in Variable a der Name von Variable b.
Durch echo $$a wird also Nicht der Buchstabe b ausgegeben, sondern der Inhalt von Variable b (wegen des doppelten Dollarzeichens).
Kann man sowas in delphi auch realisieren?

alzaimar 12. Mai 2008 09:02

Re: Dynamische Variablen in Delphi ???
 
Zeigervariablen.

lhmultimedia 12. Mai 2008 09:04

Re: Dynamische Variablen in Delphi ???
 
Und wie macht man dann sowas?

Corpsman 12. Mai 2008 09:05

Re: Dynamische Variablen in Delphi ???
 
du meinst in etwa so was ??

Delphi-Quellcode:

var a:Pointer;
    b:String;
begin
  b := 'Hallo Welt';
  a := @b[1];
  showmessage(pchar(a));
Aber in meinen Augen ist das totaler Schwachsinn.

lhmultimedia 12. Mai 2008 09:12

Re: Dynamische Variablen in Delphi ???
 
Danke.
Veträgt sich Pointer auch mit StringList (damit man Mehrere Pointer als String speichern kann)?

Nuclear-Ping 12. Mai 2008 09:14

Re: Dynamische Variablen in Delphi ???
 
TList in dem Falle.

lhmultimedia 12. Mai 2008 09:22

Re: Dynamische Variablen in Delphi ???
 
Kann man einen String in einen Pointer umwandeln?

Der_Unwissende 12. Mai 2008 09:23

Re: Dynamische Variablen in Delphi ???
 
Hi,

ich glaube die eigentlich interessante Frage ist, wofür genau Du diese "Funktion" nutzen möchtest. Nicht umsonst sagt Corpman, dass es totaler Schwachsinn sei, so zu arbeiten.
An sich sind Pointer natürlich eine Möglichkeit, die dem von Dir beschriebenen Verhalten ähneln, allerdings (und darauf spielst Du wohl schon mit der TStringlist an) handelt es sich nicht um eine Zuordnung von Bezeichner zu Pointer. Sicherlich kannst Du eine TStringList ordentlich missbrauchen und da (leider) sogar Pointer ablegen, aber die Frage ist, ob das Sinn der Sache sein sollte.

Während Skriptsprachen gerne mit ihrer hohen Flexibilität (man muss ja nicht mal den Datentypen festlegen) aufwarten, liegt hier auch ein immenser Nachteil dieser Sprachen. Ohne einen bekannten Typ geht hier einfach mal die Typsicherheit verloren, eine nicht unwichtige Eigenschaft moderner Sprachen. Viele Fehler können einfach vermieden werden, wenn eine Überprüfung schon zur Übersetzungszeit eine unerwünschtes Verhalten ergibt. Bei vermeidbaren Problemen ist (imho) die Arbeit mit untypisierten Pointern ziemlich weit vorne bei (kommt eben drauf an ob man sie wirklich benötigt).

Wenn Du einfach nur Zeiger unter einem bestimmten Namen ablegen möchtest (und natürlich auch wieder zugreifen), dann ist eine Map bzw. ein Dictionary das was Du suchst. In Delphi gibt es da keine all zu ausgereiften Varianten, Du findest aber schnell welche wenn Du in der DP suchst. Alzaimar hat mal eine Dictionary - Klasse gepostet, die ordentlich in der Perfomance ist und all das leistet, was Du gerne hättest.

Gruß,
Der Unwissende

Der_Unwissende 12. Mai 2008 09:30

Re: Dynamische Variablen in Delphi ???
 
Zitat:

Zitat von lhmultimedia
Kann man einen String in einen Pointer umwandeln?

Äh, was willst Du denn da rausbekommen? Ich meine das was Du eigentlich wissen willst geht, aber die Frage ist echt ungeschickt formuliert. So kann man natürlich ein Float in ein Integer umwandelt (es geht eben ein Datenverlust einher), ein Byte kann man auch leicht in Integer umwandeln (wird eben mit Nullen aufgefüllt) oder in ein Char.
Einen String kann man also sicher auch in einen Pointer umwandeln, aber das dürfte wenig Sinn machen.

Für Dich dürfte ein Pointer auf den Inhalt des Strings deutlich interessanter sein. Nimmst Du hier nur die Adresse des Strings, so hast Du ein Problem, der String wird einfach freigegeben (da Delphi den selbst verwaltet). Deshalb musst Du dafür sorgen, dass Du einen Zeiger auf einen Speicherbereich bekommst, bei dem Du Dich um die Freigabe kümmerst. Dazu kannst Du entsprechend einfach Speicher reservieren (gibt da rund um PChar afaik ein paar Funktionen) und Du kannst so einen Zeiger erzeugen, der auf ein PChar (Nullterminierte Zeichenkette) zeigt oder in dem Du die Zeichen ablegst (wo Du Dich dann aber auch um die Längeninformation kümmern musst).

Nuclear-Ping 12. Mai 2008 09:31

Re: Dynamische Variablen in Delphi ???
 
Ja, wäre auch mal interessant zu wissen, was er überhaupt vor hat. :mrgreen:


Alle Zeitangaben in WEZ +1. Es ist jetzt 02:28 Uhr.
Seite 1 von 4  1 23     Letzte »    

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