![]() |
Re: Listenindex überschreitet das Maximum
Genau das will ich ja erreichen, jedoch weiß ich nicht wie ich analysieren wann das SubItem vorhanden ist und wann nicht. Danke fuer die Tipps bislang.
|
Re: Listenindex überschreitet das Maximum
Zitat:
Delphi-Quellcode:
geht ja auch nicht. er erwartet "("
if assigned(listview1.Selected.SubItems[4]) then
|
Re: Listenindex überschreitet das Maximum
Du willst praktisch, dass keine Fehlermeldung kommt, sondern er lediglich bei einem Fehler etwas anderes tut?
Beachte dann bitte das, solang nicht anders eingestellt, immer ein Fehler angezeigt wird solange du den Delphi-Debugger dranhängen hast (Sorry wenn ich dich falsch verstanden habe) |
Re: Listenindex überschreitet das Maximum
Also nochmal, weiß nich ob ich das hier zu kompliziert beschreibe, dennoch:
Was ich will: 1. Listview-SubItems von einem selektierten Item sollen ausgelesen werden 2. Falls ein SubItem nicht vorhanden ist (= nil oder so) soll er ''-String Nutzen um dennoch etwas zu haben, was er evtl. wieder zurückschreiben kann. Also die Frage: Wie frage ich ab ob ein SubItem da ist oder nicht. (oder nil etc) |
Re: Listenindex überschreitet das Maximum
Moin Arne,
da Du keine Lücken in den Subitems haben kannst sollte die Prüfung auf "Index des abzufragenden SubItems < Count" ausreichen. |
Re: Listenindex überschreitet das Maximum
Das kann man aber nicht in einer IF-Anweisung / Abfrage verschachteln.
Beispielcode? (Klingt ja logisch, habs verstanden, umzusetzen geht es aber nich) |
Re: Listenindex überschreitet das Maximum
Moin Arne,
als Funktion, die Du noch mit in die Methode einbauen kannst (der Übersicht halber):
Delphi-Quellcode:
procedure TForm1.ListView1Click(Sender : TObject);
function IsValidSubitemIndex(const AiIndex : integer) : boolean; begin Result := AiIndex < ListView1.Selected.SubItems.Count; end; begin //... if IsValidSubitemIndex(5) then begin // Hier ist dann sichergestellt, dass ListView1.Selected.SubItems[5] existiert end; //... end; |
Re: Listenindex überschreitet das Maximum
Hallo,
oder du stellst deinen Code noch etwas mehr um:
Delphi-Quellcode:
Getippt und nicht getestet.
function AddString(vle: TValueListEditor; li: TListItem;
const name: String; index: Integer): Integer; var value: String; begin if index < 0 then Result := vle.InsertRow(name, li.Caption, True) else begin if index < li.SubItems.Count then value := li.SubItems[index] else value := ''; Result := vle.InsertRow(name, value, True); end; end; procedure TForm1.ListView1Click(Sender: TObject); begin with ListView1 do if Assigned(Selected) then begin vle1.Strings.Clear; vle1.Strings.BeginUpdate; vle1.TopRow := AddString(vle1, Selected, 'Config-Name', -1); AddString(vle1, Selected, 'Datasource-Name', 0); AddString(vle1, Selected, 'Service-URL', 1); AddString(vle1, Selected, 'LFS-Cache-Path', 2); AddString(vle1, Selected, 'LFS-Config-Name', 3); vle1.Strings.EndUpdate; vle2.Strings.Clear; vle2.Strings.BeginUpdate; vle2.TopRow := AddString(vle2, Selected, 'Datasource-Name', 4); AddString(vle2, Selected, 'Database-Type', 5); AddString(vle2, Selected, 'Database-URL', 6); AddString(vle2, Selected, 'Database-Driver', 7); AddString(vle2, Selected, 'LFS-Config-Name', 8); AddString(vle2, Selected, 'LFS-Cache-Path', 9); AddString(vle2, Selected, 'DB-User', 10); AddString(vle2, Selected, 'DB-Password', 11); AddString(vle2, Selected, 'LFS-User', 12); AddString(vle2, Selected, 'LFS-Password', 13); if vle2.Strings.Values['Datasource-Name'] = '' then ShowMessage('The Configuration ' + listview1.Selected.Caption + ' is corrupt!'); vle2.Strings.EndUpdate; end; end; Freundliche Grüße |
Re: Listenindex überschreitet das Maximum
Hey danke, konnte beides gebrauchen und verwenden. Funzt+VIELEN DANK!!!
|
Re: Listenindex überschreitet das Maximum
Ansonsten hätte ich auch noch die Idee, dass du die Substrings schon immer erstellst. Egal, ob vorhanden oder nicht.
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 04:05 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