AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

erzeugen einer TInifile

Ein Thema von Haegar · begonnen am 25. Jun 2005 · letzter Beitrag vom 26. Jun 2005
Antwort Antwort
Seite 1 von 2  1 2      
Haegar

Registriert seit: 10. Dez 2002
Ort: Peitz
319 Beiträge
 
Delphi 7 Professional
 
#1

erzeugen einer TInifile

  Alt 25. Jun 2005, 13:09
hallo,

nach ner großen delphipause, bin ich nun wieder am start, mehr oder weniger frisch
ich hab Delphi 7 Enterprise, viell is das ja nen grund für ein anliegen, was ich aber bezweifel.

also folgendes:
ich erzeuge in meinem programm eine ini-datei, sofern sie nicht existiert, des weiteren trage ich gleich ne sektion ein und nen key + value...alles nur zum test. geht wunderbar, mein programmverzeichniss welches vorher keine *.ini aufwies hat nun eine drin....ich kann aus "ihr"!?!? auslesen und sektions inne combobox schreiben.
wenn ich allerdings die *.ini datei mit notepad öffne steht nicht ein buchstabe drin, folglich dacht ich mir such ich mal, kann ja nicht sein das ich etwas aus der datei auslese obwohl scheinbar nix drin is!
gesucht gefunden gestaunt.... und zwar habe ich nun 2 ini-datein mit demselben namen, sprich eine in meinem programmverzeichniss, und eine in dem ordern C:\WINNT .... und in der ini-datei in dem C:\WINNT-ordner stehen auch die einträge drin, die frage is nu für mich wie kommt die datei dahin, und warum wird denn so gesehen aus ihr ausgelesen/in ihr geschrieben und nicht in die in meinem programmordner!?

quellcode is an sich richtig, auch habe ich keinerlei verweise auf den C:\WINNT-ordner in meinem quellcode gemacht, deswegen poste ich erstmal keinen.

kann mir nu einer helfen und sagen was da intern passiert ist..ich hätte schon gern nur eine *.ini datei die in meinem programm erzeugt wird, und die sollte sich dann doch im programmordner befinden


gruss haegar

edit: huch kann es sein das ich nicht ganz die richtige sparte erwischt hab, wenn dem so is...asche auf mein haupt
  Mit Zitat antworten Zitat
Thanatos81
(Gast)

n/a Beiträge
 
#2

Re: erzeugen einer TInifile

  Alt 25. Jun 2005, 13:18
Wenn ich mich richtig erinne, musst du beim erzeugen/auslesen/beschreiben einer TIniFile den kompletten Pfad zu dieser angeben, sonst legt er sie automatisch im Windows-Verzeichnis ab. Da das bei dir der eigene Ordner sein soll, verusch doch mal den Dateinamen für die Ini mit extractFilePath(paramstr(0))+'\meineIni.ini' anzugeben.
  Mit Zitat antworten Zitat
Haegar

Registriert seit: 10. Dez 2002
Ort: Peitz
319 Beiträge
 
Delphi 7 Professional
 
#3

Re: erzeugen einer TInifile

  Alt 25. Jun 2005, 13:29
super sache, ging ja flott...das mit dem befehl war mir bekannt, nur hatte ich noch ne methode fileCreate drin, die mir da was verbaut hatte...
nun hatte ich grad das problem, das er die sections nicht erkannt hat, obwohl welche drin standen.
ich hatte diese mittels:

Delphi-Quellcode:
eventIni := TIniFile.Create('events.ini');
   events := TStringList.Create;
   eventIni.ReadSections(events);
auslesen wollen, allerdings fand er keine, er hat zwar die datei gefunden, aber keine sections drin, nun habe ich ebenfalls deinen code eingefügt, und siehe da es ging....ist es also generell so, das ich den kompletten Pfad angeben muss, auch wenn ich weiss das das ding im selben ordner liegt wie die exe-datei!?


gruss haegar
  Mit Zitat antworten Zitat
Benutzerbild von ltiefland
ltiefland

Registriert seit: 2. Mai 2005
Ort: Marl
63 Beiträge
 
Delphi 2005 Professional
 
#4

Re: erzeugen einer TInifile

  Alt 25. Jun 2005, 13:34
Zitat von Haegar:
super sache, ging ja flott...das mit dem befehl war mir bekannt, nur hatte ich noch ne methode fileCreate drin, die mir da was verbaut hatte...
nun hatte ich grad das problem, das er die sections nicht erkannt hat, obwohl welche drin standen.
ich hatte diese mittels:

Delphi-Quellcode:
eventIni := TIniFile.Create('events.ini');
   events := TStringList.Create;
   eventIni.ReadSections(events);
auslesen wollen, allerdings fand er keine, er hat zwar die datei gefunden, aber keine sections drin, nun habe ich ebenfalls deinen code eingefügt, und siehe da es ging....ist es also generell so, das ich den kompletten Pfad angeben muss, auch wenn ich weiss das das ding im selben ordner liegt wie die exe-datei!?


gruss haegar
Wenn er NICHT im Windows-Ordner suchen soll, dann MUßT Du den Pfad mitangeben, egal wie Du auf die ".ini" zugreifst.
Lars Tiefland
Live Long And Prosper,
Lars Tiefland
admin at GBS, a Mod for STEF2, New mod versions and support!
Download Opera 8
  Mit Zitat antworten Zitat
Benutzerbild von Speedmaster
Speedmaster

Registriert seit: 4. Mär 2005
Ort: Karlsruhe
535 Beiträge
 
Delphi 2005 Personal
 
#5

Re: erzeugen einer TInifile

  Alt 25. Jun 2005, 14:02
Verzähl nix, es reicht wenn du deine Ini File so schreibst, b.z.w. auf sie zugreifst:
Delphi-Quellcode:
var
  IniFile: TMemIniFile;
begin
  IniFile := TMemIniFile.Create('.\' + Filename + '.ini');
  // Hier kommt dein Zeuchs hin was du machen willst
  // Zeuchs Ende :-)
  IniFile.Update;
  IniFile.Free;
end;
Felix K.
Zitat:
Siehst du diesen Park da unten?
Jeden Tag lernen sich leute kennen und verlassen einander, und du hast dein ganzes Leben Zeit darin zu gehen!
  Mit Zitat antworten Zitat
Christian Seehase
(Co-Admin)

Registriert seit: 29. Mai 2002
Ort: Hamburg
11.105 Beiträge
 
Delphi 11 Alexandria
 
#6

Re: erzeugen einer TInifile

  Alt 25. Jun 2005, 14:23
Moin Felix,

die Verwendung von relativen Pfaden ist immer gefährlich.
Beispielsweise genügt es einen OpenDialog im Programm zu haben, bei dem der Verzeichniswechsel erlaubt ist, und schon geht der Zugriff per relativem Pfad daneben.
Tschüss Chris
Die drei Feinde des Programmierers: Sonne, Frischluft und dieses unerträgliche Gebrüll der Vögel.
Der Klügere gibt solange nach bis er der Dumme ist
  Mit Zitat antworten Zitat
100nF

Registriert seit: 7. Nov 2004
639 Beiträge
 
#7

Re: erzeugen einer TInifile

  Alt 25. Jun 2005, 15:04
hi,

aus dem
eventIni := TIniFile.Create('events.ini'); musst du das machen:
eventIni := TIniFile.Create(extractfilepath(application.exename)+'events.ini');
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#8

Re: erzeugen einer TInifile

  Alt 25. Jun 2005, 15:16
Zitat von Speedmaster:
Verzähl nix, es reicht wenn du deine Ini File so schreibst, b.z.w. auf sie zugreifst:
Delphi-Quellcode:
var
  IniFile: TMemIniFile;
begin
  IniFile := TMemIniFile.Create('.\' + Filename + '.ini');
  // Hier kommt dein Zeuchs hin was du machen willst
  // Zeuchs Ende :-)
  IniFile.Update;
  IniFile.Free;
end;
Schon mal geguckt was passiert, wenn du das Arbeitsverzeichnis änderst in der Verknüpfung oder mit einem Save- oder OpenDialog das aktuelle Verzeichnis änderst? Wohl nicht, sonst würdest du so etwas nicht behaupten.
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
marabu

Registriert seit: 6. Apr 2005
10.109 Beiträge
 
#9

Re: erzeugen einer TInifile

  Alt 25. Jun 2005, 16:23
Hallo Haegar,

ein Programm braucht eigentlich immer zwei INI-Dateien. Die erste liegt bei meinem Programm im Installationsverzeichnis. Sie wird nur gelesen und dient der Konfiguration durch den Administrator.

ini := TIniFile.Create(ChangeFileExt(ParamStr(0), '.ini')); Die zweite ist benutzerbezogen und enthält die impliziten (Fenstergrößen und -positionen, etc.) und expliziten Einstellungen (Hauptmenü: Optionen, Ansicht, etc.) des Benutzers.

Delphi-Quellcode:
resourcestring
  ENV_APPDATA = 'APPDATA';

function AppDataDir: string;
begin
  Result := GetEnvironmentVariable(ENV_APPDATA);
end;

begin
  ini := TIniFile.Create(AppDataDir + ChangeFileExt(ExtractFileName(ParamStr(0)), '.ini');
  ...
end;
Leichte Variationen je nach den Betriebsrichtlinien der Kunden existieren - das Konzept bleibt immer gleich.

Grüße vom marabu
  Mit Zitat antworten Zitat
Benutzerbild von phXql
phXql

Registriert seit: 11. Mär 2004
Ort: Mühldorf
824 Beiträge
 
#10

Re: erzeugen einer TInifile

  Alt 25. Jun 2005, 17:13
Zitat von Speedmaster:
Verzähl nix, es reicht wenn du deine Ini File so schreibst, b.z.w. auf sie zugreifst:
Delphi-Quellcode:
var
  IniFile: TMemIniFile;
begin
  IniFile := TMemIniFile.Create('.\' + Filename + '.ini');
  // Hier kommt dein Zeuchs hin was du machen willst
  // Zeuchs Ende :-)
  IniFile.Update;
  IniFile.Free;
end;
jo, dann nimmt er aber nich das verzeichnis, wo die exe drin liegt, sondern das letzte von deinem programm verwendete arbeitsverzeichnis. und wenn du das durch irgendeine operation mal geändert haben solltest, dann is deine INI eben da drin, obwohl sie eigentlich bei der EXE sein sollte...
"Dunkel die andere Seite ist"
"Yoda! Halts Maul und iss deinen Toast!"
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 23:17 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