AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Angemeldeten Usernamen nicht löschen ...

Ein Thema von LOMBI · begonnen am 9. Mär 2007 · letzter Beitrag vom 9. Mär 2007
Antwort Antwort
LOMBI
(Gast)

n/a Beiträge
 
#1

Angemeldeten Usernamen nicht löschen ...

  Alt 9. Mär 2007, 12:41
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:
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;
Gruß
Lombi
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.851 Beiträge
 
Delphi 11 Alexandria
 
#2

Re: Angemeldeten Usernamen nicht löschen ...

  Alt 9. Mär 2007, 13:29
Wo kommt der Fehler genau?
Achtung beim setzen von ModalResult wird ein (modales) Fenster geschlossen.
Markus Kinzler
  Mit Zitat antworten Zitat
LOMBI
(Gast)

n/a Beiträge
 
#3

Re: Angemeldeten Usernamen nicht löschen ...

  Alt 9. Mär 2007, 13:33
Fehlermeldung:

CurrentUser := ini.ReadString('LetztesLogin', CurrentUser, '');
  Mit Zitat antworten Zitat
hoika

Registriert seit: 5. Jul 2006
Ort: Magdeburg
8.270 Beiträge
 
Delphi 10.4 Sydney
 
#4

Re: Angemeldeten Usernamen nicht löschen ...

  Alt 9. Mär 2007, 13:41
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
Heiko
  Mit Zitat antworten Zitat
LOMBI
(Gast)

n/a Beiträge
 
#5

Re: Angemeldeten Usernamen nicht löschen ...

  Alt 9. Mär 2007, 16:50
Hab das jetzt mal so geändert und probeweise die Zeile entfernt:

Zitat:
CurrentUser := ini.ReadString('LetztesLogin', CurrentUser, '');
Nun können zwar alle User aus der ListBox und den beiden inis gelöscht werden,
aber ohne Prüfung eines aktiven Benutzers.
  Mit Zitat antworten Zitat
hoika

Registriert seit: 5. Jul 2006
Ort: Magdeburg
8.270 Beiträge
 
Delphi 10.4 Sydney
 
#6

Re: Angemeldeten Usernamen nicht löschen ...

  Alt 9. Mär 2007, 17:04
Hallo,

CurrentUser := LEditUser.Text;


steht denn im Editor was drin ?
Vielleicht stürzt die ReadString ja bei Leerstring ab ?


Heiko
Heiko
  Mit Zitat antworten Zitat
IngoD7

Registriert seit: 16. Feb 2004
464 Beiträge
 
Delphi 7 Enterprise
 
#7

Re: Angemeldeten Usernamen nicht löschen ...

  Alt 9. Mär 2007, 17:08
Zitat von LOMBI:
CurrentUser := ini.ReadString('LetztesLogin', CurrentUser, '');
Du hast dich vergaloppiert!

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.
  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 12:13 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