AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Object-Pascal / Delphi-Language Delphi statisch deklarierte records mit automatischen Constructor
Thema durchsuchen
Ansicht
Themen-Optionen

statisch deklarierte records mit automatischen Constructor

Ein Thema von stoxx · begonnen am 21. Apr 2009 · letzter Beitrag vom 22. Apr 2009
Antwort Antwort
Seite 1 von 2  1 2      
Benutzerbild von stoxx
stoxx

Registriert seit: 13. Aug 2003
1.111 Beiträge
 
#1

statisch deklarierte records mit automatischen Constructor

  Alt 21. Apr 2009, 17:03
ob es sowas denn irgendwann geben wird in Delphi 2011 bitte?
dass ein automatischer Constructor Aufruf erfolgt, bevor ein statisch angelegter Record verwendet wird, also quasi bei der Speichergenerierung?

weiß jemand, ob sowas geplant ist?

also wie statische Klassen in C sozusagen?
Phantasie ist etwas, was sich manche Leute gar nicht vorstellen können.
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.184 Beiträge
 
Delphi 12 Athens
 
#2

Re: statisch deklarierte records mit automatischen Construct

  Alt 21. Apr 2009, 19:29
Jupp, sowas wünsche ich mir auch schon länger

Praktisch 2 neue Operatoren für InitializeRecord und FinalizeRecord.

ich hatte es nur das Initialize zu simulieren, indem ich einen String bzw. ein dynamisches Array dafür mißbrauchte, welcher dieses ja inne hat

Aber theoretisch könnte man sich das Finalize und ein verzögertest Initialize (praktisch beim Aufrufen einer Methode des Records) über einen Interface irgendwie zusammenbasteln
$2B or not $2B
  Mit Zitat antworten Zitat
Benutzerbild von Phoenix
Phoenix
(Moderator)

Registriert seit: 25. Jun 2002
Ort: Hausach
7.641 Beiträge
 
#3

Re: statisch deklarierte records mit automatischen Construct

  Alt 21. Apr 2009, 19:45
Naja.. comm... das Record.Create kannst Du ja wohl noch von Hand aufrufen?
Ich mein - konstruktoren für Records sind ja nix neues mehr. Der automatische Aufruf ist halt ned da... Aber wenn man das weiss kann man den ja auch selber aufrufen.

Ansonsten: Feature request in QC eintragen und beten
Sebastian Gingter
Phoenix - 不死鳥, Microsoft MVP, Rettungshundeführer
Über mich: Sebastian Gingter @ Thinktecture Mein Blog: https://gingter.org
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.184 Beiträge
 
Delphi 12 Athens
 
#4

Re: statisch deklarierte records mit automatischen Construct

  Alt 21. Apr 2009, 20:38
praktisch ein "automatisches" Event, wie bei Interfaces, wäre nicht schlecht.

halt wie es bei den dynamischen Arrays und Strings auch de Fall ist.
(wenn Variable erstellt, kopiert und freigegeben wird)
$2B or not $2B
  Mit Zitat antworten Zitat
alzaimar
(Moderator)

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

Re: statisch deklarierte records mit automatischen Construct

  Alt 21. Apr 2009, 21:01
Was ich mich wünsche, ist ein automatischer Problemsolver, der mir endlich meine Probleme löst, indem ich einfach das program Keyword eintippe. Ich schreib das mal an Embarcadero. So schwer kann das ja wohl nicht sein.

Mal im Ernst: Meint ihr nicht auch, das Code dann noch unleserlicher wird? Ich möchte in meinen Programmen weitestgehend steuern, ob und wann Code ausgeführt wird. Es kann doch nicht sein, das folgender Code meine Festplatte formatiert:
Delphi-Quellcode:
Programm HarmlosOderNicht;
Uses Harmlos;
Var
  X : TWirklichGanzHarmlosHarHar;

Begin
End.
Sowas meint ihr doch, oder?
"Wenn ist das Nunstruck git und Slotermeyer? Ja! Beiherhund das Oder die Flipperwaldt gersput!"
(Monty Python "Joke Warefare")
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.184 Beiträge
 
Delphi 12 Athens
 
#6

Re: statisch deklarierte records mit automatischen Construct

  Alt 21. Apr 2009, 21:43
da X nicht genutzt wird, kürzt Delphi das raus und nix passiert
(und Notfalls hau ich das Formatieren in den Initialisations-Abschnitt 'ner Unit und fertig,
also automatischer Code ist nicht nur hier "gefährlich")

wieso denn nicht? derartig automatische Dinge (Compilermagic) kennen wir doch
schon zu Genüge (Paradebeispiele: Strings und dynamische Arrays),
also warum soll man sich dann sowas nicht auch für eigene Typen wünschen?


OK, Operatoren für Objekte/Interfaces wären noch geil
$2B or not $2B
  Mit Zitat antworten Zitat
Benutzerbild von stoxx
stoxx

Registriert seit: 13. Aug 2003
1.111 Beiträge
 
#7

Re: statisch deklarierte records mit automatischen Construct

  Alt 22. Apr 2009, 07:06
Zitat von Phoenix:
Naja.. comm... das Record.Create kannst Du ja wohl noch von Hand aufrufen?
alle Sachen, die sich trotz grobem Fehler compilieren lassen, sind schlecht, weil die Softwarequalität darunter leidet.
Wenn ein Klassenpointer nicht createt ist, dann merkt man das sehr gleich. Das Programm mit einem uninitialisiertem Record läuft erstmal trotzdem.
Und das ist nicht gut.
Phantasie ist etwas, was sich manche Leute gar nicht vorstellen können.
  Mit Zitat antworten Zitat
Benutzerbild von SirThornberry
SirThornberry
(Moderator)

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

Re: statisch deklarierte records mit automatischen Construct

  Alt 22. Apr 2009, 07:15
Zitat:
praktisch ein "automatisches" Event, wie bei Interfaces, wäre nicht schlecht.
Und warum verwendet man dann nicht einfach Interfaces?
Den Wunsch kann ich geringfügig verstehen aber man sollte Bedenken das es Bereits Objecte (die Constructoren unterstützen gibt). Und wenn man einen Constructor will soll man doch Objekte nehmen. Will man keinen kann man einen Record nehmen. Wenn wir jetzt noch den Record mit Constructoren versehen müsste ja etwas neues eingeführt werden damit es wieder etwas ohne constructoren gibt.
Ich fände dann sinnvoller das man bei der Declaration gleich Zuweisungen vornehmen kann (wie bei globalen Variablen bzw. wie in anderen Programmiersprachen)
Jens
Mit Source ist es wie mit Kunst - Hauptsache der Künstler versteht's
  Mit Zitat antworten Zitat
alzaimar
(Moderator)

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

Re: statisch deklarierte records mit automatischen Construct

  Alt 22. Apr 2009, 07:42
Zitat von himitsu:
da X nicht genutzt wird, kürzt Delphi das raus und nix passiert
Glaub ich nicht, denn das wäre noch schlimmer. Und wann wird denn dann der Code ausgeführt? Wenn ich eine Unit nicht weiter verwende, wird der 'Initialization'-Teil doch auch ausgeführt. Also wird das nicht rausgekürzt. Oder doch? Super übersichtlich. Ist noch nicht mal implementiert und schon weis man nicht, was passiert.
Zitat von himitsu:
also automatischer Code ist nicht nur hier "gefährlich")... (Compilermagic) kennen wir doch
schon zu Genüge (Paradebeispiele: Strings und dynamische Arrays)
Mann muss doch nicht dafür sorgen, das noch mehr Compilermagic dazu kommt. Dann kann man doch gleich Visual Basic nehmen.

Ich mag Delphi gerade wegen dem kleinen bisschen Magic, der einem das Leben leichter macht. Aber auch hier muss man manchmal tricksen bzw. bricht sich einen ab, wenn man nicht genau weiss, was Sache ist. Ich empfinde das einkompilierte Zeugs von Delphi als grenzwertig, aber eben noch auf der 'guten Seite'.

Einerseits wäre es sicherlich hilfreich, Records irgendwie initialisieren zu können, nur wann soll das geschehen? Wird dann nicht auch redundanter Code produziert? Einfaches Beispiel:
Delphi-Quellcode:
Var
  A,B : TSomeRecordWithAutoInit;

Begin
  A.Feld := 123;
  B := A;
End;
Wenn der Code sozusagen vor dem 'Begin' ausgeführt wird, dürfte der Init-Code für B überflüssig sein (wegen der Zuweisung von A). Wenn der code also redundant wäre, könnte (und sollte) er wegoptimiert werden. Wann wird also *genau* der Init-Code von 'B' ausgeführt? Wird er überhaupt ausgeführt (wegen der letzten Zeile) oder von Delphi wegoptimiert?

Klarer und eindeutiger wäre es so:
Delphi-Quellcode:
Var
  A,B : TSomeRecordWithoutAutoInit;

Begin
  A.Init; // Klare Ansage.
  A.Feld := 123;
  B := A;
End;
Wie gesagt, nur meine konservative bescheidene Meinung.
"Wenn ist das Nunstruck git und Slotermeyer? Ja! Beiherhund das Oder die Flipperwaldt gersput!"
(Monty Python "Joke Warefare")
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.861 Beiträge
 
Delphi 11 Alexandria
 
#10

Re: statisch deklarierte records mit automatischen Construct

  Alt 22. Apr 2009, 07:47
Imho sollte man die Unterschiede zwischen Klassen und Records nicht weiter verwischen. Wer einen Konstruktor will, sollte eine Klasse nehmen. Statt A.Init; wäre dann eine generisches Init( A); besser
Markus Kinzler
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


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:47 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