Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   GUI-Design mit VCL / FireMonkey / Common Controls (https://www.delphipraxis.net/18-gui-design-mit-vcl-firemonkey-common-controls/)
-   -   Delphi Daten aus ini auslesen (https://www.delphipraxis.net/139385-daten-aus-ini-auslesen.html)

StoRmtec 27. Aug 2009 21:57


Daten aus ini auslesen
 
Hallo Leute

Habe wieder mal ein Problem und zwar speichere ich von einer CheckListBox die aktivierten auflistungen und zwar so

Delphi-Quellcode:
procedure Tfrm_netz.btn_speichernClick(Sender: TObject);
var
ini:TIniFile;
    i: Integer;
s:String;
begin
ini := TIniFile.Create(IncludeTrailingPathDelimiter(GetCurrentDir)+'server.ini');
    begin
      try
        for i := 0 to Checklistbox1.Items.Count - 1 do
      if ChecklistBox1.Checked[i] = true then
          begin
            s:=s+ChecklistBox1.Items[i]+',';
          end;
            ini.WriteString('ChecklistBox','Items',s);
      finally
        ini.Free;
      end;
frm_haupt.Button2.Click;
close;
end;
end;
jetzt bin ich am verzweifeln wie ich die wieder auslesen kann.

Hat jemand eine Hilfe für mich

Danke

Mfg
StoRmtec

Luckie 27. Aug 2009 22:11

Re: Daten aus ini auslesen
 
Wie hast du es denn bisher probiert? Das sollte eigentlich auch in jedem Tutorial behandelt werden oder da, wo du dein Wissen über das Schreiben her hast.

Aber nebenbei bemerkt:
Delphi-Quellcode:
IncludeTrailingPathDelimiter(GetCurrentDir)+'server.ini'
Was kommt denn da für ein Pfad bei raus? Guck mal hier: http://www.michael-puff.de/Artikel/G...irectory.shtml

mkinzler 27. Aug 2009 22:12

Re: Daten aus ini auslesen
 
Und es wird wie gewünscht gespeichert?

rollstuhlfahrer 27. Aug 2009 22:14

Re: Daten aus ini auslesen
 
Delphi-Referenz durchsuchenIniFile.ReadString sollte dein Problem lösen.

Bernhard

DeddyH 27. Aug 2009 22:14

Re: Daten aus ini auslesen
 
Ein paar Dinge:
1. Deine Formatierung ist grauenhaft :mrgreen:
2.
Zitat:

Delphi-Quellcode:
IncludeTrailingPathDelimiter(GetCurrentDir)+'server.ini'

macht nicht viel Sinn, da das das selbe Ergebnis liefert wie nur
Delphi-Quellcode:
'server.ini'
3. Niemals auf true abfragen, besser (und eleganter) geht das mit
Delphi-Quellcode:
if ChecklistBox1.Checked[i] then
4. Du könntest doch auch die einzelnen Items als Boolean-Werte in die Ini schreiben (oder gleich eine Bitmaske verwenden).
Delphi-Quellcode:
Ini.WriteBool('ChecklistBox',IntToStr(i),ChecklistBox1.Checked[i]);
[edit] Da tippt man sich wund, und dann sind schon 3 Antworten da :? [/edit]

StoRmtec 27. Aug 2009 22:27

Re: Daten aus ini auslesen
 
OKay danke für die Antworten habe es ein wenig besser angepasst
Speichern geht echt super aber das auslesen komme echt nicht drauf wie ich die eingetragen einträge wieder auslesen kann
und in eine ChecklistBox wieder ausgeben kann.

Bitte um Hilfe

Danke

DeddyH 27. Aug 2009 22:29

Re: Daten aus ini auslesen
 
:glaskugel:, der aktuelle Code wäre schon recht hilfreich, findest Du nicht?

StoRmtec 27. Aug 2009 22:32

Re: Daten aus ini auslesen
 
ist eh oben eingefügt habe nur den Pfad angepasst :D

danke

DeddyH 27. Aug 2009 22:38

Re: Daten aus ini auslesen
 
Schau Dir doch die Punkte 3 und 4 aus meinem Post noch einmal an, dann geht das ganz easy.

StoRmtec 27. Aug 2009 22:42

Re: Daten aus ini auslesen
 
Danke für die Hilfe was du leistet aber bei den Punkt 3 und 4 wenn ich das einsetze dann speichert er mir gar nichts
irgendwie mache ich da was falsch leider

DeddyH 27. Aug 2009 22:46

Re: Daten aus ini auslesen
 
Liest Du auch die richtige Ini (also im richtigen Verzeichnis) aus? Egal, was ich meinte:
Delphi-Quellcode:
//Speichern
for i := 0 to Checklistbox1.Items.Count - 1 do
  ini.WriteBool('ChecklistBox',IntToStr(i),ChecklistBox1.Checked[i]);

//Auslesen
for i := 0 to Checklistbox1.Items.Count - 1 do
  ChecklistBox1.Checked[i] := ini.ReadBool('ChecklistBox',IntToStr(i),false);

StoRmtec 27. Aug 2009 22:54

Re: Daten aus ini auslesen
 
Ja lese ich

aber wenn ich das von dir nehme dann schaut meine ini so aus

[ChecklistBox]
0=1

aber er soll ja den Netzwerknamen auslesen was er mir auflistet wenn ich die andere Methode nehme
[ChecklistBox]
Items=\\MARTIN-PC,

Danke

DeddyH 27. Aug 2009 22:58

Re: Daten aus ini auslesen
 
Deine Logik stimmt nicht. Du willst Boolean-Werte in einer Stringauflistung darstellen, das ist IMHO "von hinten durch die Brust ins Auge". Wenn Du unbedingt sprechende Namen haben willst, mach das doch so:
Delphi-Quellcode:
//Speichern
for i := 0 to Checklistbox1.Items.Count - 1 do
  ini.WriteBool('ChecklistBox',ChecklistBox1.Items[i],ChecklistBox1.Checked[i]);

//Auslesen
for i := 0 to Checklistbox1.Items.Count - 1 do
  ChecklistBox1.Checked[i] := ini.ReadBool('ChecklistBox',ChecklistBox1.Items[i],false);

StoRmtec 27. Aug 2009 23:07

Re: Daten aus ini auslesen
 
Mei entweder ist es schon zu spät für das aber jetzt schreibt er mir den namen in die ini
aber auslesen tut er mir ihn nicht und die checklistbox bleibt leer

DeddyH 27. Aug 2009 23:11

Re: Daten aus ini auslesen
 
Ich habe gerade kein Delphi am Start, aber momentan kann ich keinen Denkfehler sehen. Sogar die Reihenfolge der Einträge in der Ini sollte da keine Rolle spielen :gruebel:. Verwendest Du auch ganz sicher in beiden Methoden denselben Pfad?

StoRmtec 27. Aug 2009 23:29

Re: Daten aus ini auslesen
 
Okay ich habe es jetzt
er lest mir die angehakte Datei aus aber er speichert alles was er auslest im Netzwerk ab
aber er sollte nur die angehakte Datei speichern und die anderen nicht
wie es jetzt ist speichert er alles und was angehakt ist lest er auch wieder aus

DeddyH 27. Aug 2009 23:34

Re: Daten aus ini auslesen
 
Wärst Du da mit einer einfachen TStringlist nicht besser bedient?

StoRmtec 27. Aug 2009 23:39

Re: Daten aus ini auslesen
 
MMh ja wenn du das sagst sicher also es sollte so sein
Er lest mir im ganzen Netzwerk sie Computer aus dann wähle ich 3 Computer aus die soll er mir speichern und dann nur
die 3 wieder auslesen

DeddyH 27. Aug 2009 23:44

Re: Daten aus ini auslesen
 
Da ich den gesamten Hintergrund ja immer noch nicht kenne, würde ich das wirklich erst einmal mit einer TStringlist machen.
Delphi-Quellcode:
var sl: TStringlist;
    i: integer;
begin
  sl := TStringlist.Create;
  try
    for i := 0 to Checklistbox1.Count - 1 do
      if Checklistbox1.Checked[i] then
        sl.Add(Checklistbox1.Items[i]);
    sl.SaveToFile(<Dateiname>);
  finally
    sl.Free;
  end;
end;
Damit sollten in der Datei nur die angehakten Rechnernamen stehen.

StoRmtec 27. Aug 2009 23:56

Re: Daten aus ini auslesen
 
Als erstes mal einen richtigen Herzlichen Danke an dich
das Forum ist echt spitze und die User dazu

Habe es jetzt angepasst und jetzt ist es perfekt

Danke

MFG
StoRmtec


Alle Zeitangaben in WEZ +1. Es ist jetzt 22:00 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 by Thomas Breitkreuz