DAU - Fehlerbehandlung - External Sigsegv -TListView Element löschen [gelöst]

Für Fragen zur Programmiersprache auf welcher Lazarus aufbaut
Antworten
Levario
Beiträge: 36
Registriert: Mo 1. Sep 2014, 14:32
OS, Lazarus, FPC: Windows 10 Pro Laptop (Lazarus 2.0.8 FPC 3.04)
CPU-Target: 64 Bit
Wohnort: Deutschland / NRW

DAU - Fehlerbehandlung - External Sigsegv -TListView Element löschen [gelöst]

Beitrag von Levario »

Hallo zusammen,

ich möchte DAU Fehler abfrangen,
- wenn in einer TListView keine Einträge vorhanden sind
- oder kein Eintrag ausgewählt wurde
der Nutzer aber trozdem Elemente löscht mit:

Code: Alles auswählen

procedure TForm1.BtnDeleteDataClick(Sender: TObject);
begin
 ListView1.selected.Delete;
end;
kommt ein Fehler: External Sigsegv.
Diesen möchte ich abfangen und dem User darauf hinweisen, das er einen EIntrag auswählen soll oder keine Einträge vorhanden sind.

Code: Alles auswählen

 try
    begin
     ListView1.selected.Delete;  // zu prüfende Anweisungen
    end;
  except // Fehlerbehandlung
    begin
    ShowMessage('Sie haben kein Item ausgewählt!');
    end;
  end;  


oder den Button auf enabled := false setzen. Wenn es keine Einträge gibt.

Ich scheitere allerdings an der Umsetzung. Könnt ihr mir helfen?
Zuletzt geändert von Levario am So 28. Jun 2020, 05:28, insgesamt 1-mal geändert.
Der Weg ist das Ziel... Aber bitte nicht vergessen los zu laufen :).

Mathias
Beiträge: 5039
Registriert: Do 2. Jan 2014, 17:21
OS, Lazarus, FPC: Linux (die neusten Trunc)
CPU-Target: 64Bit
Wohnort: Schweiz

Re: DAU - Fehlerbehandlung - External Sigsegv -TListView Element löschen

Beitrag von Mathias »

Geht sowas ?

Code: Alles auswählen

if Listview.Count < 0 Then Fehler
Mit Lazarus sehe ich gün
Mit Java und C/C++ sehe ich rot

Warf
Beiträge: 1480
Registriert: Di 23. Sep 2014, 17:46
OS, Lazarus, FPC: MacOS | Win 10 | Linux
CPU-Target: x86_64
Wohnort: Aachen

Re: DAU - Fehlerbehandlung - External Sigsegv -TListView Element löschen

Beitrag von Warf »

Mehrere möglichkeiten:
1. Fehler abfangen:

Code: Alles auswählen

if Assigned(ListView1.Selected) then
  // Auswahl existiert
// oder
if ListView1.SelCount > 0 then
  ...
2. Button deaktivieren. (Button steht standardmäßig auf enabled false)

Code: Alles auswählen

procedure TForm1.ListView1Click(sender: TObject); // TListView.OnClick
begin
  DeleteButton.Enabled := Assigned(ListView1.Selected);
end;
Ich würde den button deaktivieren statt ner Fehlermeldung

Levario
Beiträge: 36
Registriert: Mo 1. Sep 2014, 14:32
OS, Lazarus, FPC: Windows 10 Pro Laptop (Lazarus 2.0.8 FPC 3.04)
CPU-Target: 64 Bit
Wohnort: Deutschland / NRW

Re: DAU - Fehlerbehandlung - External Sigsegv -TListView Element löschen

Beitrag von Levario »

Vielen Dank für die Antworten, alle Lösungen getestet und funktionieren.
Nehme die Lösung das der Button ddeaktiviert wird, ohne eine Fehlermeldung zu verursachen.

Gruß
Levi
Der Weg ist das Ziel... Aber bitte nicht vergessen los zu laufen :).

Antworten