Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   GUI-Design mit VCL / FireMonkey / Common Controls (https://www.delphipraxis.net/18-gui-design-mit-vcl-firemonkey-common-controls/)
-   -   Delphi Stack-Überlauf bei IndexOf (https://www.delphipraxis.net/42352-stack-ueberlauf-bei-indexof.html)

Timelesk 17. Mär 2005 15:31


Stack-Überlauf bei IndexOf
 
Moin,

ich habe folgendes Phänomen beobachtet:
Wenn ich ca. 20-50 Vokabeln abfragen lasse, funktioniert alles Fehlerfrei!

Aber so ab 50 Vokabeln aufwärts haut er mir einen Stack-Überlauf rein ODER die Fehlermeldung "Exception in der Klasse EAccessViolation aufgetreten. Zugriffsverletzung..."

Der Code, wo dieser Fehler auftritt:
Delphi-Quellcode:
    for i:=0 to abfrage.vokabeln.Items.Count-1 do begin
      abzufragende_voks[i] := main.voks.Items.IndexOf(abfrage.vokabeln.Items[i]);
    end;
Es liegt 100%ig an diesen Zeilen! Hab es mit Showmessage lokalisiert!

Wie kann ich das Problem beheben?
Wisst ihr weiter?

Vielen Dank

bttb930 17. Mär 2005 15:40

Re: Stack-Überlauf bei IndexOf
 
also, bei diesem programmausschnitt kann dir sicher niemand helfen.

vielleicht das array abzufragende_voks vergrößern?

dizzy 17. Mär 2005 15:43

Re: Stack-Überlauf bei IndexOf
 
Zitat:

Zitat von Timelesk
Aber so ab 50 Vokabeln aufwärts haut er mir einen Stack-Überlauf rein

Ist das Array lokal deklariert? Dann liegt es nämlich idR auf dem Stack (wenns statisch ist imho). Als Klassenmember sollte das klappen.

Zitat:

Zitat von Timelesk
ODER die Fehlermeldung "Exception in der Klasse EAccessViolation aufgetreten. Zugriffsverletzung..."

Das deutet auf ein zu kleines Array hin.


Dein Code ist aber tatsächlich arg knapp gehalten ;)


Gruss,
Fabian

maximov 17. Mär 2005 15:45

Re: Stack-Überlauf bei IndexOf
 
Moin,

Zitat:

Es liegt 100%ig an diesen Zeilen! Hab es mit Showmessage lokalisiert!
Warum nicht mit breakPoints, oder normales debugging, dann sollte man auch sehen, warum er evtl. im kreis läuft.

Und zeig mal bitte die deklarationen, denn so sieht der code recht unverdächtig aus...aber wer weiss?

Stevie 17. Mär 2005 15:46

Re: Stack-Überlauf bei IndexOf
 
100%ig ein zu kleines Array!
Zitat:

Zitat von Timelesk
Es liegt 100%ig an diesen Zeilen! Hab es mit Showmessage lokalisiert!

[OT]Nebenbei empfehle ich dir die Lektüre des Debugging-Tutorials... ;-) Das macht die Fehlersuche etwas leichter![/OT]

Timelesk 17. Mär 2005 18:27

Re: Stack-Überlauf bei IndexOf
 
Hallo,

wie ihr alle über meinen Beitrag hergefallen seit... *g*
Echt cool :)
---------------------
Ihr hattet recht: Es lag an einem zu kleinen Array: SetLength(Array,41);

Ansonsten: Per F9 startet er und bei nem Fehler springt er ja normalerweise an die Fehlerstelle: Das war in diesem Falle leider nicht so! Er hat mir die Zugriffsverletzung ausgegeben und dann nen Fenster mit irgendwas über die CPU oder Ressourcen?

Naja, wegen Debugging werd ich mich mal schlau machen :)

Vielen Dank für die schnelle Hilfe...

RavenIV 18. Mär 2005 07:29

Re: Stack-Überlauf bei IndexOf
 
also,

ich bin auch der meinung, dass das debugging mit ShowMessage der schlechteste weg ist.
man muss erst die messages einbauen, weiss dann nicht mehr wo welche message erscheinen soll, muss ständig die lästigen fenster wegklicken und am schluss muss man die messages wieder aus dem code löschen.

mit breakpoints und stepping ist man viel flexibler und kann viel schneller fehler finden.
ausserdem hat man ständig den code vor augen und es fallen noch andere schwachstellen auf.

gruessle


Alle Zeitangaben in WEZ +1. Es ist jetzt 02:29 Uhr.

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