AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren

Dynamische Variablen in Delphi ???

Ein Thema von lhmultimedia · begonnen am 12. Mai 2008 · letzter Beitrag vom 12. Mai 2008
Antwort Antwort
Seite 1 von 4  1 23     Letzte » 
lhmultimedia
(Gast)

n/a Beiträge
 
#1

Dynamische Variablen in Delphi ???

  Alt 12. Mai 2008, 09:49
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?
  Mit Zitat antworten Zitat
alzaimar
(Moderator)

Registriert seit: 6. Mai 2005
Ort: Berlin
4.956 Beiträge
 
Delphi 2007 Enterprise
 
#2

Re: Dynamische Variablen in Delphi ???

  Alt 12. Mai 2008, 10:02
Zeigervariablen.
"Wenn ist das Nunstruck git und Slotermeyer? Ja! Beiherhund das Oder die Flipperwaldt gersput!"
(Monty Python "Joke Warefare")
  Mit Zitat antworten Zitat
lhmultimedia
(Gast)

n/a Beiträge
 
#3

Re: Dynamische Variablen in Delphi ???

  Alt 12. Mai 2008, 10:04
Und wie macht man dann sowas?
  Mit Zitat antworten Zitat
Benutzerbild von Corpsman
Corpsman

Registriert seit: 8. Nov 2005
Ort: nähe Stuttgart
981 Beiträge
 
Delphi XE2 Professional
 
#4

Re: Dynamische Variablen in Delphi ???

  Alt 12. Mai 2008, 10:05
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.
Uwe
My Sitewww.Corpsman.de

My marble madness clone Balanced ( ca. 70,0 mb ) aktuell ver 2.01
  Mit Zitat antworten Zitat
lhmultimedia
(Gast)

n/a Beiträge
 
#5

Re: Dynamische Variablen in Delphi ???

  Alt 12. Mai 2008, 10:12
Danke.
Veträgt sich Pointer auch mit StringList (damit man Mehrere Pointer als String speichern kann)?
  Mit Zitat antworten Zitat
Nuclear-Ping
(Gast)

n/a Beiträge
 
#6

Re: Dynamische Variablen in Delphi ???

  Alt 12. Mai 2008, 10:14
TList in dem Falle.
  Mit Zitat antworten Zitat
lhmultimedia
(Gast)

n/a Beiträge
 
#7

Re: Dynamische Variablen in Delphi ???

  Alt 12. Mai 2008, 10:22
Kann man einen String in einen Pointer umwandeln?
  Mit Zitat antworten Zitat
Der_Unwissende

Registriert seit: 13. Dez 2003
Ort: Berlin
1.756 Beiträge
 
#8

Re: Dynamische Variablen in Delphi ???

  Alt 12. Mai 2008, 10:23
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
  Mit Zitat antworten Zitat
Der_Unwissende

Registriert seit: 13. Dez 2003
Ort: Berlin
1.756 Beiträge
 
#9

Re: Dynamische Variablen in Delphi ???

  Alt 12. Mai 2008, 10:30
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).
  Mit Zitat antworten Zitat
Nuclear-Ping
(Gast)

n/a Beiträge
 
#10

Re: Dynamische Variablen in Delphi ???

  Alt 12. Mai 2008, 10:31
Ja, wäre auch mal interessant zu wissen, was er überhaupt vor hat.
  Mit Zitat antworten Zitat
Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 05:45 Uhr.
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