![]() |
Mark. ListBox-Eintrag aus .ini löschen
Hi,
mit diesem Code hole ich aus einer .ini die Benutzer in die ListBox:
Delphi-Quellcode:
Ein markierter Eintrag soll aus der ListBox und gleichzeitig aus der .ini gelöscht werden.
...
var //Benutzer in der ListBox anzeigen ini: TIniFile; begin with ListBoxBenutzer do begin try ini := TiniFile.Create(ExtractFilePath(Application.ExeName) + 'p.ini'); ini.ReadSection('User', ListBoxBenutzer.Items); finally ini.Free; end;
Delphi-Quellcode:
Wer hilft mir bitte die Zeile aus der .ini zu löschen?
...
begin with ListBoxBenutzer do begin if ItemIndex <> - 1 then if MessageDlg('Markierten Benutzer wirklich löschen?', mtConfirmation, [mbYes, mbNo], 0) = mrYes then begin Items.Delete(ItemIndex); Gruß Lombi |
Re: Mark. ListBox-Eintrag aus .ini löschen
Delphi-Quellcode:
müsste eigentlich so gewesen sein ;) ansonsten guck dir die erase und delete funktionen der unit IniFiles an
if listboxbenutzer.items[listboxbenutzer.itemindex] <> '' then begin
listboxbenutzer.delete(listboxbenutzer.itemindex); ini.erasesection(listboxbenutzer.items[listboxbenutzer.itemindex]); end; so long, p0w3r5tr34m3r |
Re: Mark. ListBox-Eintrag aus .ini löschen
Hallo ihr zwei,
da der Zugriffsschlüssel für die INI-Datei das ListBox-Item ist, darf es erst gelöscht werden, wenn die INI-Datei bearbeitet wurde. Die Prüfung, ob überhaupt ein Item markiert wurde, würde ich außerhalb des event handlers machen und darüber den Button erst aktivieren (Button.Enabled := ListBox.ItemIndex >= 0). Bei der Sicherheitsfrage sollte man die wichtige Information (um welchen Benutzer es sich handelt) gleich mit rein packen. Wenn der gerade aktive Benutzer nicht gelöscht werden darf, dann muss man auch das prüfen (bei Button.Enabled := ...).
Delphi-Quellcode:
Getippt und nicht getestet.
resourcestring
S_USERSECTION = 'Users'; S_SAFETYFIRST = 'Benutzer "%s" löschen?'; procedure TUserForm.DeleteButtonClick(Sender: TObject); var msg: string; begin with ListBox do begin msg := Format(S_SAFETYFIRST, [Items[ItemIndex]); if MessageDlg(msg, mtConfirmation, [mbYes, mbNo], 0) = mrYes then begin ini.DeleteKey(S_USERSECTION, Items[ItemIndex]); Items.Delete(ItemIndex); end; end; Freundliche Grüße |
Re: Mark. ListBox-Eintrag aus .ini löschen
Hallo und danke ihr beiden,
mit folgendem Code erhalte ich eine Zugriffsverletzung bzw. Meldung: "var 'ini' ist möglicherweise nicht initialisiert worden."
Delphi-Quellcode:
Schöne Grüße
var
msg: string; ini: TiniFile; begin with ListBoxBenutzer do begin msg := Format(S_SAFETYFIRST, [Items[ItemIndex]]); if MessageDlg(msg, mtConfirmation, [mbYes, mbNo], 0) = mrYes then begin ini.DeleteKey(S_USERSECTION, Items[ItemIndex]); <= hier kommt es zur Meldung! Items.Delete(ItemIndex); end; Lombi |
Re: Mark. ListBox-Eintrag aus .ini löschen
Hi,
du must vorher
Delphi-Quellcode:
aufrufen, dann ist die Meldung weg.
ini:= TInifile.Create();
|
Re: Mark. ListBox-Eintrag aus .ini löschen
Hallo bitsetter,
hatte ich tatsächlich übersehen. Vielen Dank! Der in der ListBox markierte Eintrag wird gelöscht, nicht aber die Zeile in der .ini. Nach dem Ausführen der Anwendung wird die .ini komplett in die ListBox geladen, inkl. der zuvor entfernten ListBox-Einträge. Gruß Lombi |
Re: Mark. ListBox-Eintrag aus .ini löschen
Guten Morgen Lombi,
überprüfe mal den Abschnittsnamen. Ich habe ihn in der Konstante S_USERSECTION im Plural angegeben, du in deinem Beitrag #1 aber im Singular. Du solltest die Konstante an einer zentralen Stelle definieren und dann auch überall im Programm verwenden, sonst ist der wesentliche Vorteil (Anpassungen an einer Stelle) nicht gegeben. Schönes Wochenende |
Re: Mark. ListBox-Eintrag aus .ini löschen
Hi LOMBI,
Ich hoffe mal, dass du weißt, was du von marabu kopiert hast... Ansonsten ist ja sinnlos... |
Re: Mark. ListBox-Eintrag aus .ini löschen
Hallo marabu!
Zitat:
Könnten u.U. auch mehrere Benutzer aktiv sein? Viele Grüße Lombi |
Alle Zeitangaben in WEZ +1. Es ist jetzt 03:28 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