Zitat von
Hansa:
Zitat von
Mephistopheles:
...Außerdem kann man in C++ Klassen wie Stackvariablen benutzen - will heißen, wenn "out-of-scope" wird die Klasse freigegeben.
Ist das jetzt ein feature, oder ein Bug ?
Ein Feature, denn in Delphi muß man ein try-finally-Konstrukt oder ein implementiertes Interface (als Workaround) benutzen.
In C++ kann man mit new hingegen das übliche Delphiverhalten ebenfalls bekommen.
Zitat von
Hansa:
Wichtiger noch wäre es, zu wissen, wo so was unbedingt gebraucht wird und wozu. 8)
Autsch
Zitat von
mael:
Meine Frage sollte bedeuten: Warum braucht man eine UNICODE_STRING-Struktur, wenn ich WideString habe?
Zuerst macht man es umständlich und dann verwendet man Operator-Überladung um es wieder komfortabler zu machen.
Man benutzt
UNICODE_STRING und z.B.
LSA_UNICODE_STRING so oft, wenn man sich tiefgehender mit Windowsprogrammierung beschäftigt, daß ich diese Frage nicht erwartet hätte. Das "umständlich machen" obliegt nämlich in Sachen UNICODE_STRING nicht dir (sondern MS). Und das was du als "komfortabler machen" bezeichnest, nenne ich Abstraktion
.
Zitat von
mael:
Was sehr gut ist. Schade ist eher, daß Delphi keine Templates unterstützt.
Da würde ich nur teils zustimmen. Wenn, wie das manche C/C++-Programmierer machen, mehr Programm in Präprozessorstatements als in C/C++-Code steht, stimme ich voll zu. Aber ein Präprozessor könnte manchmal so einiges erleichtern - auch in Delphi - er müßte ja nicht gleich so vieles können wie der in C
. Zum Beispiel könnte der globale #defines erlauben, was man aktuell relativ umständlich machen muß.
Templates wären allerdings die Krönung - da stimme ich voll mit dir überein.
Aber wie schriebst du so schön:
mael schrieb (Hervorhebung Mephisto):
Freepascal hat Operatorueberladung, aber wie schon gesagt, bei Delphi fehlt die Weiterentwicklung der Sprache.
Zitat von
jbg:
Zitat von
mael:
Es ist natürlicher: vermeidet try-finally-Blöcke so daß man Objekte wie Variablen primitiven Typs (also Integer, Char, Boolean) verwenden kann. Dynamische Allokation geht ja immer noch mit new.
Na, dann nimm doch "object" statt "class", was das eigentliche Pendant zu C++'s "class" ist.
object ist
seit mindestens Delphi 4 "deprecated" (verworfen, sollte nicht benutzt werden, nicht mehr dokumentiert). Du kommst also mit diesem Tip mindestens 7 Jahre zu spät (D4 kam 1998 raus). Eigentlich ist diese Methode ein Relikt aus BP-Zeiten, deren Benutzung absolut nicht empfohlen und diversen Einschränkungen unterworfen ist - sie existierte zur einfacheren Portierbarkeit alten Codes. Siehe dazu
mael's Ausführungen oben.