AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren

Doppelte Einträge in Ini vermeiden

Ein Thema von torud · begonnen am 13. Jul 2003 · letzter Beitrag vom 14. Jul 2003
 
torud

Registriert seit: 26. Jul 2002
Ort: Sachsen
1.198 Beiträge
 
Delphi XE5 Professional
 
#1

Doppelte Einträge in Ini vermeiden

  Alt 13. Jul 2003, 17:49
Hallo Wissende,

ich habe hier im Forum folgenden Code gefunden und sowiet abgewandelt, dass nicht mehr Dateien im Menü hinzugefügt werden, sondern Pfad. Aber das nur am Rand. Ich habe es leider noch nicht hinbekommen, dass die Pfade die hinzugefügt werden, NICHT doppelt eingetragen werden. Mein Versuch, dies mit ValueExists durchzuführen ist leider gescheitert. Hat jemand einen Tipp?

Delphi-Quellcode:
procedure TMainForm.MyMenuItemClick(Sender: TObject);
var
  ini : TiniFile;
  s : String;
begin
  ini := TIniFile.Create(ExtractFilePath(ParamStr(0))+'\Einstellungen.ini');
  try
    s := ini.ReadString('History', IntToStr((Sender as TMenuItem).Tag), ''); // Schlüsselwert an Hand des Tags indentifizieren
    ed_path.Text:=s;
    //ShowMessage(s); // Und ausgeben
  finally
    ini.Free;
  end;
end;


procedure TMainForm.FillMenue;
var
  ini : TIniFile;
  slKeyNumbers : TStringList;
  i : Integer;
  NewItem : TMenuItem;
begin
  ini := TIniFile.Create(ExtractFilePath(ParamStr(0))+'\Einstellungen.ini');
  try
    slKeyNumbers := TStringList.Create;
    try
      ini.ReadSectionValues('History', slKeyNumbers); // Sektionswerte holen
      if slKeyNumbers.Count > 0 then // wenn welche da sind Trennlinie erzeugen
      begin
        NewItem := TMenuItem.Create(Pfade1);
        try
          NewItem.Caption := '-';
          Pfade1.Insert(Pfade1.Count, NewItem);
          for i := 0 to slKeyNumbers.Count-1 do // in einer Schleife alle Dateien hinzufügen (nur die Dateinamen)
          begin
            NewItem := TMenuItem.Create(Pfade1);
           // NewItem.Caption := '&'+IntToStr(i)+' '+ExtractFilename(ini.ReadString('History', IntToStr(i), ''));
            NewItem.Caption := '&'+IntToStr(i)+' '+ini.ReadString('History', IntToStr(i), '');
            if NewItem.Caption = 'then
              continue;
            NewItem.Tag := i; // Menüeintrag eindeutig markieren mit der Tag-Eigenschaft
            NewItem.OnClick := MyMenuItemClick; // Menüeintag mit der Ereignissprozedur verbinden
            Pfade1.Insert(Pfade1.Count, NewItem);
          end;
        finally
          NewItem.Free;
        end;
      end;
    finally
      slKeyNumbers.Free;
    end;
  finally
    ini.Free;
  end;
end;

procedure TMainForm.Pfade1Click(Sender: TObject);
var
  ini : TInifile;
  slKeyNumbers : TStringList;
  KeyNumber : Integer;
begin
    ini := TIniFile.Create(ExtractFilePath(ParamStr(0))+'\Einstellungen.ini');
    try
      slKeyNumbers := TStringList.Create;
      try
        ini.ReadSectionValues('History', slKeyNumbers);
        KeyNumber := slKeyNumbers.Count;
          { mein schneller Versuch die Anzahl zu begrenzen }
        if slKeyNumbers.Count = 9 then
        begin
          ini.DeleteKey('History', '0');
          ini.WriteString('History', '0', ed_path.Text);
        end
        else
          {ende des versuches}
          {Dopplung ausschliessen}
        if ini.ValueExists('History',ed_path.Text)=True then
          begin
            ShowMessage(ed_path.Text+'vorhanden');
            exit;
          end
        else
          ini.WriteString('History', IntToStr(KeyNumber), ed_path.Text); // Dateiname in Ini eintragen, der Key ist eine Ziffer
      finally
        slKeyNumbers.Free; // Stringliste freigeben
      end;
    finally
      ini.Free; // Ini-Objekt freigeben
    end;
end;
Danke Tom

[edit=Daniel B]Delphi-Tags korrigiert. Mfg, Daniel B[/edit]
Danke
Tom
  Mit Zitat antworten Zitat
 

Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

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 13:17 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