Einzelnen Beitrag anzeigen

Popov
(Gast)

n/a Beiträge
 
#7

AW: Richtig in Ini Datei abspeichern

  Alt 27. Mär 2015, 12:05
@Rippo

Du machst das etwas kompliziert mit der Ini. Du erzeugst die Ini in einer Prozedur und verschickst sie dann als Parameter an andere Prozeduren. Das ist an sich kein Fehler, man verliert aber schnell die Übersicht. Wie gesagt, man kann es so machen, aber einfacher ist es nur den Dateinamen zu verschicken und in jeder Prozedur die Ini neu öffnen. Kostet kein Geld. Die Ini wird in jeder Prozedur neu geöffnet und wieder geschlossen. Das ist etwas sauberer (finde ich).

Das habe ich aus dem Kopf gemacht, ist also nicht überprüft. Sollte aber funktionieren. Hier wird nicht die Ini als Parameter übergeben, sondern nur der Dateiname.

Delphi-Quellcode:
procedure IniEraseSection(const IniFileName, SectionName: String);
var
  AIni: TIniFile;
begin
  AIni := TIniFile.Create(IniFileName);
  try
    AIni.EraseSection(SectionName);
  finally
    AIni.Free;
  end;
end;

procedure SaveToIni(const IniFileName: String; const ABenutzer: TBenutzer);
const
  SectionBenutzer = 'Benutzer';
  SectionZugang = 'Zugang';
var
  AIni: TIniFile;
begin
  AIni := TIniFile.Create(IniFileName);
  try
    AIni.WriteString(SectionBenutzer, ABenutzer.BenutzerName, ABenutzer.Kennwort);
    AIni.WriteString(SectionZugang, ABenutzer.BenutzerName, ABenutzer.Rechte);
  finally
    AIni.Free;
  end;
end;

procedure DeleteAllSections(const IniFileName: String);
...
begin
...
    for I := 0 to AllSectionsList.Count-1 do
    begin
      SectionName := AllSectionsList[I];
      IniEraseSection(IniFileName, SectionName);
    end;
...
end;

procedure TfrmBenutzerverwaltung.btnSpeichernClick(Sender: TObject);
const
  IniFileName = 'C:\Users\Verwaltung.ini';
var
  Zeile, Spalte : integer;
  Titel: string;
  AIni: TIniFile;
  Benutzer : TBenutzer;
begin
  SaveToStringGrid(edtName.Text,edtPasswort.Text,edtKunde.Text,edtLieferant.Text,edtPersonal.Text,edtVerwaltung.Text);

  SaveToIni(IniFileName, Benutzer);
  DeleteAllSections(IniFileName);
...
  Mit Zitat antworten Zitat