Delphi-PRAXiS
Seite 2 von 2     12   

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 TStringlist wie TIniFile (https://www.delphipraxis.net/42636-tstringlist-wie-tinifile.html)

Pr0g 22. Mär 2005 11:04

Re: TStringlist wie TIniFile
 
Die Daten werden intern einer THashedStringList gespeichert und das UpdateFile wird nur bei einer normalen TIniFile beim Freigeben aufgerufen, damit sollte es also keine Probleme geben. Hab noch nen Beispiel gemacht:
Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
var
  fIni: TMemIniFile;
  fStrings: TStrings;
begin
  fIni := TMemIniFile.Create('');
  try

    fStrings := TStringList.Create;
    try
      fStrings.Add('[test_section]');
      fStrings.Add('testkey=testvalue');

      //Stringliste übertragen
      fIni.SetStrings(fStrings);
    finally
      fStrings.Free;
    end;

    ShowMessage(fIni.ReadString('test_section', 'testkey', ''));

  finally
    fIni.Free;
  end;
end;

LoL 22. Mär 2005 14:01

Re: TStringlist wie TIniFile
 
Ich hab mich nun doch entschieden meine eigene Stringliste abzuleiten.
Dazu habe ich folgendes Probiert:

Delphi-Quellcode:
function TdddStringlist.ReadString(Section, Value, Default : String) : String;
var i, j : integer;
begin
  Result := Default;
  if Count > 0 then
    for i := 0 to Count - 1 do
      if copy(Strings[i],2,Length(Strings[i])-2) = Section then
        for j := i + 1 to Count - 1 do
          if copy(Strings[j],0,pos('=',Strings[j]) - 1) = Value then
            begin//Edit
              Result := copy(Strings[j],pos('=',Strings[j]) + 1,length(Strings[j]));
              break;//Edit
            end;//Edit
end;
kann man das so machen oder übersehe ich da was und es ist doch kompliziereter?

IngoD7 22. Mär 2005 16:54

Re: TStringlist wie TIniFile
 
Zitat:

Zitat von LoL
Ich hab mich nun doch entschieden meine eigene Stringliste abzuleiten.

:shock: Überraschend.
Ich, der das anfangs sogar vorgeschlagen hatte, war da mittlerweile fast schon wieder von ab.

Zitat:

Zitat von LoL
kann man das so machen oder übersehe ich da was und es ist doch kompliziereter?

Nein, ja, ja. :)

Bei folgender Liste ...
Code:
[Sec1]
key1=val1
key2=val2
key3=val3
[Sec2]
key4=val4
key5=val5
... würde ...
Delphi-Quellcode:
ReadString('Sec1','key4','SCHADE');
... val4 zurückliefern, was falsch ist. Eine Section hört mit dem Beginn der nächsten auf (oder, wenn keine danach folgt, am Listenende).

Pr0g 22. Mär 2005 17:10

Re: TStringlist wie TIniFile
 
Ich denke, dass die Lösung mit dem MemIni schon zu den einfachsten gehört, da du nichtmal eigene Codes zum auslesen schreiben musst. Deine StringList schreibst du ja auch nicht selber :)

LoL 23. Mär 2005 08:05

Re: TStringlist wie TIniFile
 
Dafür fehlen da aber so schöne sachen wie Count oder der Stringzugriff über einen Index

F.W. 28. Mär 2005 16:10

Re: TStringlist wie TIniFile
 
Hallo Leute! Ich habe genau das selbe Problem wie LOL, ich brauche eine Ini, die nur im Speicher als StringList rumliegt. Mein Problem ist, dass ich nicht an den Source ran komme.

@LOL: Könntest du die Unit der neuen "TMemIni" mal posten (anhängen) oder irgendwie sowas? Das wär super!

Pr0g 28. Mär 2005 16:16

Re: TStringlist wie TIniFile
 
Wozu willst du den Source?

Mit TMemIni kannst du eine Inidatei, bzw. besser Struktur im Speicher verwalten. Wie man die Daten anstelle einer Datei aus einer Stringlist in die MemIni einließt hatte ich hier schon gepostet: Link.

MfG Pr0g

F.W. 28. Mär 2005 17:40

Re: TStringlist wie TIniFile
 
Sorry, hab mir nicht alles durchgelesen, die Mitte ausgelassen und gleich zu ANTWORTEN hin :oops:

Aber ich hätte dann trotzdem noch eine Frage: Wie bekomme ich den Inhalt der "MemIni" zurück, denn die Stringlist hab ich ja im Speicherfreigegeben?
Und wenn ich sie nicht im Speicher freigebe, passiert mit ihr nichts, wenn ich z.B. einen Wert schreibe oder lösche!


Alle Zeitangaben in WEZ +1. Es ist jetzt 23:40 Uhr.
Seite 2 von 2     12   

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