![]() |
meminifiles, inifiles , einlesen scheitert
ich habe schon wieder ein Probleme beim Einlesen von *.ini files,
der Code wurde auf TMemInifile umgestellt, allerdings das Einlesen klappt nur bei ~50 % alles Infiles, Im Notepad sehen alle Files sinnvoll aus, die Files werden aus einer Delphi Anwendung heraus geschrieben mit der Klasse TInifile.
Delphi-Quellcode:
function ReadINIString(filename: string; SectionStr: string;
IdentStr: String): string; var IniFile: TMemIniFile; begin if FileExists(filename) then begin IniFile := TMemIniFile.Create(filename); try Result := IniFile.ReadString(SectionStr, IdentStr, '<none>'); finally IniFile.Free; end; end else begin Result := '<no file found>'; end; end; Frage : hat jemand eine Anwendung / Code mit der ich eine *.ini Datei prüfen kann ob sie erfolgreich gelesen werden kann ? |
AW: meminifiles, inifiles , einlesen scheitert
Zitat:
|
AW: meminifiles, inifiles , einlesen scheitert
leider unmöglich ... Firmen interne Daten :-(
|
AW: meminifiles, inifiles , einlesen scheitert
Ini-Dateien sind echt kein Hexenwerk, das TMemIniFile ist im Endeffekt nur eine StringList. Schau doch im Debugger einfach ob er den Kram richtig einliest oder ob z.B. beim Encoding was quer hängt.
|
AW: meminifiles, inifiles , einlesen scheitert
Vor allem prüfe das Daten Format mit dem die Ini Dateien geschrieben wurden.
Mit UltraEdit geht das gut. Steht unten in der Status Zeile. DOS, UNIX oder what ever |
AW: meminifiles, inifiles , einlesen scheitert
Wie groß sind die Dateien?
5 Zeilen? 50 Zeilen? 5000 Zeilen? 50000000 Zeilen? Dateigröße in Byte, KByte, ... TByte? Zeichensatz: Schreiben OEM Lesen UTF8? Schreiben ANSI Lesen UTF8? ... Schreiben UTF8 Lesen ANSI? Schreiben UTF8 Lesen OEM? Oder was auch immer? Klappt es einfach nur nicht oder gibt es auch 'ne Fehlermeldung? Wo ist die Fehlerbehandlung? Außerhalb von ReadINIString? Würde da mal noch ein Try Except end mit einbauen. |
AW: meminifiles, inifiles , einlesen scheitert
Bis zu einer bestimmten Version wurde beim Einlesen abgebrochen, wenn in der Datei /Stream ein #0 vorkommt.
In XE7 ist das so und bei 10.4 nicht mehr. Erkennbar ist das in der System.Classes in der Methode
Delphi-Quellcode:
Ich würde da mal einen Haltepunkt setzen oder mit dem Hex-Editor (HxD) nach #0 suchen.
procedure TStrings.SetTextStr
... while P^ <> #0 do ... |
AW: meminifiles, inifiles , einlesen scheitert
das Problem liegt vlt. doch nicht an den Files ....
ich habe eine Mini-Testprogramm geschrieben , in diesem Falle klappt das einlesen der Sections, welches in der echten Anwendung fehlschlägt
Delphi-Quellcode:
procedure TForm2.ReadPointlist3Dfile(filename: string);
var AptList: TPointList3DAlign; begin AptList := TPointList3DAlign.Create; AptList.LoadfromFile(filename); CopyPointList2Memo(AptList, 'debug 3D', Memo3); end; procedure TForm2.ReadPointlistfile(filename: string); var AptList: TPointlist; begin AptList := TPointlist.Create; AptList.LoadfromFile(filename); CopyPointList2Memo(AptList, 'debug 2D ', Memo3); AptList.SavetoFile(filename); end; procedure TForm2.ReadInifile(filename: string); var aini: TInifile; Sections: TStringlist; begin aini := TInifile.Create(filename); Sections := TStringlist.Create; aini.ReadSections(Sections); Memo2.Lines.AddStrings(Sections); aini.Free; Sections.Free; end; procedure TForm2.Button1Click(Sender: TObject); begin if OpenDialog1.Execute() then begin Memo1.Lines.LoadfromFile(OpenDialog1.filename); ReadInifile(OpenDialog1.filename); ReadPointlistfile(OpenDialog1.filename); ReadPointlist3Dfile(OpenDialog1.filename); end; end; end. Das nun existierende Problem, die eigentliche Anwendung führt auch nur diese 3 Schritte aus (und natürlich viele anderr ...) schlägt weiterhin fehl.
Delphi-Quellcode:
im Debugging zeigt sich , daß bei AptList.LoadfromFile(filename); keine Sections gefunden werden .....AptList := TPointList3DAlign.Create; AptList.LoadfromFile(filename); CopyPointList2Memo(AptList, 'debug 3D', Memo3); |
AW: meminifiles, inifiles , einlesen scheitert
Vielleicht ist die Datei noch von einer anderen Anwendung gesperrt oder sowas in der Art.
|
AW: meminifiles, inifiles , einlesen scheitert
Da hier sämtliche Ressourcenschutzblöche fehlen, kann er es auch selber sein.
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 14:07 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz