Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Schrott im Array (https://www.delphipraxis.net/168587-schrott-im-array.html)

yss14 29. Mai 2012 20:48

Schrott im Array
 
Guten Abend :)
Ich hab ein Array, welches Werte von anderen Arrays Werte bekommt. Welche hängt allerdings vom Ablauf des Programms ab. Das Array selber haben ich vorher mit 0en gefühlt. Nun kommt es aber manchmal vor, dass an Stellen im Array Schrott steht, irgendwelche wild zusammengewürfelten Zahlen wie '453435356'. In der Schule hat uns der Lehrer erzählt, dass es manche Programmiersprachen gibt, in denen man vorsichtshalber jedes Array vorher befühlen sollte, da sonst andere Werte vom Arbeitsspeicher drin stehen. Ist das bei Delphi auch so?

Luckie 29. Mai 2012 20:50

AW: Schrott im Array
 
Du initialisierst es doch schon.

yss14 29. Mai 2012 20:52

AW: Schrott im Array
 
Ja, aber während dem Ablauf des Programms bekommt es andere Werte von mind. 10 anderen Arrays, die vielleicht nicht initialisiert sind, d.h. der Schrott wird dann in das Array geschrieben, falls es bei Delphi so ist. Z.b. bei Java kann kein Schrott aus dem Ram im Array stehen.

himitsu 29. Mai 2012 20:54

AW: Schrott im Array
 
Wie ist das Array definiert?
Wie werden die Werte zugewiesen?
Wie wurden die anderen Arrays initialsiert/befüllt?
Wie ........

Es hängt vom Typen ab.
- Strings (außer ShortString), Interfaces, dynamische Arrays (nur der Arrayzeiger selber, aber nicht unbedingt der Inhalt) und Variants werden immer initialsiert,
also alle Typen welche über eine automatische/dynamische Speicherverwaltung verfügen.

Es hängt vom Ort ab.
- globale Variablen werden immer initialisiert
- Objekt-Felder werden immer initialisiert
- lokale Variablen werden NICHT initialisiert (Ausnahmen siehe Typen)
- Inhalte von dynamischen Arrays werden NICHT initialisiert (Ausnahmen siehe Typen)
- Inhalt statischer Arrays (einzelne Felder siehe Typen und Orte)

yss14 29. Mai 2012 20:59

AW: Schrott im Array
 
OK, ich wunder mich halt nur, warum in 90% der Fälle der richtige Werte (eine einstelle Integer-Zahl) und dann plötzlich so nen Müll an der Stelle steht. Es ist ein Integer-Array, die Werte werden aber aus String-Arrays zugewiesen und über StrToInt(''+MeinArray[0][1]) zugewiesen...

Luckie 29. Mai 2012 21:02

AW: Schrott im Array
 
Und warum schreibst du nicht initialisierte Elemente von anderen Arrays in das Array?

yss14 29. Mai 2012 21:05

AW: Schrott im Array
 
Tsja, da hast du recht, da muss ich mich jetzt wohl mal ran machen und den gesamten Quellcode nach den Quellen des Mülls absuchen und die ganzen Arrays rausfischen und initialisieren. Ich wollte mal aus Interesse fragen, nicht das ich mich jetzt hinsetze und alles suche und danach teste und es dann umsonst war :D

himitsu 29. Mai 2012 21:05

AW: Schrott im Array
 
Und schalte mal probehalber die Bereichsprüfung an.
(in den Projektoptionen oder via Compilerschalter)

yss14 29. Mai 2012 21:22

AW: Schrott im Array
 
OK, ich habe jetzt alle Arrays, die ich verwende, initialisiert. Und die Bereichsprüfung angeschaltet. Der "Fehler" tritt immer noch auf, allerdings ist mir aufgefallen, dass es immer der gleiche Code ist: 4428132
Ich werden mir wohl morgen mal alles ausgeben lassen müssen und dann schauen, woher es kommt. Btw gibt es in Delphi 7 die Möglichkeit, sich während der Laufzeit den Inhalt eines Arrays anzuschauen, ohne ihn jedes mal auszugeben. Das würde die Arbeit sehr erleichtern...

omata 29. Mai 2012 21:28

AW: Schrott im Array
 
Zitat:

Zitat von himitsu (Beitrag 1168638)
Und schalte mal probehalber die Bereichsprüfung an.

Die sollte immer an sein, nicht nur probehalber.


Alle Zeitangaben in WEZ +1. Es ist jetzt 21:18 Uhr.
Seite 1 von 2  1 2      

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz