Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Ini-Datei wird nicht mehr gelesen (https://www.delphipraxis.net/153208-ini-datei-wird-nicht-mehr-gelesen.html)

Ginko 24. Jul 2010 19:33

Delphi-Version: 2005

Ini-Datei wird nicht mehr gelesen
 
Hallo,
ich habe ein Problem, dass ich mir nicht erklären kann.
Ich öffne in einen Porgramm über ein OpenDialog eine Textdatei und lese diese in ein Memofeld ein, daraufhin ist es nicht mehr möglich über einen anderen Button einen Wert aus einer Ini-Datei zu lesen.
Wird der OpenDialog nicht benutzt, ist das Arbeiten mit der Ini-Datei problemlos möglich.
Hier der Quelltext:

Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
var
  Settings: TIniFile;
  tmp1: String;
begin
  Settings := TIniFile.Create(GetCurrentDir + '\set.ini');
  try
    tmp1 := Settings.ReadString('Set1','name','nix');
    Edit1.Text := tmp1;
  finally
    Settings.Free;
  end;
end;

procedure TForm1.Button2Click(Sender: TObject);
var
  F: TextFile;
  Dateiname,tmp1: String;
begin
  OpenDialog1.Filter := 'Textdatei(*.txt)|*.txt';

  if not OpenDialog1.Execute then exit;
  Dateiname := OpenDialog1.FileName;
  AssignFile(F, Dateiname);
  Reset(F);
  while not Eof(F) do
  begin
    Readln(F, tmp1);                    
    Memo1.Lines.Add(tmp1);
  end;
  CloseFile(F);
end;

jfheins 24. Jul 2010 19:36

AW: Ini-Datei wird nicht mehr gelesen
 
Delphi-Quellcode:
  Settings := TIniFile.Create(GetCurrentDir + '\set.ini')
;
Ja neee, ist schon komisch bei so nem "absoluten" Pfad :stupid:

GetCurrentDir liefert das aktuelle Arbeitsverzeichnis. Das wird durch den OpenDialog verändert. Bist du sicher dass die ini Datei dort liegt?
Nein? Dann solltest du richtige absolute Pfade benutzen ;)

Ginko 24. Jul 2010 20:19

AW: Ini-Datei wird nicht mehr gelesen
 
Danke für die schnelle Antwort, das hier scheint zu gehen.
Delphi-Quellcode:
 Settings := TIniFile.Create( extractfiledir(paramstr(0)) + '\set.ini') ;

mkinzler 24. Jul 2010 20:22

AW: Ini-Datei wird nicht mehr gelesen
 
Ermittelt auch das Verzeichnis, in dem die Exe liegt und nicht das aktuelle Arbeitsverzeichnis

Matze 24. Jul 2010 20:25

AW: Ini-Datei wird nicht mehr gelesen
 
Zitat:

Zitat von mkinzler (Beitrag 1037329)
Ermittelt auch das Verzeichnis, in dem die Exe liegt und nicht das aktuelle Arbeitsverzeichnis

Meinst du nicht, dass er genau das möchte? So habe ich es verstanden, also

Delphi-Quellcode:
Settings := TIniFile.Create(ExtractFilePath(ParamStr(0)) + 'set.ini');
Damit das Verzeichnis (= Verzeichnis, in dem die Exe liegt) gleich bleibt, auch wenn der OpenDialog verwendet wird.

Wo liegt denn die Ini-Datei? Im Verzeichnis deiner Exe?

mkinzler 24. Jul 2010 20:27

AW: Ini-Datei wird nicht mehr gelesen
 
Ja, das will er. Ich wollte ihn damit ja sagen, warum das richtig ist und der ursprüngliche Code nicht

Ginko 24. Jul 2010 20:33

AW: Ini-Datei wird nicht mehr gelesen
 
Stimmt alles einwandfrei, danke euch, so schnell hat man wieder was gelernt, ich dachte schon jetzt habe ich endlich einen Compilerfehler gefunden....:lol:


Alle Zeitangaben in WEZ +1. Es ist jetzt 15:21 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