![]() |
StringGrid einträge speichern
Liste der Anhänge anzeigen (Anzahl: 1)
Hallo
ich habe eine ini datei die so aussieht [Benutzer] Admin=a [Zugang] Admin=1,2,3,4 Admin ist der Benutzername und das a ist sein Passwort beim zugang sind die zahlen dazu da um berechtigung zu setzten jetzt möchte ich die einträge aus meinem stringgrid in die ini datei laden. die einträge bei Benutzername und Passwort sollen in die Section [Benutzername] Benutzername, Kunde,Lieferant,personal und Verwaltung sollen in die Section [Zugang]
Delphi-Quellcode:
procedure TfrmBenutzerverwaltung.btnSpeichernClick(Sender: TObject);
var Zeile, Spalte : integer; Titel: string; Ini: TIniFile; Begin SaveToStringGrid(edtName.Text,edtPasswort.Text,edtKunde.Text,edtLieferant.Text,edtPersonal.Text,edtVerwaltung.Text); Ini := TIniFile.Create('C:\Users\Verwaltung.ini'); try // Lösche Alle Sectionen aus der Ini Datei DeleteAllSections(ini); // Speicher alle Zeilen for Zeile := StringGridVerwaltung.FixedRows to StringGridVerwaltung.RowCount - 1 do Begin // je Kunde for Spalte := StringGridVerwaltung.FixedCols to StringGridVerwaltung.ColCount - 1 do begin // Kundendetails Titel := StringGridVerwaltung.Cells[Spalte, 0]; Ini.WriteString('BenutzerName' + IntToStr(Zeile), Titel, StringGridVerwaltung.Cells[Spalte, Zeile]); end; End; finally Ini.Free; end; end; wir müss ich es so umsetzten das ich die einträge in die richtige section setzte? |
AW: StringGrid einträge speichern
ich würde wohl 2 TStringList -en machen. (TStringList.Create) für jede Section eine
mit TStringList.Add(str) an jeweils eine der Listen die Daten anfügen. (d.h. ordne die Daten bevor du in die ini schreibst.. nicht erst beim Write ;)) ![]() Dann beide nacheinander in die ini schreiben. Du kannst auch Delimiter verwenden (,, ;, ., #, /, |, usw.) so wie du es versuchst müsstest du andauernd durch die ini zwitschern um die richtigen Zeilen zu finden. Der "Umweg" über 2 Stringlisten könnte dein Problem lösen. Hoffe das hilft dir weiter. gg hfhf PS: Die Passwörter speicherst du hoffentlich nicht so in der ini! :D der Trick dabei ist, nur die "verschlüsselten" PWDs zu speichern (Google: SHA1-Hash). Bei jeder Abfrage wird "das eingegebene Passwort verschlüsselt und mit dem verschlüsselten Wert in der DB/Liste verglichen". Sind die gleich, war auch das Passwort richtig :D. so speicherst du niemals Passwörter in Textform sondern nur verschlüsselte Werte ;) vielleicht wusstest du das.. aber vielleicht hilft es dir auch :D" ![]() |
AW: StringGrid einträge speichern
Wenn man schon Benutzerdaten in einer Ini speichert (ein bisschen gruselig ist das ja schon), dann könnte man doch die Benutzernamen als Section verwenden, das macht IMO den Aufbau strukturierter. Das sähe dann so aus:
Code:
[admin]
Passwort=a Zugang1=1 Zugang2=2 Zugang3=3 Zugang4=4 [Hanswurst] Passwort=salami Zugang1=0 Zugang2=0 Zugang3=0 Zugang4=42 |
AW: StringGrid einträge speichern
Delphi-Quellcode:
type
TBenutzer = record Name: string; Kennwort: string; Rechte: string; end; function ReadFromGrid(AZeile: Integer): TBenutzer; const SpalteBenutzer = 1; SpalteKennwort = 2; SpalteRechteVon = 3; SpalteRechteBis = 6; var Spalte: Integer; Recht: string; begin Result.Name := StringGridVerwaltung.Cells[SpalteBenutzer, AZeile]; Result.Kennwort := StringGridVerwaltung.Cells[SpalteKennwort, AZeile]; Result.Rechte := ''; for Spalte := SpalteRechteVon to SpalteRechteBis do begin Recht := StringGridVerwaltung.Cells[Spalte, AZeile]; if Recht <> '' then begin if Result.Rechte <> '' then Result.Rechte := Result.Rechte + ','; Result.Rechte := Result.Rechte + Recht; end; end; end; procedure SaveToIni(AIni: TIniFile; const ABenutzer: TBenutzer); const SectionBenutzer = 'Benutzer'; SectionZugang = 'Zugang'; begin AIni.WriteString(SectionBenutzer, ABenutzer.Name, ABenutzer.Kennwort); AIni.WriteString(SectionZugang, ABenutzer.Name, ABenutzer.Rechte); end; // je Kunde Benutzer := ReadFromGrid(Zeile); SaveToIni(Ini, Benutzer); |
AW: StringGrid einträge speichern
Es macht erheblich mehr Sinn die Daten so in der INI-Datei abzulegen:
Code:
Eine INI-Datei kann eben auch SubSections und
[User\Admin]
Password=... Permission=... [User\Foo] Password=... Permission=... ![]() |
AW: StringGrid einträge speichern
Beim augenblicklichen Funktionsumfang und dem eigentlichen Sinn einer INI-Datei macht das imho keinen Sinn bzw. bringt keinen Mehrwert. Davon abgesehen, das man Kennwörter eh nicht in einer INI-Datei ablegen sollte, finde ich die Einführung von Subsections insofern kontraproduktiv, als das diese einladen, noch mehr Mumpitz in einer INI abzulegen.
Aber übersichtlicher und selbsterklärend ist dein Vorschlag es allemal, da er die INI-Datei lesbarer macht. |
Dieses Thema wurde am "24. Apr 2015, 07:22 Uhr" von "r_kerber" aus dem Forum "Neuen Beitrag zur Code-Library hinzufügen" in das Forum "Win32/Win64 API (native code)" verschoben.
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 03:11 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