![]() |
Stack Overflow
Hallo,
ich bekomme bei folgender Funktion einen StackOverflow:
Delphi-Quellcode:
nach dem StackOverflow steht der Cursor auf dem "begin", aber warum?
function kunde_nach_nummer(kunden : tKunden;max_index : integer; pkundennummer : string): integer;
var i : integer; begin i := 0; repeat inc(i); until ((kunden[i].kundennummer = pkundennummer) or (i >= max_index)); if kunden[i].kundennummer = pkundennummer then result := i else result := 0; end; der Aufruf der Funktion sieht folgendermaßen aus:
Delphi-Quellcode:
was vielleicht auch noch wissenswert wäre:
index := kunde_nach_nummer(kunden,max_index,kundennummer);
Delphi-Quellcode:
Wäre nett wenn mir jemand sagen könnte warum diese Fehlermeldung kommt und warum der Cursor gerade bei dem "begin" stehen bleibt.
type tKunde = record
kundennummer : string[50]; anrede : string[50]; name1 : string[50]; name2 : string[50]; strasse : string[50]; plz : string[50]; ort : string[50]; wochentag : string[2]; end; tKunden = array[1..10000] of tKunde; Danke schonmal im Vorraus!!! MfG Marc |
Re: Stack Overflow
Ich würde sagen, dein Array ist zu groß und passt nicht auf den Stack. Ich würde dir empfehlen das Array als
![]() Alternativ kannst du glaube auch einfach kunden als const übergeben, dann wird auch nur eine Referenz übergeben.
Delphi-Quellcode:
Aber besser ist es, auf ein dynamisches Array umzusteigen.
function kunde_nach_nummer(const kunden : tKunden;max_index : integer; pkundennummer : string): integer;
P.S: Dein Array ist über 3MB groß und als statisches Array wird es bei jedem Funktionsaufruf auf den Stack kopiert. |
Re: Stack Overflow
Vielen Dank für deine Hilfe ich hab mich für die Lösung mit "const" entschieden :-D
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 15:13 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