Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi [ini] leere Sections schreiben (https://www.delphipraxis.net/73475-%5Bini%5D-leere-sections-schreiben.html)

_frank_ 18. Jul 2006 17:03


[ini] leere Sections schreiben
 
Hi,
gibt es eine möglichkeit leere Sections zu erstellen?
habe keine Methode dafür in der Hilfe dazu gefunden.
sonst muss ich die ini per Stringlist erzeugen, aber vielleicht gehts einfacher...

Gruß Frank

HuxXx 18. Jul 2006 17:21

Re: [ini] leere Sections schreiben
 
Mhmm..., erstmal eine Section mit Schlüsseln erstellen, danach den erzeugten Schlüssel einfach wieder löschen. (DeleteKey).

Delphi-Quellcode:
procedure Beischspiel;
var ini: TInifile;
begin
ini:= TIniFile.Create('C:\hiyah.ini');
ini.WriteString('Deine Section','das_wird_geloescht','Hiyaaah!');
ini.DeleteKey('Deine Section','das_wird_geloescht');
ini.Free;
end;
Habs nicht getestet, aber müsste eigentlich funktionieren.

Greetz by Hux :dp:

Union 18. Jul 2006 17:28

Re: [ini] leere Sections schreiben
 
Zum Beispiel so:
Delphi-Quellcode:
WritePrivateProfileSection(PChar('EmptySection'), PChar(#0#0), PChar('c:\Temp.ini'));

_frank_ 18. Jul 2006 18:26

Re: [ini] leere Sections schreiben
 
danke funktioniert super aber warum nicht

WritePrivateProfileSection(PChar(tn.Text), '', PChar(extractfilepath(paramstr(0))+ininame))

PCHAR(#0#0) erzeugt doch auch nen leeren wert.

hab übrigends mitbekommen, dass WriteString(section,'','') ne AV in ntdll erzeugt (D3)

Die andere lösung ist mir bisschen zu intensiv, da es ziemlich viele sections sein können...
es gibt so wies aussieht auch keine Möglichkeit, die ini komplett leer zu machen oder Kommentare (Zeilen mit ; am anfang) zu schreiben.

Gruß Frank

marabu 18. Jul 2006 19:28

Re: [ini] leere Sections schreiben
 
Hallo.

Zitat:

Zitat von _frank_
da es ziemlich viele sections sein können...

Jeder Schreibzugriff mit den alten WInAPI Funfunktionen WritePrivateProfile... list die INI-Datei einmal komplett in den Hauptspeicher und schreibt sie dann auch sofort wieder auf die Platte. Besser ist da der gepufferte Einsatz von TMemIniFile, wobei auch die Größenbeschränkung für INI-Dateien fällt.

Zitat:

Zitat von _frank_
es gibt so wies aussieht auch keine Möglichkeit, die ini komplett leer zu machen

Dann schon: einfach die Methode Clear() aufrufen.

Zitat:

Zitat von _frank_
oder Kommentare (Zeilen mit ; am anfang) zu schreiben.

Diese Funktionalität kostet nichts extra, wenn du das Semikolon einfach als Präfix des Keys einsetzt. Ansonsten kannst du dir ja eine eigene Komponente von TMemIniFile ableiten.

Wenn du wirklich mit D3 arbeitest, dann könntest du TBigIniFile von Edy Hinzen einsetzen - das obige gilt dann sinngemäß.

Grüße vom marabu


Alle Zeitangaben in WEZ +1. Es ist jetzt 11:19 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz