Delphi-PRAXiS
Seite 2 von 2     12   

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Algorithmen, Datenstrukturen und Klassendesign (https://www.delphipraxis.net/78-algorithmen-datenstrukturen-und-klassendesign/)
-   -   meminifiles, inifiles , einlesen scheitert (https://www.delphipraxis.net/209072-meminifiles-inifiles-einlesen-scheitert.html)

bernhard_LA 22. Okt 2021 16:36

AW: meminifiles, inifiles , einlesen scheitert
 
@himitsu
Zitat:

sämtliche Ressourcenschutzblöche fehlen, kann er es auch selber sein.
was wäre denn hier zu tun ?
eine andere *.ini Datei, im anderen Ordner mit der selben Delphi Anwendung geschieben funktioniert perfekt

bernhard_LA 22. Okt 2021 17:18

AW: meminifiles, inifiles , einlesen scheitert
 
PS: problem gelöst, im der eigentlichen Anwendung wurde der "nur fast" richtige Filename übergeben,super peinlich :shock:

schade , daß ich keine exception bekomme wenn ich aus einer ini Datei lesen, die nicht existiert,

dann wäre der Bug viel früher aufgefallen

Delphi.Narium 22. Okt 2021 17:27

AW: meminifiles, inifiles , einlesen scheitert
 
Delphi-Quellcode:
procedure TForm2.ReadPointlist3Dfile(filename: string);
var
  AptList: TPointList3DAlign;
begin
  if not FileExists(filename) then begin
    MessageDlg(Format('Datei %s wurde nicht gefunden.',[ExtractFileName(Filename)]),mtError,[mbOk],0);
    exit;
  end;
  AptList := TPointList3DAlign.Create;
  try
    AptList.LoadfromFile(filename);
    CopyPointList2Memo(AptList, 'debug 3D', Memo3);
  finally
    AptList.Free; // oder muss AptList nicht freigegben werden???
  end;
end;
Delphi-Quellcode:
procedure TForm2.ReadInifile(filename: string);
var
  aini: TInifile;
  Sections: TStringlist;
begin
  if not FileExists(filename) then begin
    MessageDlg(Format('Datei %s wurde nicht gefunden.',[ExtractFileName(Filename)]),mtError,[mbOk],0);
    exit;
  end;
  aini := TInifile.Create(filename);
  try
    Sections := TStringlist.Create;
    try
      aini.ReadSections(Sections);
      Memo2.Lines.AddStrings(Sections);
    finally
      Sections.Free; // Damit die Freigabe auch bei Fehlern erfolgt.
    end;
  finally
    aini.Free; // Damit die Freigabe auch bei Fehlern erfolgt.
  end;
end;
Wenn in der ursprünglichen Routine einmal ein Fehler auftritt, bleibt (schlimmstenfalls) der Zugriff auf die Datei "Filename" bestehen und wenn Du Pech hast, ist die Datei (dauerhaft) blockiert. (Kommt halt auf die jeweils verwendeten Zugriffsrechte auf Dateiebene an.)

Wenn
Zitat:

eine andere *.ini Datei, im anderen Ordner mit der selben Delphi Anwendung geschieben funktioniert perfekt
, heißt das nicht, dass man auf jegliche Fehlerbehandlung und die gesicherte Freigabe von Objekten, ... verzichten kann.

Fehlerbehandlung und Ressourcenschutzblöcke sind halt nicht für den funktionierenden Normalfall, sondern für die Ausnahmen-/Fehlerbehandlung erforderlich, damit eben auch dann "normal" weitergearbeitet werden kann und nicht "irgendwie, irgendwo, irgendwann" nicht nachvollziehbare "Spätfolgen" auftreten.

venice2 22. Okt 2021 17:35

AW: meminifiles, inifiles , einlesen scheitert
 
Zitat:

PS: problem gelöst, im der eigentlichen Anwendung wurde der "nur fast" richtige Filename übergeben,super peinlich
Fehler wäre nie aufgetreten wenn die Dateinamen bekannt und immer gleich sind diese als Konstante definiert gewesen wären.
Man vertippt sich doch sehr leicht.


Alle Zeitangaben in WEZ +1. Es ist jetzt 15:25 Uhr.
Seite 2 von 2     12   

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