AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Sonstige Fragen zu Delphi Delphi Variable während der Laufzeit erzeugen
Thema durchsuchen
Ansicht
Themen-Optionen

Variable während der Laufzeit erzeugen

Ein Thema von Helmi · begonnen am 15. Jul 2005 · letzter Beitrag vom 15. Jul 2005
Antwort Antwort
Benutzerbild von Helmi
Helmi

Registriert seit: 29. Dez 2003
Ort: Erding, Republik Bayern
3.323 Beiträge
 
Delphi XE2 Professional
 
#1

Variable während der Laufzeit erzeugen

  Alt 15. Jul 2005, 16:50
Hallo,

ein Programmierer bei mir in der Firma programmiert mit C++ und hat eine Software geschrieben, in der viele Variablen zur Laufzeit erzeugt werden.

Ich konnt ihn gestern mal ausquetschen wie er das macht und er sagte mir, dass er es mit einer Funktion "new" macht.
Er sagte mit dieser Funktion kann man Variablen zur Laufzeit erzeugen, Typ und Name angeben.

Gibt es so was auch bei Delphi?

Ich hab zwar auch bei Delphi ein "new" gefunden. Dieses braucht aber immer auch eine schon projektierte Variable (siehe Delphi-Hilfe zu "new").

Ich hab Delphi 7 Pro.
mfg
Helmi

>> Theorie ist Wissen, dass nicht funktioniert - Praxis ist, wenn alles funktioniert und keiner weiss warum! <<
  Mit Zitat antworten Zitat
Benutzerbild von Aenogym
Aenogym

Registriert seit: 7. Mär 2004
Ort: Schwerin
1.089 Beiträge
 
Delphi 7 Enterprise
 
#2

Re: Variable während der Laufzeit erzeugen

  Alt 15. Jul 2005, 17:07
hi,

also von strings weiß ich, dass es die funktion Delphi-Referenz durchsuchennewStr() gibt. die gibt auch einen pointer auf dne erstellen string zurück. ich bin sicher, dass es in delphi auch für andere typen so etwas gibt.

aenogym
Steffen Rieke
Was nicht buzzt, wird buzzend gemacht!
http://blog.base-records.de
http://www.base-records.de
  Mit Zitat antworten Zitat
Tyrael Y.

Registriert seit: 28. Jul 2003
Ort: Stuttgart
1.093 Beiträge
 
Delphi 2007 Professional
 
#3

Re: Variable während der Laufzeit erzeugen

  Alt 15. Jul 2005, 17:17
Moin,

für native Typen wie String, Integer, Float usw. braucht man keinen Speicher zu besorgen, die Speicherverwaltung davon übernimmt Delphi.

Objekte werden mit einer Create Methode erzeugt...diese Method besorgt dne nötigen Speicher....die Methode Destroy dient dazu den Speicher wieder freizugeben...

Bei dynamischen Arrays zb kann man sich über New() den nötigen Speicher holen und mit Dispose() wieder freigeben....


..alles nur kurz angerissen...zu mehr Infos gibt es gute Tutorials und Bücher


Gruß

Tyrael
Levent Yildirim
Erzeugung von Icons aus Bildern:IconLev
  Mit Zitat antworten Zitat
Benutzerbild von malo
malo

Registriert seit: 19. Sep 2004
2.115 Beiträge
 
#4

Re: Variable während der Laufzeit erzeugen

  Alt 15. Jul 2005, 17:21
Zitat von Tyrael Y.:
Bei dynamischen Arrays zb kann man sich über New() den nötigen Speicher holen und mit Dispose() wieder freigeben....
Macht man das nicht normalerweise mit Setlength?
  Mit Zitat antworten Zitat
Robert_G
(Gast)

n/a Beiträge
 
#5

Re: Variable während der Laufzeit erzeugen

  Alt 15. Jul 2005, 17:23
Dynamische Variablen? Sowas hast du doch nur wenn du dynamischen Code generierst. Da du den Delphi compiler nicht mitliefern darfst dürfte das wohl ausfallen.
  Mit Zitat antworten Zitat
Benutzerbild von SirThornberry
SirThornberry
(Moderator)

Registriert seit: 23. Sep 2003
Ort: Bockwen
12.235 Beiträge
 
Delphi 2006 Professional
 
#6

Re: Variable während der Laufzeit erzeugen

  Alt 15. Jul 2005, 17:46
New in Delphi kommt schon hinnt. Klar musst du dort bereits eine Variable übergeben, aber wie du sicherlich schon gesehen hast ist das ein Pointer.

Grundsätzlich läuft das ganze so ab. Man hat eine Variable welche ein Pointer ist (PInteger zum Beispiel ist ein Pointer auf einen Integer). Mit "New(PIntegerVariable)" fordert man dann speicher an und der Pointer(Adresse) auf diesen Speicher wird der Variablen "PIntegerVariable" zugewiesen.
Nun kann ich diesen Vorgang immer wieder holen und immer mehr speicher anfordern.
Allerdings sollte man sich die Pointer auch merken/speichern damit man den Speicher später auch wieder freigeben kann.

Ein Beispiel:
Delphi-Quellcode:
var LVariable: PInteger;
    LCount: Integer;
    LList: TList;
begin
  LList := TList.Create; //eine Liste in der wir uns die Variablen speichern (Pointer darauf)
  for LCount := 0 to 4 do //in unserem Beispiel holen wir 5 mal speicher
  begin
    new(LVariable); //Hiermit wird Speicher angefordert und die Adresse des Speichers wird dann der Variablen zugewiesen
    LList.Add(LVariable); //damit wir unseren angeforderten Speicher später auch noch nutzen können, speichern wir einen Pointer darauf in einer Liste
  end;
  //do anything with the list

  for LCount := 0 to LList.Count - 1 do
    dispose(LList.Items[LCount]); //angeforderten Speicher wieder freigeben
  LList.Free; //Liste freigeben
end;
Jens
Mit Source ist es wie mit Kunst - Hauptsache der Künstler versteht's
  Mit Zitat antworten Zitat
Oxmyx

Registriert seit: 21. Sep 2004
499 Beiträge
 
#7

Re: Variable während der Laufzeit erzeugen

  Alt 15. Jul 2005, 17:48
Meistens verwendet man das Schlüsselwort "new" in C++, um dynamische Instanzen von Klassen zu erzeugen oder Arrays anzulegen. Mit Klassen funktioniert das so:
Code:
class eineKlasse;
...
void proc()
{
    eineKlasse eineInstanz;
    eineInstanz = new eineKlasse;   // neue Klasseninstanz erzeugen
    ...
}
In Delphi gibt's dafür den Konstruktor, der meistens "Create" heißt.

Delphi-Quellcode:
procedure bla;
var
  eineInstanz: eineKlasse;
begin
  eineInstanz := eineKlasse.Create; // neue Klasseninstanz erzeugen
  ...
end;
  Mit Zitat antworten Zitat
Benutzerbild von Helmi
Helmi

Registriert seit: 29. Dez 2003
Ort: Erding, Republik Bayern
3.323 Beiträge
 
Delphi XE2 Professional
 
#8

Re: Variable während der Laufzeit erzeugen

  Alt 15. Jul 2005, 18:10
Hallo,

danke für die Antworten!

Ich hab mir gerade dem seine Software durch den Kopf gehen lassen.

Er macht das so:

Es gibt eine Art Ini-Datei in der z. B. drin steht:
Zitat:
ID_TEXT_Hallo=Hallo
ID_TEXT_Hallo ist sozusagen die Variable als String-Variable und Hallo eben der String dieser Variable.

Er liest sich also diese Zeile ein und erstellt jetzt im Code eine String-Variable namens "ID_TEXT_Hallo".
Und dies macht er mit "new" (C++).

Diese Ini-Datei kann aber gute 50 oder mehr solcher Einträge enthalten.

Er sagte mir etwa von einem Identifier.

In seiner Software gibt er es etwa so an:
int new(ID_TEXT_Hallo) Das ist jetzt nur sinngemäß - muss also nicht so stimmen wie es oben steht.

Geht das bei Delphi auch?
mfg
Helmi

>> Theorie ist Wissen, dass nicht funktioniert - Praxis ist, wenn alles funktioniert und keiner weiss warum! <<
  Mit Zitat antworten Zitat
Oxmyx

Registriert seit: 21. Sep 2004
499 Beiträge
 
#9

Re: Variable während der Laufzeit erzeugen

  Alt 15. Jul 2005, 18:47
Vermutlich hat er sich diese Variablen eben angelegt, und lädt zur Laufzeit dann den Inhalt aus der Ini-Datei. Also z.B. so:

Code:
char* ID_TEXT_Hallo;

void LoadVars()
{
  /* Hier kommt jetzt Code, der aus der Ini-Datei den richtigen Eintrag
    heraussucht und die Länge des Strings ermittelt, z.B. bei "Hallo"
    ist die Länge 5 */

  ID_TEXT_Hallo = new char[5];

  /* Jetzt kann man irgendwelche beliebigen 5 Zeichen in den String
     ID_TEXT_Hallo reinschreiben... */
}
  Mit Zitat antworten Zitat
Antwort Antwort


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 00:52 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