AGB  ·  Datenschutz  ·  Impressum  







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

Fehlermeldung bei Schreiben nach CSIDL_APPDATA

Ein Thema von Bjoerk · begonnen am 15. Apr 2011 · letzter Beitrag vom 16. Apr 2011
 
Bjoerk

Registriert seit: 28. Feb 2011
Ort: Mannheim
1.384 Beiträge
 
Delphi 10.4 Sydney
 
#1

Fehlermeldung bei Schreiben nach CSIDL_APPDATA

  Alt 15. Apr 2011, 17:42
Delphi-Version: 5
Die folgende Routine ist Bestandteil eines iniFile Parsers. SaveFile ist gelegentlich (!?) false. Ich suche schon seit Wochen, in den Apps kann ich jedoch keine Fehler entdecken. Dateien vom Typ TStrIniFile werden procdure intern vereinbart, erzeugt und freigegegen. Bei free wird ggf. SaveToFile aufgerufen. Ich bin mir sicher, daß innerhalb von TStrInfile kein Fehler ist.
Delphi-Quellcode:
function TStrIniFile.SaveFile : boolean;
var
  f: TextFile;
  i: integer;
begin
  RESULT:=false;
  AssignFile(f,FileName);
  {$I-} Rewrite(f); {$I+}
  if IoResult=0 then
  begin
    RESULT:=true;
    for i:=0 to Count-1 do
    begin
      if i>0 then
        if posIS[i]<0 then writeln(f);
      writeln(f,item[i]);
    end;
    closeFile(f);
  end;
  sleep(10);
  *** if not RESULT then ***
    MessageDlg(application.ExeName+': '+FileName+' is not ready for WRITE.',mtWarning,[mbOk],0);
end;

procedure TStrIniFile.UpdateFile;
begin
  if FileName<>'then
  begin
    SaveFile;
    IniFileChanged:=false;
  end;
end;

destructor TStrIniFile.Destroy;
begin
  if IniFileChanged then UpdateFile;
  inherited;
end;
Das Verzeichnis der Dateien ist:
verzA:=VerzMitSlash(trim(GetShellFolderPath(CSIDL_APPDATA)))+'Abel\'; Ein Hauptmenu wird mit einem {$R Adminrechte.res} gestartet und ruft die verschiedenen Apps so auf:
Delphi-Quellcode:
rocedure TForm101.ExecuteWinFileAndWait(Prozess: String);
var SI: TStartupInfo;
    PI: TProcessInformation;
begin
  screen.cursor:=crAppStart;
  FillChar(SI, SizeOf(SI), 0);
  SI.cb:= SizeOf(SI);
  SI.wShowWindow:= SW_SHOWNORMAL;
  if not CreateProcess(nil,PChar(Prozess),nil,nil,false,NORMAL_PRIORITY_CLASS,nil,PChar(VerzE),SI,PI) then
  begin
    messagedlg('... kann den Prozess nicht ausführen.',mterror,[mbok],0);
    EscDateiAnlegen;
  end
  else
  Begin
    WaitForSingleObject(PI.hProcess,INFINITE);
  End;
  screen.cursor:=crdefault;
end;
Woran könnte das liegen, daß es ab und zu nicht geht? Alle Ideen sind willkommen. // D2007
  Mit Zitat antworten Zitat
 


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 05:32 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