05.11.2013 Aufrufe

Vergleich von Delphi und Visual C++ - Inhalt

Vergleich von Delphi und Visual C++ - Inhalt

Vergleich von Delphi und Visual C++ - Inhalt

MEHR ANZEIGEN
WENIGER ANZEIGEN

Erfolgreiche ePaper selbst erstellen

Machen Sie aus Ihren PDF Publikationen ein blätterbares Flipbook mit unserer einzigartigen Google optimierten e-Paper Software.

<strong>Vergleich</strong> <strong>von</strong> <strong>Delphi</strong> <strong>und</strong> <strong>Visual</strong> <strong>C++</strong> - Kapitel 2B<br />

#include <br />

int x[8], y[8];<br />

x[0] = 8;<br />

x[1] = 14;<br />

x[2] = 3;<br />

y = x; // Fehler<br />

memcpy(y, x, sizeof(x));<br />

var x, y: Array[1..8] of Integer;<br />

x[1]:= 8;<br />

x[2]:= 14;<br />

x[3]:= 3;<br />

y:= x;<br />

Ein Problem stellen Überschreitungen der Indexgrenzen in <strong>C++</strong> dar. In einem 4 Elemente umfassenden Array wird ein Zugriff auf ein fünftes, nicht<br />

gültiges Element, in der Art<br />

z[4]:= 10;<br />

anstandslos <strong>und</strong> ohne Warnhinweise <strong>von</strong> <strong>C++</strong> übersetzt, obwohl ein Zugriff auf einen Speicherbereich außerhalb des Arrays erfolgt! Das ist ein<br />

Programmierfehler, der einem Programmierer leicht unterläuft, der aber schwerwiegende Folgen nach sich ziehen kann, die im ungünstigsten Fall<br />

zunächst nicht einmal bemerkt werden. Die Fehlersuche gestaltet sich entsprechend schwierig. Object Pascal unterbindet die Überschreitung <strong>von</strong><br />

Array-Grenzen zur Übersetzungs- <strong>und</strong> zur Laufzeit. Letzteres jedoch nur dann, wenn das Programm mit gesetzter Projektoption "Bereichsüberprüfung"<br />

compiliert wurde. Wird zur Laufzeit die Array-Grenze überschritten, so wird wiederum eine Exception der Art ERangeError ausgelöst.<br />

Am 2. April 1981 äußerte Brian W. Kernighan, einer der Entwickler <strong>von</strong> C, seine Meinung über Standard-Pascal in einem Aufsatz mit dem Titel<br />

"Warum Pascal nicht meine bevorzugte Programmiersprache ist" [12]. Der gravierendste sprachliche Mangel <strong>von</strong> Pascal ist seiner Meinung nach die<br />

Tatsache, daß Funktionen <strong>und</strong> Prozeduren als Parameter nur Arrays mit fester Größe akzeptieren. Durch diese Einschränkung ist es in Standard-Pascal<br />

nicht möglich Funktionen zu schreiben, die verschieden große Arrays als Parameter akzeptieren. Object Pascal erweitert Standard-Pascal deshalb an<br />

dieser Stelle <strong>und</strong> führt "Offene Array-Parameter" ein (Open Array). <strong>C++</strong> kennt derartige Typen unter dem Begriff der "Incomplete Types".<br />

V<strong>C++</strong><br />

Object Pascal<br />

http://ourworld.compuserve.com/homepages/praxisservice/kapit2b.htm (6 of 52) [19.05.2000 15:30:08]

Hurra! Ihre Datei wurde hochgeladen und ist bereit für die Veröffentlichung.

Erfolgreich gespeichert!

Leider ist etwas schief gelaufen!