![]() |
TValueListEditor Zugriffsverletzung wenn keine Zeile da
Hallo,
da ich erst seit kurzem D7 habe komme ich erst jetzt dazu den TValueListEditor zu verwenden. Leider komme ich damit nicht klar. Wenn ich die OH richtig verstanden habe, kann ich über die Strings property neue Zeilen hinzufügen, wenn der String wie folgt aufgebaut ist
Code:
Mit folgender Methode möchte ich Zeilen zum TValueListEditor hinzufügen
Key=Value
Delphi-Quellcode:
Hier die Methodensource
Item.GetValues(ValueListEditor1.Strings);
Delphi-Quellcode:
Hier meine Testschritte
procedure TArrayItems.GetValues(L: TStrings);
var iCnt : Integer; begin L.Clear; For iCnt:=0 to Count-1 do L.Add(ArrayItems[iCnt].Name+'='+ArrayItems[iCnt].AsString); end; 1. Wenn der TValueListEditor keine Zeile enthält kommt es zu einer Schutzverletzung. 2. Wenn ich im OI eine Zeile hinzufüge kommt eine Schutzverletzung 3. Wenn ich im OI eine Zeile hinzufüge und in der Methode L.Clear auskommentiere kommt keine Schutzverletzung. Jetzt bin zu dem Schluss gekommen, dass der TValueListEditor min eine Zeile enthalten muss. Das kann doch nicht sein ? Frage: Wie füge ich zur Laufzeit Zeilen hinzu ? Folgender Source ist aus den VCL-Sourcen. Wenn ich die Zeilen hinter denen der Kommentar hinzugefügt steht einfüge, verhält sich der TValueListEditor wie erwartet.
Delphi-Quellcode:
Sehr sonderbar ?!?
function TValueListStrings.FindItemProp(const KeyOrIndex: Variant;
Create: Boolean = False): TItemProp; var Index: Integer; begin Try // hinzugefügt if Count > 0 then begin if VarIsOrdinal(KeyOrIndex) then Index := KeyOrIndex else begin Index := IndexOfName(KeyOrIndex); if Create and (Index = -1) then raise Exception.CreateResFmt(@SKeyNotFound, [KeyOrIndex]); end; Result := FItemProps[Index]; if Create and not Assigned(Result) then begin Result := TItemProp.Create(FEditor); FItemProps[Index] := Result; end; end else Result := nil; Except // hinzugefügt Result:=Nil; // hinzugefügt end; // hinzugefügt end |
Re: TValueListEditor Zugriffsverletzung wenn keine Zeile da
Machs zur Not mit .InsertRow(), damit gings bei mir einwandfrei.
mfG mirage228 |
Alle Zeitangaben in WEZ +1. Es ist jetzt 02:48 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