AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Sonstige Fragen zu Delphi Delphi Fehler bei Selektion (beim zweiten mal)
Thema durchsuchen
Ansicht
Themen-Optionen

Fehler bei Selektion (beim zweiten mal)

Ein Thema von daNiii · begonnen am 13. Mai 2010 · letzter Beitrag vom 13. Mai 2010
Antwort Antwort
daNiii

Registriert seit: 10. Nov 2008
98 Beiträge
 
Turbo Delphi für Win32
 
#1

Fehler bei Selektion (beim zweiten mal)

  Alt 13. Mai 2010, 06:43
Hallo!

In meinem Programm habe ich ein Listview "LV_Produkte".
In diesem Listview möchte ich eine Zeile Auswählen und diese in einer Variable speichern.
Wenn ich das erste mal auf ein Element klicke funktioniert es auch, klicke ich gleich drauf noch einmal ein Element an, so kommt eine Fehlermeldung:

Erste Gelegenheit für Exception bei $76D4FBAE. Exception-Klasse EAccessViolation mit Meldung 'Zugriffsverletzung bei Adresse 004A766D in Modul 'Project4.exe'. Lesen von Adresse 00000024'. Prozess Project4.exe (5632)

Delphi-Quellcode:
procedure TForm1.LV_ProdukteSelectItem(Sender: TObject; Item: TListItem;
  Selected: Boolean);
begin
selected_Produkt:= strtoint(LV_Produkte.Selected.caption); //hier kommt der Fehler
showmessage(inttostr(selected_Produkt));
Zeit_laden();
end;
ich hoffe mir kann jemand helfen!
LG Daniela
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
43.149 Beiträge
 
Delphi 12 Athens
 
#2

Re: Fehler bei Selektion (beim zweiten mal)

  Alt 13. Mai 2010, 06:53
Ist dir mal aufgefallen, wozu der Parameter Item da sein soll?

Wenn ja, warum verwendest du dann LV_Produkte.Selected?


Diese Methode wird auch beim Deselektieren aufgerufen und nun rate mal, was .Selected in diesem Fall sein wird?
Zitat:
Lesen von Adresse 000000xx
Derartige Fehlermeldungen sollten dir notfalls noch einen Hinweis darauf geben. (000000xx = nil + Offset)


Mein Tipp: werte mal die/alle Parameter aus, anstatt externe Dinge zu nutzen
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests
  Mit Zitat antworten Zitat
Benutzerbild von jaenicke
jaenicke

Registriert seit: 10. Jun 2003
Ort: Berlin
9.349 Beiträge
 
Delphi 11 Alexandria
 
#3

Re: Fehler bei Selektion (beim zweiten mal)

  Alt 13. Mai 2010, 07:01
Und abgesehen davon: Wenn du einen Haltepunkt auf die erste Zeile setzt, dann sollte dir ebenfalls beim Darüberhalten der Maus über LV_Produkte.Selected auffallen, dass das nil ist.

Der Debugger ist schon wichtig, auch wenn es anfangs etwas irritierend sein mag damit zu arbeiten.
Sebastian Jänicke
Alle eigenen Projekte sind eingestellt, ebenso meine Homepage, Downloadlinks usw. im Forum bleiben aktiv!
  Mit Zitat antworten Zitat
daNiii

Registriert seit: 10. Nov 2008
98 Beiträge
 
Turbo Delphi für Win32
 
#4

Re: Fehler bei Selektion (beim zweiten mal)

  Alt 13. Mai 2010, 07:03
Ich verwende LV_Produkte.Selected, weil ich möchte das die Procedure "Zeit_laden" nur dann ausgelöst wird, wenn ich wirklich ein Item makiert habe.
Und so weit ich weis ist "LV_Produkte.selected.item" die einzige Möglichkeit dazu.
LG
  Mit Zitat antworten Zitat
daNiii

Registriert seit: 10. Nov 2008
98 Beiträge
 
Turbo Delphi für Win32
 
#5

Re: Fehler bei Selektion (beim zweiten mal)

  Alt 13. Mai 2010, 07:05
aber wenn LV_Produkte.selected.item wirklich nil ist, warum funktioniert es dann beim ersten mal?
  Mit Zitat antworten Zitat
daNiii

Registriert seit: 10. Nov 2008
98 Beiträge
 
Turbo Delphi für Win32
 
#6

Re: Fehler bei Selektion (beim zweiten mal)

  Alt 13. Mai 2010, 07:15
Ich habe es jetzt folgend gelöst!
Finde die Lösung aber nicht besonder schön!

Delphi-Quellcode:
procedure TForm1.LV_ProdukteClick(Sender: TObject);
begin


if LV_Produkte.selected.caption = null then begin
 
end else begin
  selected_Produkt:= strtoint(LV_Produkte.Selected.caption);
showmessage(inttostr(selected_Produkt));
Zeit_laden();
end;

end;
LG
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
43.149 Beiträge
 
Delphi 12 Athens
 
#7

Re: Fehler bei Selektion (beim zweiten mal)

  Alt 13. Mai 2010, 07:21
Delphi-Quellcode:
if ... = null then begin

end else begin
  ...
end;
entspricht
Delphi-Quellcode:
if ... <> null then begin
  ...
end;
Wieso eigentlich NULL?
NULL ist nicht NIL.

Und wurde nicht gesagt .Selected ist schon nil ... tja, dann kann .Selected.Irgendwas nicht funktionieren, denn genau an dieser Stelle tritt ja die Exception schon auf.
PS: Klicke mal bei deinem "if LV_Produkte.selected.caption = null then"-Code neben die Items, in einen freien ListView-Bereich.

Delphi-Quellcode:
if LV_Produkte.selected <> nil then begin
// oder besser noch
if Assigned(LV_Produkte.selected) then
Aber wie gesagt ... rate mal, wofür Parameter eigentlich gut sein sollen:
Delphi-Quellcode:
procedure TForm1.LV_ProdukteSelectItem(Sender: TObject; Item: TListItem; Selected: Boolean);
begin
  if Selected then begin
    //selected_Produkt := strtoint(TListView(Sender).Selected.Caption);
    selected_Produkt := strtoint(Item.Caption);
    showmessage(inttostr(selected_Produkt));
    Zeit_laden();
  end;
end;
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests
  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 04:54 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