AGB  ·  Datenschutz  ·  Impressum  







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

Mark. ListBox-Eintrag aus .ini löschen

Ein Thema von LOMBI · begonnen am 10. Feb 2007 · letzter Beitrag vom 14. Feb 2007
Antwort Antwort
LOMBI
(Gast)

n/a Beiträge
 
#1

Mark. ListBox-Eintrag aus .ini löschen

  Alt 10. Feb 2007, 12:02
Hi,

mit diesem Code hole ich aus einer .ini die Benutzer in die ListBox:

Delphi-Quellcode:
...
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;
Ein markierter Eintrag soll aus der ListBox und gleichzeitig aus der .ini gelöscht werden.

Delphi-Quellcode:
...
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);
Wer hilft mir bitte die Zeile aus der .ini zu löschen?

Gruß
Lombi
  Mit Zitat antworten Zitat
Benutzerbild von p0w3r5tr34m3r
p0w3r5tr34m3r

Registriert seit: 18. Aug 2003
Ort: Monheim am Rhein
153 Beiträge
 
RAD-Studio 2009 Pro
 
#2

Re: Mark. ListBox-Eintrag aus .ini löschen

  Alt 10. Feb 2007, 12:13
Delphi-Quellcode:
if listboxbenutzer.items[listboxbenutzer.itemindex] <> 'then begin
  listboxbenutzer.delete(listboxbenutzer.itemindex);
  ini.erasesection(listboxbenutzer.items[listboxbenutzer.itemindex]);
end;
müsste eigentlich so gewesen sein ansonsten guck dir die erase und delete funktionen der unit IniFiles an

so long,
p0w3r5tr34m3r
Florian Cülter
ich bin ein notorischer alles-klein-schreiber!

der 100. Beitrag nach 3 Jahren 25 Wochen und einem Tag
  Mit Zitat antworten Zitat
marabu

Registriert seit: 6. Apr 2005
10.109 Beiträge
 
#3

Re: Mark. ListBox-Eintrag aus .ini löschen

  Alt 10. Feb 2007, 12:54
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:
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;
Getippt und nicht getestet.

Freundliche Grüße
  Mit Zitat antworten Zitat
LOMBI
(Gast)

n/a Beiträge
 
#4

Re: Mark. ListBox-Eintrag aus .ini löschen

  Alt 10. Feb 2007, 13:39
Hallo und danke ihr beiden,

mit folgendem Code erhalte ich eine Zugriffsverletzung bzw. Meldung:
"var 'ini' ist möglicherweise nicht initialisiert worden."


Delphi-Quellcode:
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;
Schöne Grüße
Lombi
  Mit Zitat antworten Zitat
Benutzerbild von bitsetter
bitsetter

Registriert seit: 17. Jan 2007
1.169 Beiträge
 
Turbo Delphi für Win32
 
#5

Re: Mark. ListBox-Eintrag aus .ini löschen

  Alt 10. Feb 2007, 13:48
Hi,
du must vorher ini:= TInifile.Create(); aufrufen, dann ist die Meldung weg.
Gruß bitsetter
"Viele Wege führen nach Rom"
Wolfgang Mocker (geb. 1954), dt. Satiriker und Aphoristiker
  Mit Zitat antworten Zitat
LOMBI
(Gast)

n/a Beiträge
 
#6

Re: Mark. ListBox-Eintrag aus .ini löschen

  Alt 10. Feb 2007, 20:20
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
  Mit Zitat antworten Zitat
marabu

Registriert seit: 6. Apr 2005
10.109 Beiträge
 
#7

Re: Mark. ListBox-Eintrag aus .ini löschen

  Alt 11. Feb 2007, 09:24
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
  Mit Zitat antworten Zitat
Benutzerbild von xZise
xZise

Registriert seit: 3. Mär 2006
Ort: Waldbronn
4.303 Beiträge
 
Delphi 2009 Professional
 
#8

Re: Mark. ListBox-Eintrag aus .ini löschen

  Alt 11. Feb 2007, 10:50
Hi LOMBI,

Ich hoffe mal, dass du weißt, was du von marabu kopiert hast... Ansonsten ist ja sinnlos...
Fabian
Eigentlich hat MS Windows ab Vista den Hang zur Selbstzerstörung abgewöhnt – mkinzler
  Mit Zitat antworten Zitat
LOMBI
(Gast)

n/a Beiträge
 
#9

Re: Mark. ListBox-Eintrag aus .ini löschen

  Alt 14. Feb 2007, 15:42
Hallo marabu!

Zitat:
Wenn der gerade aktive Benutzer nicht gelöscht werden darf, dann muss man auch das prüfen (bei Button.Enabled := ...).
Wie bitte prüft das Programm, welcher Benutzer aus der .ini gerade angemeldet ist?
Könnten u.U. auch mehrere Benutzer aktiv sein?

Viele Grüße
Lombi
  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 20:08 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