![]() |
Array of String - Zugriffsverletzung
Hallo Gemeinde :)
Ich habe ein Problem mit einem Dynamischen Array. Ich denke ich habe irgendwo ein Denkfehler drinne. Ich finde ihn einfach nicht. Ich mach es eigentlich wie immer. Und es geht einfach nicht :/ Ich hoffe jemand findet was:
Delphi-Quellcode:
Gruß, Real-TTX
type
ArrOfStr = array of string; .... function ReadComPorts : ArrOfStr; var reg: TRegistry; st: Tstrings; i: Integer; begin reg := TRegistry.Create; try reg.RootKey := HKEY_LOCAL_MACHINE; reg.OpenKey('hardware\devicemap\serialcomm', False); st := TstringList.Create; try reg.GetValueNames(st); //setlength(result,0); for i := 0 to st.Count do // st.Count = 2 Laut Überwachung begin setlength(result,i); result[i] := reg.Readstring(st.strings[i]); end; finally st.Free; end; reg.CloseKey; finally reg.Free; end; end; |
Re: Array of String - Zugriffsverletzung
Das letzte Array-Element hat den Index Length-1, sodass dein Index in der Schleife zu hoch ist. Selbiges für die Stringliste, die Schleife muss von 0 bis Count-1 laufen.
Das SetLength solltest du außerdem vor die Schleife verlagern, da dies sehr viel Zeit spart. |
Re: Array of String - Zugriffsverletzung
Hi,
ein paar augenfällige Korrekturen:
Delphi-Quellcode:
Grüße vom marabu
uses
Types; .... function ReadComPorts : TStringDynArray; var reg: TRegistry; st: Tstrings; i: Integer; begin reg := TRegistry.Create; try reg.RootKey := HKEY_LOCAL_MACHINE; reg.OpenKey('hardware\devicemap\serialcomm', False); st := TStringList.Create; try reg.GetValueNames(st); setlength(result, st.Count); for i := 0 to Pred(st.Count) do result[i] := reg.Readstring(st[i]); finally st.Free; end; reg.CloseKey; finally reg.Free; end; end; |
Re: Array of String - Zugriffsverletzung
Ich merk schon, ohne euch bin ich aufgeschmissen :)
Danke euch! Gruß, Real-TTX |
Alle Zeitangaben in WEZ +1. Es ist jetzt 04:52 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