![]() |
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; |
Re: TStringlist wie TIniFile
Ich hab mich nun doch entschieden meine eigene Stringliste abzuleiten.
Dazu habe ich folgendes Probiert:
Delphi-Quellcode:
kann man das so machen oder übersehe ich da was und es ist doch kompliziereter?
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; |
Re: TStringlist wie TIniFile
Zitat:
Ich, der das anfangs sogar vorgeschlagen hatte, war da mittlerweile fast schon wieder von ab. Zitat:
Bei folgender Liste ...
Code:
... würde ...
[Sec1]
key1=val1 key2=val2 key3=val3 [Sec2] key4=val4 key5=val5
Delphi-Quellcode:
... val4 zurückliefern, was falsch ist. Eine Section hört mit dem Beginn der nächsten auf (oder, wenn keine danach folgt, am Listenende).
ReadString('Sec1','key4','SCHADE');
|
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 :)
|
Re: TStringlist wie TIniFile
Dafür fehlen da aber so schöne sachen wie Count oder der Stringzugriff über einen Index
|
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! |
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: ![]() MfG Pr0g |
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. |
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