Zitat von
Hubble:
Was ich in den letzten Jahren lernen mußte:
In Delphi wird man zum schlampigen Programmieren verleitet.
Mit dieser Aussage hast du dir in diesem Forum jetzt circa 16310 Feinde geschaffen
Zitat von
Hubble:
Und die
VCL ist nur für procedurale Vorgehensweise aus dem letzten Jahrhundert geeignet.
Sie erschwert es, zum Beispiel auch wegen der TApplication-Klasse, aber die
VCL *ist* objektorientiert, es ist ungewohnt mit ihr prozedural zu arbeiten.
Zitat von
Hubble:
Soweit OK aber dann:In delphi muß ich erst mal var schreiben dann die Instanz erzeugen,
initialiseiren dann wieder löschen und zu allem Überfluß hockt das
blöde Teil nicht auf dem schnellen Stack sondern auf dem lahmen heap
Schnell/Lahm? Wenn der Speicher einmal allokiert ist, ist mir das auch egal.
Außerdem ist die Geschichte mit "var" nur eine Syntaxeigenschaft von Pascal. Du legst da übrigens eine lokale Variable an, soviel zu globalen Variablen.
Zitat von
Hubble:
das wars? Nein denn was is wenn ne
Exception ausgelöst wird
Was, wenn in deinem C++-Beispiel eine
Exception ausgelöst wird?
Zitat von
Hubble:
Damit hätten wir 7 unübersichtliche Zeilen in Delphi und 1 Zeile in C++.
Und falls die
Exception weiter geworfen werden muß, dann kommen noch ein paar Zeilen dazu.
In Delphi muß man einfach in jeder Routine Exceptions fangen, falls auch nur ein
Objekt benutzt wird, und diese
Exception weiterschmeißen.
Exceptions werden auch in Delphi bis zur nächstinnersten
Exception-Behandlung weitergereicht.
Zitat von
Hubble:
Also: Man drückt auf Button 1 und bevor dieser fertig ist auf Button 2. Grande Problema in
VCL.
Natürlich gibt es da einen Workaround, ist aber sehr umständlich und man muß fast alles umstellen.
Ja, ziemlich eklig, ist aber in C++ prinzipiell nicht anders, wenn du eine Bibliothek zum Anzeigen von grafischen Controls benutzt, die nicht multi-threaded ist. Oder du spaltest dir gleich beim Drücken von Button1 ein ganz sauber einen Thread ab und lässt den werkeln, dann sollte auch Button2 reagieren, und wenn du dort selbiges machst, laufen am Ende zwei Threads. Dabei sind selbstveränstlich die üblichen Vorkehrungen gegen Race Conditions und anderweitige Synchronisierungprobleme zu treffen.
Zitat von
Hubble:
Habt Ihr schon mal mit Komponenten in Delphi geschafft. Is echt supi. Alles schnell und schön.
Aber wehe es gibt ein Update und die Entwickler müssen mit verschiedenen Versionen arbeiten.
Ist schlicht nicht möglich.
Inwiefern? Wenn sich die ABI ändert, bist du unter C++ genauso verloren, wenn deine Bibliothek lediglich als binary-only vorliegt.
Zitat von
Hubble:
Des weiteren folgen noch so undurchsichtige Sachen wie end mit Punkt mit Stichpunkt oder ohne was.
Ohne was?!? Mit Punkt gibt's nur einmal am Ende einer
Unit, "end." beendet eine logische Pascal-Einheit. Mit Semikolon ist end das Gegenstück zu begin, "begin .. end;" ist als "{ .. }" zu sehen, wahlweise auch Brace mit Semikolon dahinter ("{ .. };")
[quote="Hubble"]Oder die Sache mit den Pointern.
Jeder der auch nur einmal in Delphi mit Pointern umgehen mußte und den Vergleich
zu C/C++ kennt verflucht dieses im Nachhinein in Pascal eingeführete Notkonstrukt.[quote]Wenn du auf die implizite Dereferenzierung hinaus willst: ACK!
Zitat von
Hubble:
ein Case Statement ohne break.
Ich hätte nie gedacht, daß ich ein Case-Statement ohne break mal brauchen würde, aber kürzlich hat es einen C-Code tatsächlich kürzer gemacht, die breaks in den Zweigen wegzulassen.