![]() |
Angemeldeten Usernamen nicht löschen ...
Hallo,
ich möchte verhindern, dass ein gerade angemeldeter User aus einer ListBox gelöscht wird. Bei dem folgenden Code erhalte ich eine Zugriffsverletzung. Was mache ich falsch?
Delphi-Quellcode:
Gruß
procedure TFormDemo.DeleteActionExecute(Sender: TObject);
var ini: TIniFile; msg: string; CurrentUser, status: String; begin CurrentUser := LEditUser.Text; Status := 'Aktiv'; with ListBoxUser do begin ini := TiniFile.Create(ExtractFilePath(Application.ExeName) + 'Demo.ini'); msg := Format(S_SAFETYFIRST, [Items[ItemIndex]]); CurrentUser := ini.ReadString('LetztesLogin', CurrentUser, ''); status := 'Aktiv'; if (CurrentUser = status) then ModalResult := mrOK; if ModalResult = mrOK then ShowMessage('Ein angemeldeter Benutzername kann nicht gelöscht werden!') else if MessageDlg(msg, mtConfirmation, [mbYes, mbNo], 0) = mrYes then begin ini.DeleteKey(S_USERSECTION, Items[ItemIndex]); ini.DeleteKey(S_LASTLOGINSECTION, Items[ItemIndex]); Items.Delete(ItemIndex); end; Lombi |
Re: Angemeldeten Usernamen nicht löschen ...
Wo kommt der Fehler genau?
Achtung beim setzen von ModalResult wird ein (modales) Fenster geschlossen. |
Re: Angemeldeten Usernamen nicht löschen ...
Fehlermeldung:
Delphi-Quellcode:
CurrentUser := ini.ReadString('LetztesLogin', CurrentUser, '');
|
Re: Angemeldeten Usernamen nicht löschen ...
Hallo,
das ist die Stelle ? sieht aber unverdächtig aus, abgesehen vom Format darüber. Hast du das mal debuggt ? Mach mal deinen Code etwas schöner. Das with Listbox ist hier nicht so schön. Du lädst Items[ItemIndex] mehrfach. Nimm eine lokale Variable dafür. Das lässt sich dann besser Debuggen. msg setzt du zu früh. Das Status:= Aktiv wird zweimal gesetzt Der Code prüft nicht, ob ItemIndex-1 (kein Eintrag in der Listbox markiert) ist. Heiko |
Re: Angemeldeten Usernamen nicht löschen ...
Hab das jetzt mal so geändert und probeweise die Zeile entfernt:
Zitat:
aber ohne Prüfung eines aktiven Benutzers. |
Re: Angemeldeten Usernamen nicht löschen ...
Hallo,
CurrentUser := LEditUser.Text; steht denn im Editor was drin ? Vielleicht stürzt die ReadString ja bei Leerstring ab ? Heiko |
Re: Angemeldeten Usernamen nicht löschen ...
Zitat:
Du willst für CurrentUser etwas aus der Ini lesen. Du benutzt aber CurrentUser direkt selbst, um den Key in der Ini-Section 'LetztesLogin' anzugeben. Wenn CurrentUser zu dem Zeitpunt '' ist, dann suchst du also den Key '' in der Section 'LetztesLogin'. (Wenn CurrentUser einen Namen enthält, wird als Key der Name gesucht. Wenn CurrentUser - wie später abgeprüft wird - 'Aktiv' enthält wird der Key 'Aktiv' gesucht.) Wird schwierig ... ;) Du benutzt einfach die Variable CurrentUser in zuvielen (und logisch falschen) Zusammenhängen. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 21:18 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