AW: Träume, Wünsche und Wahnvorstellungen...
Zitat:
QC Eintrag ist auf meiner Todo Liste. Zitat:
|
AW: Träume, Wünsche und Wahnvorstellungen...
Zitat:
Wäre aber schön, wenn man das ändern würde. :? |
AW: Träume, Wünsche und Wahnvorstellungen...
Zitat:
Zitat:
Ich glaube vor Jahren war sogar mal 2006/2007 im Gespräch. Das bringt uns keinen Schritt weiter. Hoffen wir das es dieses Jahr erscheint und wenn ich David I richtig verstanden habe, dann müsste XE2 ja Ende August/Anfang September erscheinen. |
AW: Träume, Wünsche und Wahnvorstellungen...
Zitat:
Es geht in dem noch zu erstellenden QC Eintrag darum das der Compiler erkennt das ein generischer Enumerator über das IEnumerable<T> bereitgestellt wird ohne das man die Instanz als IEnumerable<T> typecasten muss oder eine IEnumerable<T> Hilfsvariable braucht (oder einen generischen Enumerator ohne IEnumerable<T> implementiert, welcher dann nicht mit TList<T>.AddRange/InsertRange verwendet werden kann) D.h. jetzt muss man anstatt
Delphi-Quellcode:
eine der beiden folgenden Varianten schreiben, wenn man nicht wie Stevie IEnumerable und IEnumerable<T> in unterschiedlichen Klassen implementiert.
var
pStream: TStream; pList: TMyCollection<TMemoryStream>; begin pList := TMyCollection<TMemoryStream>.Create; for pStream in pList do Writeln(pStream.ClassName); Hilfsvariable:
Delphi-Quellcode:
Typecast:
var
pStream: TStream; pList: TMyCollection<TMemoryStream>; pListEnum: IEnumerable<TMemoryStream>; begin pList := TMyCollection<TMemoryStream>.Create; pListEnum := pList; for pStream in pListEnum do Writeln(pStream.ClassName);
Delphi-Quellcode:
var
pStream: TStream; pList: TMyCollection<TMemoryStream>; begin pList := TMyCollection<TMemoryStream>.Create; for pStream in IEnumerable<TMemoryStream>(pList) do Writeln(pStream.ClassName); |
AW: Träume, Wünsche und Wahnvorstellungen...
Zitat:
|
AW: Träume, Wünsche und Wahnvorstellungen...
Konstruktoren sind aber auch Klassenmethoden. Ruft man sie später direkt auf einen Objek auf, werden diese erneut ausgeführt, ohne dass eine neue Instanz erzeugt wid
|
AW: Träume, Wünsche und Wahnvorstellungen...
Zitat:
Aber auch bornierte Menschen können programmieren. Also hat das Eine nichts mit dem Anderen zu tun. Dessenungeachtet habe ich ja gerade geschrieben, das ich mich mir *NICHT* (negierung, verneinung) vorstellen kann, das Du so borniert bist, wie Du dich dargestellt hast. Weiterhin habe ich auch nicht behauptet, das es nur mit 'published' Eigenschaften geht. Also: erst lesen, dann verstehen, und erst dann mitreden. Nebenbei: Mir ist deine Arbeit nicht unbekannt, das nur mal so am Rande, Stevie. ;-) |
AW: Träume, Wünsche und Wahnvorstellungen...
Hört bitte auf, euch gegenseitig anzugreifen. Das gilt speziell für dich, FredlFesl.
Hier geht es darum, Wünsche für kommende Delphi-Versionen zu äußern und sachlich darüber zu diskutieren. Also macht das bitte. Es wäre doch schade, wenn sich das Thema so verläuft und daraufhin geschlossen werden muss. |
AW: Träume, Wünsche und Wahnvorstellungen...
Thema schließen wäre eine Option, ich habe aber auch kein Problem damit, einzelne Personen von der Teilnahme auszuschließen.
Bleibt sachlich oder lasst es bleiben. |
AW: Träume, Wünsche und Wahnvorstellungen...
Ich hoffe es geht auch ohne den "Holzhammer" :wink:
|
AW: Träume, Wünsche und Wahnvorstellungen...
Ein ARM-Compiler soll frühestens 2013 kommen? Da es wohl keinen Legacy-Support in Win 8 ARM geben wird, ist das irgendwie.. doof. Andererseits wird es ja auch mehr Wintel Tablets in 2011/2012 geben. Sollte also n icht so das Problem geben. Außer natürlich man entwickelt für den Consumer-Bereich..
Ich hätte gerne ein vollständiges Application-Framework, inkl. ORM, DataBinding und allem anderen Schnickschnack mit IDE-Support natürlich. OffTopic: Gibt's eigentlich schon eine Feature-Liste für XE2? |
AW: Träume, Wünsche und Wahnvorstellungen...
Zitat:
denn man hat mitbekommen, daß wenn etwas darin steht, was dann doch noch nicht enthalten ist, dann gibt es zuviele Proteste seitens der Kunden. Also sagt man lieber nichts mehr ... dann kann auch keiner mehr meckern. :angle2: |
AW: Träume, Wünsche und Wahnvorstellungen...
Zudem ist ja noch eine Weile zur Veröffentlichung
|
AW: Träume, Wünsche und Wahnvorstellungen...
Zitat:
Dass es da keine Liste gibt, dürfte mehrere Gründe haben. Unter anderem psychologische. Denn wenn schon alle Features vorher bekannt werden, wird wieder das Maul zerrissen, dass das alles unrealistisch ist und wenn dann die Version herauskommt, wird sich mokiert, dass ja nichts wirklich Neues dabei ist. (Weil es eben schon länger bekannt ist.) Zu den kommenden Features an sich möchte bzw. darf ich nichts weiter sagen, deshalb zitiere ich einmal fachlich unkommentiert diese Liste aus der Agenda der nächsten Delphi-Tage: Zitat:
// EDIT: Zitat:
Und es sind ja auch diverse sehr ausführliche Anleitungen zum Beispiel zu DataSnap hinzugekommen. |
AW: Träume, Wünsche und Wahnvorstellungen...
Zitat:
Auf jeden Fall bin ich schon ziemlich gespannt auf XE2 - denn imo bietet Databinding eine unerahnte (zumindest für die, die es noch nicht live erlebt haben) Flexibilität bei der Entwicklung. Zitat:
|
AW: Träume, Wünsche und Wahnvorstellungen...
Zitat:
Von D2006 sich zu verbessern, ist ja wahrhaftig keine Kunst, von D7, das wäre nicht schlecht. (D2006/ADO da muß man wohl dankbar sein, daß es überhaupt etwas gibt, Vollständigkeit und Fehlerarmut davon träumt man). Gruß K-H |
AW: Träume, Wünsche und Wahnvorstellungen...
Einen ordentlichen Präprozessor der diesen Namen auch verdient. Alternativ einen Mechanismus mithilfe dessen ich einen Präprozessor zwischenschalten kann, ohne gleich Kopfstände veranstalten zu müssen.
|
AW: Träume, Wünsche und Wahnvorstellungen...
Wenn man von Pascal ausgeht, könnte man eine online Konvertierung zu C++ und zurück per IDE-Shortcut realisieren . . .
|
AW: Träume, Wünsche und Wahnvorstellungen...
Mir fällt noch was ein:
Delphi-Quellcode:
ein
myString.Upper();
Delphi-Quellcode:
bastelt (oh Wunder, das ist genau das, was in C# bei den extension methods passiert).
Upper(myString);
|
AW: Träume, Wünsche und Wahnvorstellungen...
Nur daß dieser erste Parameter in Delphi als verstecktes Self übergeben würde. :stupid:
|
AW: Träume, Wünsche und Wahnvorstellungen...
Zitat:
|
AW: Träume, Wünsche und Wahnvorstellungen...
ihhh C ... sowas guck ich mir nich an :stupid:
|
AW: Träume, Wünsche und Wahnvorstellungen...
Zitat:
Ansonsten fand' ich es unglaublich ernüchternd, dass CodeGear tatsächlich so blödsinnig war, und Record-Helper einführte, anstatt einfach einfach nur noch "Helper for IrgendeinenTypenWieZumBleistiftInteger" zuzulassen. Tat richtig weh, wenn jemand so einen riesigen Hebel hat und mit sowenig Aufwand soviel erreichen könnte, nur um sich dann (dank des offenkundig nicht vorhandenen Anspruchs) mit der primitivsten und sinnlosesten Lösung zufrieden zu geben. ("record helper" neben dem vorher schon existierenden "class helper") |
AW: Träume, Wünsche und Wahnvorstellungen...
Zitat:
In C# hat eine echte Methode immer Vorrang vor den Extension Methods, d.h. wenn es eine Methode gibt namens "HansWurst" und eine Extension Method, die ebenfalls "HansWurst" heißt, wird die Extension Method niemals aufgerufen, sondern jedesmal die echte Methode. Selbst, wenn sie verschiedene Signaturen haben. In Delphi haben die Helper den Vorrang, d.h. man hat eine Methode A und der Helper hat ebenfalls eine Methode A. Wenn jetzt irgendwo im Code Instanz.A aufgerufen wird, kommt die Helper-Methode zum Einsatz. |
AW: Träume, Wünsche und Wahnvorstellungen...
Zitat:
Aber nicht C#. Dort gewinnt die tatsächliche Methode nur wenn die Signatur gleich ist oder besser passt.
Code:
static void Miep(this Sample instance, object untypedValue)
{ instance.Miep((int)untypedValue); instance.SetByExMethod = true; } class Sample { public int Value { get; private set; } public bool SetByExMethod { get; set; } public void Miep(int newValue) { Value = newValue; SetByExMethod = false; } } static void Main() { var s = new Sample(); s.Miep(untypedValue: 1); Debug.Assert(s.Value == 1 && s.SetByExMethod); s.Miep(2); Debug.Assert(s.Value == 2 && !s.SetByExMethod); s.Miep((Object)3); Debug.Assert(s.Value == 3 && s.SetByExMethod); } |
AW: Träume, Wünsche und Wahnvorstellungen...
Zitat:
Irgendwie kann ich mir auch nicht vorstellen, dass Oxygene und C# da unterschiedlich verfahren. [edit] Du hast Recht, hab nochmal nachgeguckt. An meiner Grundaussage rüttelt das jedoch nichts: C#: echte Methoden Vorrang Delphi: Helper-Methoden Vorrang |
AW: Träume, Wünsche und Wahnvorstellungen...
Ahh ich hätte da noch was:
Alle Dreingaben / Zusatzsoftware / Stückwerk mit in den Hauptinstaller packen. Bis man den ganzen Kram einzeln deinstalliert hat, hat man einen Bart :D Und ein schnelleres EDN. |
AW: Träume, Wünsche und Wahnvorstellungen...
Den Installer sollte man sowieso mal überarbeiten ... du willst nicht wissen, was für ein Schrott da drinnen enthalten ist.
(wer den Schock für's Leben haben will, der brauch sich diesen nur mal ansehn) |
AW: Träume, Wünsche und Wahnvorstellungen...
Gilt funktionierendes Error Insight eigentlich als Traum oder Wahnvorstellung? :?:
|
AW: Träume, Wünsche und Wahnvorstellungen...
Beides :)
|
AW: Träume, Wünsche und Wahnvorstellungen...
Das hatte ich befürchtet :lol:
|
AW: Träume, Wünsche und Wahnvorstellungen...
Zitat:
|
AW: Träume, Wünsche und Wahnvorstellungen...
Zitat:
// EDIT: Die größten Probleme habe ich im Grunde mit Compilerdefines usw., die in der IDE nicht korrekt ausgewertet werden. Denn das führt dazu, dass die Codenavigation usw. nicht funktioniert... |
AW: Träume, Wünsche und Wahnvorstellungen...
Eine Kleinigkeit aber doch sehr hilfreich:
Componentvervollständigungen (Ctrl-Shift-C) sollten nicht in Regionen erfolgen, zumindest nie in geschlossenen Regionen. Regionen definiert/schließt man ja, um sie als Block zu behandeln und auszublenden. Auch stört mich, dass bei der Codeformatierung (Ctrl-D) alle Regionen geöffnet werden. |
AW: Träume, Wünsche und Wahnvorstellungen...
Ich wär schon froh, wenn die Codeformatierung anonyme Methoden kennen würde. Wenn man eigene Zeilenumbrüche behalten lässt, gehts einigermaßen, aber nicht schön. Ich weiß nicht, ob das schon dran war das Thema. :D
|
AW: Träume, Wünsche und Wahnvorstellungen...
Zitat:
Delphi-Quellcode:
Ich mach das mit den geschweiften Klammern, aber ist ein enormer Aufwand nur damit es halbwegs lesbar ist!
class function TApiPlugin.CMSBelongsTo(ACMSPluginPath, AWebsiteSourceCode: string): Boolean;
var _BelongsTo: Boolean; _Plugin: ICMSPlugIn; begin _BelongsTo := False; LoadPlugin(ACMSPluginPath, { } procedure(var APlugin: IPlugIn) { } begin { . } if APlugin.QueryInterface(ICMSPlugIn, _Plugin) = 0 then { ... } try { ..... } _BelongsTo := _Plugin.BelongsTo(AWebsiteSourceCode); { ... } finally { ..... } _Plugin := nil; { ... } end; { } end); Result := _BelongsTo; end; |
AW: Träume, Wünsche und Wahnvorstellungen...
Wäre das Leben schön, wenn man in Class-Helpern auf Konstruktoren und Destruktoren reagieren könnte *träum*
(bzw. quasi sowas wie AfterConstruction und BeforeDestruction) Klassenvariablen kann man in Class-/Record-Helper wenigstens schonmal nutzen. :D |
AW: Träume, Wünsche und Wahnvorstellungen...
Wie soll das bei nem Class helper gehen? Du überschreibst ja keine virtuellen Methoden damit.
|
AW: Träume, Wünsche und Wahnvorstellungen...
Nichts überschreiben oder so, einfach nur alle "Konstruktoren" der Class Helper aufrufen, nachdem AfterConstruction der Klasse ausgeführt wurde.
(in der Reihenfolge, wie die Class Helper eingebunden wurden) Man bräuchte einfach nur dort die ganzen Class Helper durchsteppen, wo auch AfterConstruction aufgerufen wird. Praktisch wäre das dann sogar in der umgekehrten Reihenfolge, wie beim Überschreiben (override), wo ja das zuerst ausgeführt wird, was man als Letztes in einer Ableitung deklariert wurde. |
AW: Träume, Wünsche und Wahnvorstellungen...
Klingt für mich aber eher nach nem Workaround für schlechtes Design.
Mehr als 1 Helper gleichzeitig: ja - Verhalten von bestehenden Klassen verändern: nein |
Alle Zeitangaben in WEZ +1. Es ist jetzt 12:09 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