Delphi-PRAXiS
Seite 1 von 3  1 23      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi problem mit dynamischem array (https://www.delphipraxis.net/140250-problem-mit-dynamischem-array.html)

gangs-taas 14. Sep 2009 15:47


problem mit dynamischem array
 
hey,
ich habe ein dynamisches array aber ich bekomme wenn ich darauf zugreifen will immer eine fehlermeldung "---------------------------
Benachrichtigung über Debugger-Exception
---------------------------
Im Projekt P_Ce.exe ist eine Exception der Klasse EAccessViolation mit der Meldung 'Zugriffsverletzung bei Adresse 0045B672 in Modul 'P_Ce.exe'. Schreiben von Adresse 00000000' aufgetreten." ich verstehe einfach nicht wieso..
wenn ich nen dynamisches array habe muss ich doch nicht sagen wie groß es sein soll oder ?!

wenn ich das hier so mache :

Delphi-Quellcode:
procedure Tastatur_optimieren;
  var
    Haeufigkeit : Array of integer ;
    i : integer ;
    Index : IntegeR ;
    Haeufigkeitsarray : Array of integer ;
  begin
    index := 0;
    For i := 0 to High(Haeufigkeit)-1 do    
    begin
      If (Haeufigkeit[i] > Haeufigkeit[i-1]) Then
        begin
          inc(index);
          Haeufigkeitsarray[index] := Haeufigkeitsarray[index] + Haeufigkeit[i] ; // HIER FEHLER
        end
        else If (Haeufigkeit[i] <= Haeufigkeit[i-1]) Then
        begin
          Haeufigkeitsarray[index] := Haeufigkeitsarray[index] + Haeufigkeit[i] ; // HIER FEHLEr
        end;
wieso bekomme ich dann an den gekennzeichneten stellen ne fehlermedlung ?

(also was es machen soll ist wenn meine 2te zahl (haeufigkeit) größer ist als ihrere vorherige zahl dann soll er eine neue "Zeile" im Array nehmen und sie dort hinein sortieren )

ich hab doch einfach ein dynamisches array und will darauf zugreifen oder ?!

danke schonmal :D

mkinzler 14. Sep 2009 15:50

Re: problem mit dynamischem array
 
Wie groß ist Haeufigkeitsarray?

Deep-Sea 14. Sep 2009 15:50

Re: problem mit dynamischem array
 
Da hast du wohl was falsch verstanden: Gerade bei dynamischen Arrays musst du die Größe mittels SetLength zuweisen :wink:

gangs-taas 14. Sep 2009 15:51

Re: problem mit dynamischem array
 
und was mach ich wenn ich nicht weiß wie groß die größe ist ?

Teekeks 14. Sep 2009 15:52

Re: problem mit dynamischem array
 
Du musst ein Dynamisches Array mit SetLength(aarray,größe); initialisieren.
Wenn du ein neues Element hinzufügen möchtest: Setlength(aarray,Length(aaray)+1);

Mist, Roter Kasten, aber egal...

Deep-Sea 14. Sep 2009 15:53

Re: problem mit dynamischem array
 
Zitat:

Zitat von gangs-taas
und was mach ich wenn ich nicht weiß wie groß die größe ist ?

Wenn du es nicht weißt, wer dann? Irgendwie musst du das Array doch mit Daten füllen?! :-D

gangs-taas 14. Sep 2009 15:54

Re: problem mit dynamischem array
 
okay
danke :)

ich hatte das wohl echt falsch verstanden :)

himitsu 14. Sep 2009 15:55

Re: problem mit dynamischem array
 
prüfe einfach mal die Indize in dem gesamten Code

Haeufigkeit[i-1] ... rate mal, auf welchen Index man zugreift, wenn i = 0 ist

Haeufigkeitsarray[index] .... wurde schon gesagt ... ist das Array groß genug?

gangs-taas 14. Sep 2009 16:05

Re: problem mit dynamischem array
 
Zitat:

Zitat von himitsu
prüfe einfach mal die Indize in dem gesamten Code

Haeufigkeit[i-1] ... rate mal, auf welchen Index man zugreift, wenn i = 0 ist

Haeufigkeitsarray[index] .... wurde schon gesagt ... ist das Array groß genug?

ersteres geht :D
zählt er auch als '0'

letzteres war ja das problem ich dachte man müsste dynamische arrays nicht mit setlength definieren ...

himitsu 14. Sep 2009 16:14

Re: problem mit dynamischem array
 
wieso denkt man sowas nicht? SetLength ist doch genau dafür da.

Und nur weil es zufällig geht
- schlalte mal in den Projektoptionen die Bereichsprüfung an, dann würden dir übrigens alle die hier genannten Index-Fehler angezeigt :angel2:

Und 0-1 ist -1 und -1 gibt es in einem dynamischen Array nicht ... vielleicht meinst du aber i+1, wegen dem High-1 :zwinker:



Also für das nächste Mal:
> Bereichsprüfung beim Debuggen aktivieren
> wärend des Debuggens die Indize und Arraygrößen vergleichen


Alle Zeitangaben in WEZ +1. Es ist jetzt 17:19 Uhr.
Seite 1 von 3  1 23      

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