Entwickler-Ecke
Sonstiges (Delphi) - ListView innerhalb if-Abrage erzeugt Absturz ???
padawan - Fr 12.11.10 17:55
Titel: ListView innerhalb if-Abrage erzeugt Absturz ???
Hallo Delphi-Freunde!
Ich Nix mehr verstehn..:
Per ListView(9 Spalten) liste ich versch. Daten, klappt alles bestens.
Nach dem Löschen eines Eintrags
Der gelöschte Datensatz(Record) wird in der Datei nicht gelöscht,
sondern das 8. Bit von BitMaske(Word-Variable im Record) gesetzt- Add(BitMaske, 255)
Das Neu-Listen der ListView soll nur bei NICHT-gesetztem 8.Bit erfolgen,
so werden die gelöschten Einträge nicht angezeigt- so denke ich.
Quittung = Name von Record
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7:
| if (Quittung.BitMaske < 255) then with Listview1.Items.Add do begin Caption := DateToStr(Quittung.Datum0); SubItems.Add(s[0]); end; |
Auch die Abfrage:
Delphi-Quelltext
1:
| if (Quittung.BitMaske And 255) = 0 then |
erzeugt einen Absturz.
Mit dieser if-Abfrage stürzt das Prog ab mit der Meldung-
habe Foto darüber im Dateianhang.
Habe versuchsweise eine 2. ListView platziert, um nur
die gelöschten Daten zu listen. Da klappt es:
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7:
| if (Quittung.BitMaske >= 255) then with Listview2.Items.Add do begin Caption := DateToStr(Quittung.Datum0); SubItems.Add(s[0]); end; |
Weiß nicht mehr weiter.?:
Wenn ich da einen Tip bekommen könnte, wäre toll!!!
Gruß Uli
jaenicke - Fr 12.11.10 18:41
padawan hat folgendes geschrieben : |
Mit dieser if-Abfrage stürzt das Prog ab mit der Meldung-
habe Foto darüber im Dateianhang. |
Du kannst in der Meldung auch einfach Strg + C drücken um diese als Text zu kopieren. ;-)
Eine Zugriffsverletzung an einer solchen Stelle ist jedenfalls in der Regel eine Folge davon, dass ein Objekt nicht initialisiert wurde. Quittung wird vermutlich nil sein.
Setze doch einfach einen Haltepunkt auf die Zeile und schau nach was los ist. ;-)
padawan - Fr 12.11.10 20:03
Naja, wie ich schon geschrieben habe, geht die gleiche Geschichte wunderbar,
wenn es nur nicht um die ListView1 geht, bei ListView2 klappt es fehlerfrei.
Nun, ich versuche es mal weiter.
Gerd Kayser - Sa 13.11.10 07:20
padawan hat folgendes geschrieben : |
Der gelöschte Datensatz(Record) wird in der Datei nicht gelöscht,
sondern das 8. Bit von BitMaske(Word-Variable im Record) gesetzt- Add(BitMaske, 255) |
Wenn Du das erste Bit als Bit 0 bezeichnest, dann hat das 8. Bit den Wert 256, ansonsten den Wert 128, wenn das 1. Bit als Bit 1 bezeichnet wird. Aber niemals den Wert 255.
Setzen von Bit 8:
Auslesen mit:
padawan - Mi 17.11.10 16:18
Ja richtig!
Bei 255 sind alle Bits gesetzt.
War mein Denkfehler.
Vielen Dank!!!
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2025 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!