![]() |
Schutzverletzung bei offenen String-Arrays als Parameter
Liste der Anhänge anzeigen (Anzahl: 1)
Kann mir bitte jemand sagen, warum D5 bei diesem Code denkt das es wichtig wäre eine Exception zu werfen? :?:
Delphi-Quellcode:
Wird das offene Array als Konstante übergeben, tritt keine Exception auf. :gruebel: function TForm1.Foooo(const TableName:string; Additonals:array of string):TStringList; begin Result := TStringList.Create; [...] end; [...] var Liste : TStringList; begin Liste := Foooo('Tabelle', []); try Memo1.Lines.Assign(Liste); finally Liste.Free; end; end; Es ist nicht wirklich wichtig, ich kann ja eine Konstante verwenden, aber prinzipiell sollte es bei diesem Code-Fragment eigentlich keine wirklichen Probleme geben.
Delphi-Quellcode:
function TForm1.Foooo(const TableName:string; const Additonals:array of string):TStringList; |
Re: Schutzverletzung bei offenen String-Arrays als Parameter
Du mußt auch etwas übergeben
|
Re: Schutzverletzung bei offenen String-Arrays als Parameter
Aus dem geposteten Code geht das leider nicht eindeutig hervor. Poste doch mal bitte die gesamte Funktion "Fooo". Normalerweise darf man nämlich durchaus leere Array übergeben.
|
Re: Schutzverletzung bei offenen String-Arrays als Parameter
Zitat:
|
Re: Schutzverletzung bei offenen String-Arrays als Parameter
Jap, daher soll er ja mal den kompletten Code liefern .. grundsätzlich sollte man aber prüfen, ob low(Array) >= 0 ist, bevor man mit einer Array-Schleife beginnt.
|
Re: Schutzverletzung bei offenen String-Arrays als Parameter
Natürlich muss man auf das Array zugreifen können, dabei dürfte es aber keine Rolle spielen, ob das const - Argument angegeben ist oder nicht (ReadOnly-Zugriff).
Der Code weiter unten ist gekürzt und führt reproduzierbar zu einer Exception in D5 Pro UP2. Ich habs gerade mit D2007 getestet und dort kommt der Fehler nicht mehr. Nunja, wenn es denn so sein soll, nehmen wir eben zusätzlich das const - Argument. Delphi muss es ja wissen :-D Trotzdem danke für die Unterstützung.
Delphi-Quellcode:
function TForm1.Foooo(const TableName:string; Additonals:array of string):TStringList;
var i : integer; begin Result := TStringList.Create; Result.Add('Foo1'); Result.Add('Foo2'); for i := Low(Additonals) to High(Additonals) do Result.Add(Additonals[i]); end; |
Re: Schutzverletzung bei offenen String-Arrays als Parameter
Überprüfe doch einfach vor der Schleife, ob der Array leer ist
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 10:21 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 by Thomas Breitkreuz