Einzelnen Beitrag anzeigen

Delphi-Laie

Registriert seit: 25. Nov 2005
1.427 Beiträge
 
Delphi 10.1 Berlin Starter
 
#1087

AW: Was nervt euch so, während der Programmierung oder so allgemein

  Alt 13. Jul 2012, 16:26
Na, da habe ich wohl wieder etwas losgetreten. Also das gute vorweg: Ich nahm mich der Sache noch einmal an, und jetzt funktioniert es. Es ist die Langzahlenarithmetik aus dem "Arbeitsbuch für Turbo Pascal 4.0" aus dem ehrenhaften Jahre 1988. Delphi mit seiner beeindruckenden Abwärtskompatibilität hat an "nur-Turbo-Pascal-tauglichen" Quelltexten als solchen natürlich überhaupt nichts auszusetzen. Ein Fehler war m.E. schon im Buch, bei einem anderen bezweifele ich, daß er auch in Turbo-Pascal schon auftrat. Wenn ein Variablenparameter in einer Prozedur einen anderen Wert hat (auch unmittelbar vor ihrem Verlassen) als danach, dann sieht man ganz schon alt aus, weil sich diese Wertänderung beim Debuggen nicht nachverfolgen läßt. Der andere Wert ist aus heiterem Himmel eben plötzlich da. Da ich so etwas vorher noch nie hatte, blieb mir nichts anderes übrig, als "die bösen Zeiger" als Schuldige auszumachen, weil (für mich) kaum nachvollziebar ist, wann nur Zeiger (=Adressen) und wann Speicherinhalte geändert werden. Vielleicht lag in einem dieser Nebeneffekte ja die Ursache.

Generisch hin, (un)typisiert her. Mir geht es einfach nur um eine doppelt verkettete Liste. Allein bei deren Deklaration bekam ich schon zu Turbo-Pascal-Zeiten einen dicken Hals: Wie kann etwas sich selbst vollständig als echte Teilmenge enthalten? Das ist mit mathematischer Logik nicht faßbar, das gibt es n.m.W. nur bei unendlichen Mengen. Inzwischen weiß ich, wie das gemeint ist.
Warum brauchst du denn für eine doppelt verkettete Liste explizite Pointer?
Ich weiß nicht, was ein "expliziter" Pointer ist und ob es auch andere (implizite?) gibt. Es ging und geht um doppelt verkettete Listen, bei denen man sich über Zeiger von Element zu Element - vorwärts oder rückwärts dank der doppelten Verkettung - hangeln kann / muß. Das meiste ist in Routinen enthalten und mithin mehr oder weniger versteckt, gekapselt , so daß ich mich nicht darum kümmern mußte (so z.B. mit new und dispose neue Listenwerte anzulegen bzw. alte zu annullieren. Das ganze wird ständig über den ^ -Operator referenziert, adressiert, wie auch immer, das sind nach meiner Kenntnis Zeiger, also ist das gesamte "Rumgemache" (neu"deutsch": Handling) eben "total verzeigert". Und das führt zu allen möglichen Neben-/Seiteneffekten, die ich weiter oben schon bemängelte. Delphi hat sogar mit seiner Stabilität zu kämpfen (hielt sich aber wacker), und nach dem Schließen der IDE wird man auch noch mal mit irgendeiner Fehlermeldung (access violation?) verabschiedet. Sind wirklich eine ekelhafte Angelegenheit, diese Zeiger. Wenn es funktioniert, flutscht es wie am Schnürchen und ist sehr schnell, aber wehe, es steckt irgendwo ein Fehler (eher schon: er versteckt sich) und man steht vor der Aufgabe, diesen aufzuspüren.

Geändert von Delphi-Laie (13. Jul 2012 um 16:31 Uhr)