ich hab ernste Probleme mit dem Schreiben in eine INI Datei.
Die EXE aus der IDE aufgerufen bringt in 9 von 10 Fällen Scheinbar wird angenommen dass die Datei von irgendeinem Programm gesperrt ist -- wird aber höchstens im Explorer angezeigt. Und auch ganz ohne Explorer kommt der Schreibfehler.
Die EXE direkt aufgerufen hab ich jetzt 5 mal getestet, da ging es jedesmal.
Code hab ich beigelegt, aber ich bezweifle dass es an dem liegt.
FoSettings.TSettingsTable ist ein TBufDataset
Win 10/64
Code: Alles auswählen
function TSettingsReadWrite_INI.WriteToIni: boolean;
var
  MyIni:TIniFile;
  oSections:TStringlist;
  iCounter:integer;
  bFound:boolean;
  Options:TLocateOptions;
  sSection:string;  //Sectionname
  sBackupFile:string;
begin
  iCounter:=0;
  if not assigned(FoSettings) then
    raise Exception.Create('File: ' + {$INCLUDE %FILE%} + LineEnding +
                           'Methodname: ' +  {$I %CURRENTROUTINE%} + LineEnding +
                           'Linenumber: ' + {$INCLUDE %LINE%} + LineEnding +
                           '__ FoSettings ist nicht initialisiert');
  if FileExists(FsIniFileName) then
  begin
    if MessageDlg('Frage', 'Die Datei '+FsIniFileName+ ' existiert --- Überschreiben?', mtConfirmation,
     [mbYes, mbNo],0) = mrYes
    then begin
      sBackupFile := FsIniFileName;
      if not CreateBackupFile(sBackupFile) then
         raise Exception.Create('File: ' + {$INCLUDE %FILE%} + LineEnding +
                       'Methodname: ' +  {$I %CURRENTROUTINE%} + LineEnding +
                       'Linenumber: ' + {$INCLUDE %LINE%} + LineEnding +
                       ' Es konnte kein Backup der Datei '+FsIniFileName+' erstellt werden');
      if not DeleteFile(FsIniFileName) then
         raise Exception.Create('File: ' + {$INCLUDE %FILE%} + LineEnding +
                       'Methodname: ' +  {$I %CURRENTROUTINE%} + LineEnding +
                       'Linenumber: ' + {$INCLUDE %LINE%} + LineEnding +
                       ' Datei '+FsIniFileName+' kann nicht gelöscht werden');
    end
    else
      exit;
  end;
  MyIni := TIniFile.Create(FsIniFileName);
  FoSettings.TSettingsTable.DisableControls;
    FoSettings.TSettingsTable.First;
  while not FoSettings.TSettingsTable.EOF do begin
    inc(iCounter);
    {Nach folgendem Muster wird einiges in die INI Datei geschrieben
	hier nur exemplarisch }
    MyIni.WriteString(sSection, 'section', sSection);
    MyIni.WriteString(sSection, 'name', FoSettings.TSettingsTable.FieldByName('name').AsString);
    MyIni.WriteInteger(sSection, 'primid', iPrimID);
    MyIni.WriteInteger(sSection, 'parentid', FoSettings.TSettingsTable.FieldByName('parentid').AsInteger);
    MyIni.WriteInteger(sSection, 'layoutspacebefore', FoSettings.TSettingsTable.FieldByName('layoutspacebefore').Asinteger);
    MyIni.WriteInteger(sSection, 'layoutspaceafter', FoSettings.TSettingsTable.FieldByName('layoutspaceafter').Asinteger);
    MyIni.WriteInteger(sSection, 'layoutradiocolumns', FoSettings.TSettingsTable.FieldByName('layoutradiocolumns').Asinteger);
    MyIni.WriteString(sSection, 'layoutlabelposition', FoSettings.TSettingsTable.FieldByName('layoutlabelposition').AsString);
    FoSettings.TSettingsTable.Next;
  end;
  FoSettings.TSettingsTable.EnableControls;
  result:=true;
end;

 
 
 Verein
Verein 
 Links
Links Suche
Suche