![]() |
Re: Vorteile von Delphi
Zitat:
Delphi-Quellcode:
und
procedure machWas(var a: integer);
begin a:= a+1; end;
Code:
sind nicht viel unterschiedlicher, aber was, wenn man (aus Schusseligkeit, oder warum auch immer) bei C die Dereferenzierung vergisst und folgendes schreibt und somit aus Versehen den Zeiger verändert und nicht den Wert des Integers, auf den a verweist:
void machWas(int* a)
{ (*a)++; }
Code:
Das ist theoretisch möglich und wird sogar kompiliert, nur das, was die Prozedur macht, ist in beiden Fällen komplett anders.[/quote]
void machWas(int* a)
{ a++; } Wieso machst du das nicht so:
Code:
Dürfte doch aufs selbe hinauslaufen? int& ist dann doch auch ein call-by-reference. Oder vertu ich mich da?
void machWas(int& a)
{ a++; } |
Re: Vorteile von Delphi
Zitat:
Zitat:
|
Re: Vorteile von Delphi
Naja, hast im Prinzip recht! :P
|
Re: Vorteile von Delphi
Zitat:
Code:
Wenn ich diese Funktion mit einer Variablen aufrufe, wird die aufrufende Variable direkt verändert, ohne Zeiger.
int machWas(int& a)
{ a++; } Und ich denke die Sache mit = und == hat man spätestens nach dem ersten großen Fehlersuchen drin. |
Re: Vorteile von Delphi
Auch wenn's Offtopic wird: Noch geiler wird's in Java:
Code:
Jeder denkt, im IF würde verglichen ob 'abc' im String drinsteht (was es ja tut) und dann ausgeben 'String ist abc'. Es kommt jedoch immer die Ausgabe 'String ist nicht abc' heraus.
String str="abc";
if (str == "abc") { echo("String ist abc") } else { echo("String ist NICHT abc"); Wenn man sich näher damit befasst ist es auch klar, weil in Java der String ein Objekt ist, und die Variable str im Prinzip ja nur ein Pointer auf die konkrete Instanz ist. Und der Pointer (also str) ist sicher nicht "abc" sondern irgend ein Adresswert. Richtig müsste sein:
Code:
Und das ist einer der Gründe, warum ich Java so elendig hasse: Der Code tut nicht das wonach er intuitiv aussieht. Das ist bei Delphi zum Glück ganz anders.
if (str.equals("abc")) {
//hier passt es } |
Re: Vorteile von Delphi
Zitat:
Delphi-Quellcode:
Genau das gleiche ist es mit C/C++. Deshalb vergleicht man nullterminierte Strings ja nie direkt, sondern in Delphi z.B. mit CompareStr oder in C/C++ mit strcmp/stricmp.
var
a, b: PChar; begin a := 'abc'; b := a; if b = 'abc' then begin // String ist abc end else // String ist nicht abc <== Ausgabe begin end; |
Re: Vorteile von Delphi
Zitat:
Man muss das nicht mal selber machen, die string - Klasse aus der Standardbibliothek bietet so eine Funktionalität. DAS finde ich richtig hässlich an Java: diese ständigen equals - Aufrufe. Wenn es in Java mal Operatorenüberladung gibt werde ich mich in dieser Sprache auch wohler fühlen. |
Re: Vorteile von Delphi
Immer wieder wenn solche Diskusionen auftauchen, kommt es zu einem Fehler. Man sagt so "in C/C++ ...". Ja, grossteils stimmt das, aber C ist NUR eine Untermenge von C++. Es gint dinge die es nur in C++ gibt und nicht im C und zwar "call by reference".
Code:
Das ist pures C++.
void something( int &a )
Und C++ ist "etwas" type sicherer geworden. D.h. man kann nicht alles was man in C schreibt direkt mit einem C++ compiler compilieren lassen, es sei denn es ist innerhalb von "extern "C" {}" direktieve. Z.B.
Code:
In C geht das wunderbar, in c++ aber nicht (nicht ohne typecasting ).
void (WINAPI *glBegin)(void);
glBegin = GetProcAddress( dllHandle, "glBegin"); |
Re: Vorteile von Delphi
Zitat:
a) Sie wissen nicht, ob der jew. Code nun unter C oder C++ läuft, oder b) Sie sind zu Faul sich Gedanken drüber zu machen (wie ich meistens), oder c) Es läuft in beiden Sprachen (nicht) :mrgreen: Meistens ist aber tatsächlich C++ gemeint ;) |
Re: Vorteile von Delphi
Zitat:
Zitat:
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 11:07 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz