Entwickler-Ecke

Dateizugriff - ini Datei leeren


ZO_orki - Mi 15.02.06 19:18
Titel: ini Datei leeren
Hallo@ all

eigentlich sagt der Titel schon alles. Gibt es dazu eine Funktion?
Ich habe gefunden, dass es für TMemIniFile wohl die Methode Clear gibt.
Aber wie wende ich diese auf TIniFile an, wenn das überhaupt möglich ist?
Wenn nicht, gibt es eine Funktion, oder muss ich alle Daten einzeln löschen?

MfG ZO_orki


Lannes - Mi 15.02.06 19:32

Hallo,
die Stichworte "EraseSection" und "DeleteKey" und die Delphi-Hilfe sollten helfen.


ZO_orki - Mi 15.02.06 20:09

danke erstmal, aber diese befehle löschen doch nur eine section. wie kann ich alle löschen?


UGrohne - Mi 15.02.06 20:11

Geh sie einfach in einer Schleife durch. Oder lösch einfach die ganze Datei und erstell Sie neu ;)


Lannes - Mi 15.02.06 20:39

Hallo,
alle Sectionen bekommst Du mit ReadSections.


Delete - Mi 15.02.06 20:44

Lösch die Datei ainfach.


Marco D. - Mi 15.02.06 20:46

user profile iconLuckie hat folgendes geschrieben:
Lösch die Datei ainfach.


Delphi-Quelltext
1:
DeleteFile(dateipfad);                    


Delete - Mi 15.02.06 21:08

user profile iconLuckie hat folgendes geschrieben:
Lösch die Datei einfach.


WIng2005 - Mo 20.08.07 08:38

Problematisch ist doch hierbei, dass der Ort der ini Betriebssystemabhängig nicht klar definiert ist, oder liege ich da falsch? Wie kann ich die Datei löschen, ohne den Pfad zu kennen (WinNT\x.ini, Windows\x.ini)? Auch hat nicht jeder Nutzer des Programms das Betriebssystem auf C: .

MFG
Steffen


uwewo - Mo 20.08.07 08:45

user profile iconWIng2005 hat folgendes geschrieben:
Problematisch ist doch hierbei, dass der Ort der ini Betriebssystemabhängig nicht klar definiert ist, oder liege ich da falsch? Wie kann ich die Datei löschen, ohne den Pfad zu kennen (WinNTx.ini, Windowsx.ini)? Auch hat nicht jeder Nutzer des Programms das Betriebssystem auf C: .

MFG
Steffen


Darum musst Du dich schon selbst kümmern. Wenn eine Section gelöscht wird, musst Du auch wissen wo die Datei sich befindet. Oder nicht?


WIng2005 - Mo 20.08.07 08:54

Das ist so nicht richtig. Eine ini-Datei wird (meines Wissens nach) im Windows-Stammverzeichnis angelegt.
Die Frage ist also, wie ich den Pfad der Datei ermitteln kann (was im Übrigen nichts mit deinen Sections zu tun hat).

Die Frage ist, wie die Datei am Stück gelöscht werden kann, und nicht, wie ich die Inhalte entferne.

MFG
Steffen


uwewo - Mo 20.08.07 09:08

user profile iconWIng2005 hat folgendes geschrieben:
Das ist so nicht richtig. Eine ini-Datei wird (meines Wissens nach) im Windows-Stammverzeichnis angelegt.


Quatsch, je nach Programm bzw. Programmierer wird die Datei dort gespeichert wo man diese haben will.
Ich gehe mal davon aus das die INI nicht von Dir stammt, richtig?
Warum willst Du von eine INI Datei eines fremdem Programms löschen?


WIng2005 - Mo 20.08.07 09:14

"Quatsch, je nach Programm bzw. Programmierer wird die Datei dort gespeichert wo man diese haben will"

Ach ja? Dann sage mir mal, wo diese Datei gespeichert wird:

temp_db:=TInifile.Create('test.ini');

Da ich bei verschiedenen Installationen auf verschiedene Konfigurationen der Rechner stoße, besteht das Problem,
das die Pfade nicht klar sind. Deshalb habe ich alle MEINE ini's im Windows-Ordner, somit habe ich keine Pfade.

MFG
Steffen


Gausi - Mo 20.08.07 09:22

user profile iconWIng2005 hat folgendes geschrieben:
Ach ja? Dann sage mir mal, wo diese Datei gespeichert wird:

temp_db:=TInifile.Create('test.ini');
Ein guter Programmierer macht sowas nicht, weil man bei sowas nie sagen kann, wo sie hingespeichert wird.

Zu einem Ini-FileName gehört immer auch der Pfad. Sei es nun das Windowssverzeichnis, das Verzeichnis der Anwendung, oder (und das sollte afaik seit Win2000 immer so sein) das Anwendungsdaten-Verzeichnis des aktuellen Users.

Edit: Du speicherst alle deine Inis im Windows-Verzeichnis? Na großartig. :roll:


uwewo - Mo 20.08.07 09:24

user profile iconWIng2005 hat folgendes geschrieben:

Ach ja? Dann sage mir mal, wo diese Datei gespeichert wird:

temp_db:=TInifile.Create('test.ini');

In dem Verzeichnis wo sich das Programm gerade befindet und das legst Du fest!


WIng2005 - Mo 20.08.07 09:36

@Gausi: es sind genau 2, was also keines falls problematisch ist. Welchen Vorteil soll es denn bringen, wenn ich eine
Konfigurationsdatei mit Pfad speicher? Ich sehe keinen, außer, dass ich den Pfad jedesmal mit anbringen muß.
Die 2. Datei ist eine Temp-Datei, welche (und hier liegt mein Problem) welche wieder gelöscht werden soll. Hier macht es, da gebe ich euch Recht, schon Sinn, den Pfad zu kennen.

@uwewo: Falsch, sie wird im Windows-Verzeichnis abgelegt!


MFG
Steffen


UGrohne - Mo 20.08.07 09:43

user profile iconWIng2005 hat folgendes geschrieben:
@uwewo: Falsch, sie wird im Windows-Verzeichnis abgelegt!

Und auf selbiges hast Du unter Vista z.B. keinen Zugriff mehr! Eine Datei gehört entweder dahin gespeichert, wo das Programm ist oder (noch besser, weil das andere auch unter Vista Schwierigkeiten bereiten könnte) im Benutzerverzeichnis, und sonst nirgends!


Gausi - Mo 20.08.07 09:43

Der Vorteil liegt ganz einfach darin, dass man dein Programm auch benutzen kann, wenn man als normaler Nutzer angemeldet ist. Im Windows-Verzeichnis haben nur Admins Schreibrechte. Und bei Vista dürfte das Programm gar nicht mehr laufen.

Inis und sonstige Programmdateien, die zur Laufzeit generiert werden, gehören nicht ins Windows-Verzeichnis. Und auch nicht ins Programmverzeichnis. Punkt.

Hm. Gleichzeitig gepostet. Aber doppelt hält besser.


WIng2005 - Mo 20.08.07 09:48

Mmmmmmmmmh,
die Vista-Problematik hatte ich nicht beachtet (Viste wird bei uns wohl nie kommen).
Habe mal verschoben, sonst bekomme ich mein Löschen eh nicht hin.

MFG
Steffen


EDIT: Doberenz-Kowalski..... da habe ich meine Ansätze her....


uwewo - Mo 20.08.07 09:53

user profile iconWIng2005 hat folgendes geschrieben:

@uwewo: Falsch, sie wird im Windows-Verzeichnis abgelegt!


Sie wird dort abgelegt, wo Du in Deinem Programm den Pfad zuletzt eingestellt hast!


UGrohne - Mo 20.08.07 09:54

user profile iconWIng2005 hat folgendes geschrieben:
Mmmmmmmmmh,
die Vista-Problematik hatte ich nicht beachtet (Viste wird bei uns wohl nie kommen).
Habe mal verschoben, sonst bekomme ich mein Löschen eh nicht hin.

MFG
Steffen


EDIT: Doberenz-Kowalski..... da habe ich meine Ansätze her....

Du müsstest doch eigentlich wissen, wo die INI-Datei liegt? Wenn kein Pfad angegeben wird, im Windows-Verzeichnis, wenn ja, dann weißt Du es ja auch. Und wenn Du es nicht weißt, dann kannst Du sie auch nicht löschen, aber dann wieso willst Du sie dann löschen?

user profile iconuwewo hat folgendes geschrieben:
user profile iconWIng2005 hat folgendes geschrieben:

@uwewo: Falsch, sie wird im Windows-Verzeichnis abgelegt!


Sie wird dort abgelegt, wo Du in Deinem Programm den Pfad zuletzt eingestellt hast!

Nein, bei INIs ist es wirklich so, keine Pfadangabe führt dazu, dass sie im Windows-Verzeichnis angelegt werden. Ist dumm, ist aber so ;)


WIng2005 - Mo 20.08.07 10:22

Die Ini enthält Informationen, welche temporäre Rechenergebnisse sind. Diese müssen vor erneutem Durchlauf
aber entfernt sein. Im einfachsten Fall: Datei löschen.
Da meine Lektüre (Autoren-Dream-Team Doberenz & Kowalski :) ) nur die eine Methode (ohne Pfad) beschrieben hat,
ging ich bisher davon aus (es spielte bisher auch nicht wirklich eine Rolle), dass Ini' s immer automatisch im Win-Verz. liegen. Da das Windowsverzeichnis 1. auf unterschiedlichen Laufwerken und 2. WinNT oder Windows ... sein kann, kam das Problem jetzt erst durch....

Naja, die Vista-Problemetik war bisher auch egal, sodass ich fleißig ins Windosverzeichnis geschrieben habe.

Ich habe es jetzt umgeschrieben und kann nun auch löschen..

Besten Dank

Steffen


Timosch - Mo 20.08.07 10:43

user profile iconWIng2005 hat folgendes geschrieben:

Naja, die Vista-Problemetik war bisher auch egal, sodass ich fleißig ins Windosverzeichnis geschrieben habe.

Eigentlich ist das nicht nur eine Vista-Problematik. AFAIK hat man schon seit NT als normaler Benutzer keinen Schreibzugriff mehr aufs Windows-Verzeichnis. Vermutlich hast du das Programm bis jetzt immer als Admin ausgeführt, aber das kann man von Benutzern nicht verlangen.