AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Variable zur Laufzeit erstellen

Ein Thema von Scorpion · begonnen am 20. Nov 2005 · letzter Beitrag vom 20. Nov 2005
Antwort Antwort
Seite 2 von 3     12 3      
Robert_G
(Gast)

n/a Beiträge
 
#11

Re: Variable zur Laufzeit erstellen

  Alt 20. Nov 2005, 15:35
Zitat von Scorpion:
@Der_Unwissende: Bei dir fragt sich der Quellcode was eine TObjectList sei?
Klingt nach einem Fall für die Zaubertaste. (F1) Damit findest du auch die Unit, in der TObjectList deklariert ist... (Schreibe ich jetzt absichtlich nicht hierhin)

Array machen hier eigentlich absolut keinen Sinn.
Außer natürlich man hat keinen Bock sich Gedanken über die nettere Alternative zu machen. Dyn. Arrays sind wohl in 99% aller Fälle fehl am Platze. Auch wenn das vllt weitere 10 Jahre braucht um allg. erkannt zu werden...


Nachtrag:
Zitat von ichbins:
dynamische Arrays gehen erst ab D7...
dir wird nur eine Liste übrigbleiben. oder aber ein Update auf D7.
Der war gut dyn Arrays gibt es seit D4...
Aber ein araybasierter Container (TList-Ableitung) oder eine richtige Liste dürften wohl fast immer praktischer sein.
  Mit Zitat antworten Zitat
Benutzerbild von malo
malo

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

Re: Variable zur Laufzeit erstellen

  Alt 20. Nov 2005, 15:39
Zitat von Robert_G:
Array machen hier eigentlich absolut keinen Sinn.
Hast du in der Schule nicht gelernt, was das ist? Das ist nämlich eine Behauptung. Und es muss dir niemand glauben, solange du diese Behauptung nicht bewiesen hast. Das habe ich sowohl im Deutschunterricht, als auch im Mathematikunterricht gelernt.
  Mit Zitat antworten Zitat
Scorpion

Registriert seit: 3. Nov 2002
Ort: Flörsheim
154 Beiträge
 
Delphi 5 Professional
 
#13

Re: Variable zur Laufzeit erstellen

  Alt 20. Nov 2005, 15:40
Hey...

Vielen Dank, jetzt klappt das mit der ObjectList

Gruß Nico
  Mit Zitat antworten Zitat
Robert_G
(Gast)

n/a Beiträge
 
#14

Re: Variable zur Laufzeit erstellen

  Alt 20. Nov 2005, 15:42
Zitat von malo:
Zitat von Robert_G:
Array machen hier eigentlich absolut keinen Sinn.
Hast du in der Schule nicht gelernt, was das ist? Das ist nämlich eine Behauptung. Und es muss dir niemand glauben, solange du diese Behauptung nicht bewiesen hast. Das habe ich sowohl im Deutschunterricht, als auch im Mathematikunterricht gelernt.
Mir muss niemand etwas glauben. Und ich werde jetzt nicht das Offensichtliche schreiben, nur weil so ein kleiner Nerd stolz die Definition einer Behauptung rezitiert hat...
  Mit Zitat antworten Zitat
ichbins

Registriert seit: 9. Jul 2005
Ort: Hohenaltheim
1.001 Beiträge
 
Delphi 2005 Personal
 
#15

Re: Variable zur Laufzeit erstellen

  Alt 20. Nov 2005, 15:51
wieso sind dynamische Arrays denn sinnloser als Listen? Weil sie weniger Speicher verbrauchen? Weil sie auch mehrdimensional möglich sind?
Michael Enßlin
Ich, der ich weiß, mir einzubilden, dass ich weiß, nichts zu wissen, weiß, dass ich nichts weiß.
Sokrates
  Mit Zitat antworten Zitat
Robert_G
(Gast)

n/a Beiträge
 
#16

Re: Variable zur Laufzeit erstellen

  Alt 20. Nov 2005, 15:55
Zitat von ichbins:
wieso sind dynamische Arrays denn sinnloser als Listen? Weil sie weniger Speicher verbrauchen? Weil sie auch mehrdimensional möglich sind?
Weil ein Array nur ein primitiver Typ ist. Er kann von selbst rein gar nix, das heißt du darfst alles zu Fuss erledigen...
Eine ContainerKlasse hingegen sorgt automatisch für Wachstum und lässt dich Elemente tauschen, Einfügen, Anhangen oder Entfernen.
Aber ich merke schon, dass ich wieder Dinge schreibe, die eh niemanden interessieren...
  Mit Zitat antworten Zitat
Benutzerbild von malo
malo

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

Re: Variable zur Laufzeit erstellen

  Alt 20. Nov 2005, 15:59
Zitat von Robert_G:
Aber ich merke schon, dass ich wieder Dinge schreibe, die eh niemanden interessieren...
Du hast es verstanden


Es geht nicht darum, dass es niemanden interessiert. Es geht darum, dass Listen gelegentlich nicht notwendig sind. Nur weil du für jeden Furz ein Objekt erzeugst, muss das ja nicht heißen, dass das automatisch besser ist als irgendetwas anderes.
  Mit Zitat antworten Zitat
Der_Unwissende

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

Re: Variable zur Laufzeit erstellen

  Alt 20. Nov 2005, 16:06
Zitat von ichbins:
wieso sind dynamische Arrays denn sinnloser als Listen? Weil sie weniger Speicher verbrauchen? Weil sie auch mehrdimensional möglich sind?
Wo hast du nur diese lustigen Ideen her? Weniger Speicher? Wie kommst du denn darauf? All die Aufräumarbeiten, die eine TObjectlist leistet, stellt dir doch ein Array nicht automatisch zur Verfügung. Und (hier liegt das Problem) die wenigsten rufen ein finalize und setLength(array, 0) auf. Das wäre wirklich mal angebracht.
Zudem hat Delphi eine interessante Strategie was dyn. Arrays angeht, erhöh mal die Länge eines dyn. Arrays immer schön um 1 und du wirst merken dass das nicht dem Speicher entspricht, der alloziert wird. Dann wirst du auch schnell einsehen, dass sie alles andere als weniger Speicher verbrauchen.

Mehrdimensionale Arrays sind natürlich toll, aber was wäre gleich eine Liste von Listen?
Unabhängig davon kannst du die Daten auch linear anordnen und hast nichts anderes (ausser evtl. weniger Sprünge im Speicher, je nach Umsetzung). Jedenfalls wirst du häufiger mal auf mehrdimensional verzichten müssen und einfach rechnen und sehen ist mindestens genauso einfach, aber anderes Thema.

Drehen wir die Frage um, was genau kann ein dyn. Array mehr als eine Liste? Nun ja, da wir schon häufiger die Diskussion hatten kommen wir doch gleich dazu, TObjectList basiert auf dyn. Arrays, nimmt einem aber die Verwaltung ab. Das ist auch ganz gut, denn das ist eine der wichtigsten Ideen der Informatik (habe ich mal im Studium gelernt).
Du automatisierst hier eine Arbeit und validierst einmalig, dass sie immer funktioniert. Damit weißt du, dass du jedes mal eine funktionsfähige Verwaltung des Speichers durch deine TObjectList hast.
Verzichtest du aus irgendwelchen Gründen (z.B. ein paar Bytes mehr Speicher) auf dieses Funktionen, müsstest du jedes mal validieren, dass deine Lösung genauso der Spezifikation gerecht wird. Da wirst du dann merken, dass man doch schnell kleine Fehler macht oder was vergisst...
Und mal ehrlich, wie oft liest du die Zeile finalize wenn dyn. Arrays benutzt werden?

Gruß Der Unwissende
  Mit Zitat antworten Zitat
Der_Unwissende

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

Re: Variable zur Laufzeit erstellen

  Alt 20. Nov 2005, 16:10
Zitat von malo:
Nur weil du für jeden Furz ein Objekt erzeugst, muss das ja nicht heißen, dass das automatisch besser ist als irgendetwas anderes.
Man, hätte man das früher gewusst, ich glaube man hätte die Objekt Orientierung nie erfunden
Ist nur merkwürdig das man in Delphi Objekte eingeführt hat, man kam doch so schön ohne aus...
Ich meine die wertvollen microsek. die es kostet ein Objekt zu erzeugen, der riesige Speicheroverhead von ein paar Bytes pro Objekt und wofür? Nur weil die einem jede Menge sonst nicht vorhandener Einfachheit zur Verfügung stellen?!

Nieder mit der OOP!!!! Ehrlich!
  Mit Zitat antworten Zitat
ichbins

Registriert seit: 9. Jul 2005
Ort: Hohenaltheim
1.001 Beiträge
 
Delphi 2005 Personal
 
#20

Re: Variable zur Laufzeit erstellen

  Alt 20. Nov 2005, 16:32
bei einer Liste muss ich aber auch list.free machen. setlength(array,0) ist da genauso aufwendig. Wenn du aber eine Mehrdimensionale Liste hast, summieren sich die paar Bytes und Mikrosekunden ziemlich schnell auf...

[ot]wieso ist robert_g gerade zum ehemaligen Benutzer mutiert? [/ot]
Michael Enßlin
Ich, der ich weiß, mir einzubilden, dass ich weiß, nichts zu wissen, weiß, dass ich nichts weiß.
Sokrates
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 2 von 3     12 3      


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 17:04 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