Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   Delphi Delphi XE - Array Problem (https://www.delphipraxis.net/159016-delphi-xe-array-problem.html)

-187- 10. Mär 2011 21:14

Delphi XE - Array Problem
 
Moin, ich habe eben begonnen ein bisschen mit Delphi XE rumzuspielen und wollte mir einen kleinen Kalendar basteln. Und schon gibt es Probleme :D

Warum wirft folgender Code keine Exception: (PS: Bei Delphi 7 krieg ich wie gehabt die Fehlermeldung "Ungültige Zeigerposition")

Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
var
  Monate: array of String;
  i: Integer;
begin
  setLength(Monate,11);
  Monate[0]:='Januar';
  Monate[1]:='Februar';
  Monate[2]:='März';
  Monate[3]:='April';
  Monate[4]:='Mai';
  Monate[5]:='Juni';
  Monate[6]:='Juli';
  Monate[7]:='August';
  Monate[8]:='September';
  Monate[9]:='Oktober';
  Monate[10]:='November';
  Monate[11]:='Dezember';
  for i:=Low(Monate) to High(Monate) do
    ComboBox1.Items.Add(Monate[i]);
end;

mkinzler 10. Mär 2011 21:15

AW: Delphi XE - Array Problem
 
Ist den die Bereichsüberprüfung aktiviert?

-187- 10. Mär 2011 21:17

AW: Delphi XE - Array Problem
 
Hmm muss man die Extra aktivieren ? Melde mich gleich zurück :D

Edit:

Hmm so klappt es jetzt:

Delphi-Quellcode:
implementation

{$R *.dfm}

{$R+}

...
Ich musste aber noch nie {$R+} manuell hinzufügen. Komisch !


Edit2: Hmm hab grad festgestellt das die Bereichsüberpüfung Stadardmäßig false ist. Mal sehen ob ich die Global auf true setzen kann. (Keine Lust das bei jedem Projekt einzustellen)

Satty67 10. Mär 2011 21:25

AW: Delphi XE - Array Problem
 
Projektoptionen -> Compiler -> Checkbox setzen?

s.h.a.r.k 10. Mär 2011 21:27

AW: Delphi XE - Array Problem
 
Schau mal in den Projektoptionen links unten. Da findest eine Checkbox, sodass das nicht jedes mal vornehmen musst.

-187- 10. Mär 2011 21:28

AW: Delphi XE - Array Problem
 
Ja, habs auf anhieb nich gefunden. Ok jetzt ist es gesetzt...


War das bei euch auch so? Ich hab das frisch installiert, ist das default nicht auf True gesetzt ?

s.h.a.r.k 10. Mär 2011 21:34

AW: Delphi XE - Array Problem
 
Bei mir -- aktuell Delphi XE -- ists auch auf False.

-187- 10. Mär 2011 21:54

AW: Delphi XE - Array Problem
 
Hmm du hast wohl auch keinen Grund das auf True zu setzen 8-)

Zum Debuggen ist es für mich eigentlich zwingend notwendig. :!:

s.h.a.r.k 10. Mär 2011 22:07

AW: Delphi XE - Array Problem
 
Ich arbeite selten mit dynamischen Arrays und bin mir bei sowas meist recht sicher, ergo habe ich es bisher nie wirklich vermisst :stupid:

-187- 10. Mär 2011 22:14

AW: Delphi XE - Array Problem
 
Zitat:

Zitat von s.h.a.r.k (Beitrag 1087540)
Ich arbeite selten mit dynamischen Arrays und bin mir bei sowas meist recht sicher, ergo habe ich es bisher nie wirklich vermisst :stupid:

Sicher bin ich mir beim ersten Entwurf auch immmer :D

s.h.a.r.k 10. Mär 2011 22:16

AW: Delphi XE - Array Problem
 
Delphi-Quellcode:
setLength(Monate,11);
<<< Wie viele Monate gibts aber deiner Meinung dann?! :mrgreen:

-187- 10. Mär 2011 22:25

AW: Delphi XE - Array Problem
 
Naja so bin ich nich auf das Problem gestoßen. Den Code hab ich auch nur als Beispiel benutzt :)

Ich wollte ursprünglich wissen was ich für eine Exception kriege wenn die Länge des Arrays < des Array Item Count ist.

s.h.a.r.k 10. Mär 2011 22:28

AW: Delphi XE - Array Problem
 
Hast dich nochmal geschickt raus geredet :mrgreen: :stupid:

-187- 10. Mär 2011 22:38

AW: Delphi XE - Array Problem
 
Ich geb's auf :)


Alle weiteren Comments sind überflüssig ! :-D

himitsu 11. Mär 2011 02:44

AW: Delphi XE - Array Problem
 
Zitat:

Zitat von s.h.a.r.k (Beitrag 1087527)
Bei mir -- aktuell Delphi XE -- ists auch auf False.

So ist es schon immer.

Ist Aufgrund der Optiomierung aus, da viele vergessen mal in die Projektoptionen zu schauen.
Seit es mehere Profile gibt, hätte man dieses aktivieren können, aber Emba hört ja nicht auf mich und mein QC-Eintrag diesbezüglich ging unter.

-187- 11. Mär 2011 05:31

AW: Delphi XE - Array Problem
 
Hmm du hast Recht, bei Delphi 7 ist es auch deaktiviert jedoch krieg ich da die Exception. Das widerspricht sich irgendwie :)

himitsu 11. Mär 2011 06:56

AW: Delphi XE - Array Problem
 
Man kann dieses zusätzlich auch nochmal über einen Compiler-Schalter innerhalb jeder Unit (nur für den nachfolgenden Code dieser Unit) umschalten.
Also könntestes/müßtest du auch nochmal in dieser Unit nachsehn.

"Ungültige Zeigeroperation" klingt allerdings nicht nach Index-Fehler, bzw. "Fehler bei Bereichsprüfung.".


Dein Fehler ist eher eine "Zugriffsverletzung", weil du "glücklicher Weise" auf einen ungültigen/nichtexistierenden/gesperrten Speicherbereich zugreifst.

-187- 11. Mär 2011 09:06

AW: Delphi XE - Array Problem
 
Zitat:

Zitat von himitsu (Beitrag 1087576)
Dein Fehler ist eher eine "Zugriffsverletzung", weil du "glücklicher Weise" auf einen ungültigen/nichtexistierenden/gesperrten Speicherbereich zugreifst.

Mag sein, aber dann müsste die Zugriffsverletzung bei Delphi XE auch kommen. Unabhängig von der Bereichsprüfung :/

BUG 11. Mär 2011 09:52

AW: Delphi XE - Array Problem
 
Zitat:

Zitat von -187- (Beitrag 1087614)
Mag sein, aber dann müsste die Zugriffsverletzung bei Delphi XE auch kommen. Unabhängig von der Bereichsprüfung :/

Wenn du da auf einen Speicherbereich zugreifst, der "unglücklicherweise" nicht ungültig/nichtexistierend/gesperrt ist, gibt es keine Zugriffsverletzung.
Und es kann doch gut sein, das Delphi 7 und Delphi XE das dynamische Array unterschiedlich behandelt oder einen anderen Speichermanager benutzen...

himitsu 11. Mär 2011 10:21

AW: Delphi XE - Array Problem
 
In XE und in Delphi 7 gibt es auch noch zwei grundsätzlich unterschiedliche Speichermanager.
(irgendwann wurde ja mal FastMM integriert)

Ansonsten ist es eben Glück.
Wenn man außerhalb der Arraygrenzen zugreift kann sonstwas passieren und was passiert, das liegt daran, was "zufällig" an dieser Speicherstelle rumliegt (oder nicht).


Alle Zeitangaben in WEZ +1. Es ist jetzt 00:23 Uhr.

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