AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Object-Pascal / Delphi-Language Delphi Schutzverletzung bei offenen String-Arrays als Parameter
Thema durchsuchen
Ansicht
Themen-Optionen

Schutzverletzung bei offenen String-Arrays als Parameter

Ein Thema von Gremlin · begonnen am 6. Jun 2007 · letzter Beitrag vom 6. Jun 2007
Antwort Antwort
Gremlin

Registriert seit: 18. Apr 2006
Ort: Im Süden
177 Beiträge
 
Delphi 7 Enterprise
 
#1

Schutzverletzung bei offenen String-Arrays als Parameter

  Alt 6. Jun 2007, 18:01
Kann mir bitte jemand sagen, warum D5 bei diesem Code denkt das es wichtig wäre eine Exception zu werfen?

Delphi-Quellcode:

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;
Wird das offene Array als Konstante übergeben, tritt keine Exception auf.
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;
Miniaturansicht angehängter Grafiken
schutzverletzung_562.png  
Gruss Gremlin
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.861 Beiträge
 
Delphi 11 Alexandria
 
#2

Re: Schutzverletzung bei offenen String-Arrays als Parameter

  Alt 6. Jun 2007, 20:03
Du mußt auch etwas übergeben
Markus Kinzler
  Mit Zitat antworten Zitat
Benutzerbild von Zacherl
Zacherl

Registriert seit: 3. Sep 2004
4.629 Beiträge
 
Delphi 10.2 Tokyo Starter
 
#3

Re: Schutzverletzung bei offenen String-Arrays als Parameter

  Alt 6. Jun 2007, 20:35
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.
Projekte:
- GitHub (Profil, zyantific)
- zYan Disassembler Engine ( Zydis Online, Zydis GitHub)
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.861 Beiträge
 
Delphi 11 Alexandria
 
#4

Re: Schutzverletzung bei offenen String-Arrays als Parameter

  Alt 6. Jun 2007, 20:52
Zitat:
Normalerweise darf man nämlich durchaus leere Array übergeben.
Dann darf man aber nicht auf ihn Zugreifen, was er vermutlich macht.
Markus Kinzler
  Mit Zitat antworten Zitat
Benutzerbild von Zacherl
Zacherl

Registriert seit: 3. Sep 2004
4.629 Beiträge
 
Delphi 10.2 Tokyo Starter
 
#5

Re: Schutzverletzung bei offenen String-Arrays als Parameter

  Alt 6. Jun 2007, 21:03
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.
Projekte:
- GitHub (Profil, zyantific)
- zYan Disassembler Engine ( Zydis Online, Zydis GitHub)
  Mit Zitat antworten Zitat
Gremlin

Registriert seit: 18. Apr 2006
Ort: Im Süden
177 Beiträge
 
Delphi 7 Enterprise
 
#6

Re: Schutzverletzung bei offenen String-Arrays als Parameter

  Alt 6. Jun 2007, 21:13
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
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;
Gruss Gremlin
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.861 Beiträge
 
Delphi 11 Alexandria
 
#7

Re: Schutzverletzung bei offenen String-Arrays als Parameter

  Alt 6. Jun 2007, 21:14
Überprüfe doch einfach vor der Schleife, ob der Array leer ist
Markus Kinzler
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 08:24 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