Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi ini.writestring abfangen möglich? (https://www.delphipraxis.net/61648-ini-writestring-abfangen-moeglich.html)

Ajintaro 24. Jan 2006 14:46


ini.writestring abfangen möglich?
 
Hallo Coder!

Ich hab nur 2 harmlose aber nervige Problemchen:

Delphi-Quellcode:
//--> INIFILE
    try

    Ini:=TIniFile.Create(logfile);
    ini.WriteString('DZE','Version',version);
    Ini.WriteString('DZE','Session started',DateTimeToStr(Now)+ ' Uhr');

  finally
    Ini.Free;
 end;
Wenn das logfile schreibgeschützt ist, fliegt die Routine auf die Nase und der Anwender bekommt eine hässliche Fehlermeldung. Kann man das nicht vorher abfangen?

Versucht habe ich es mit einer Überprüfung des FileAtrributes. Aber das Setzen des Fileattributes geht net richtig weil ich nicht weiss ob es ein Typecast von String zu PAnsiChar gibt:

Delphi-Quellcode:
begin
  if SetFileAttributes('C:\AutoExec.bat',
                       FILE_ATTRIBUTE_NORMAL) then
    Showmessage('Attribut wurde geändert')
  else
    Showmessage('Attribut wurde nicht geändert');
end;
Der String 'C:\Autoexec.bat' wird akzeptiert, aber meine Variable logfile wird angemotzt.

Das Logfile ist ein String
logfile:=GetWinDir+'\'+inifile;

Lieg ich da völlig daneben?

Gollum 24. Jan 2006 15:13

Re: ini.writestring abfangen möglich?
 
Hallo,

Zitat:

Zitat von Ajintaro
...nicht weiss ob es ein Typecast von String zu PAnsiChar gibt:

gibt es, indem Du den String in einen PChar wandelst:
Delphi-Quellcode:
  logfile:=GetWinDir+'\'+inifile;
  if SetFileAttributes(PChar(logfile), FILE_ATTRIBUTE_NORMAL) then
  ...

ManuMF 24. Jan 2006 15:16

Re: ini.writestring abfangen möglich?
 
Funktioniert Delphi-Referenz durchsuchentry...except bei INIs nicht?

Gruß,
ManuMF

Ajintaro 24. Jan 2006 17:38

Re: ini.writestring abfangen möglich?
 
Typenumwandlung mit PChar hat funktioniert!

Natürlich kann man try except auch bei ini files anwenden, aber die error Message des Systems (kann schreibgeschützte Datei nicht schreiben) kommt bevor mein finally Block abgearbeitet wird - ich möchte ja im Falle eines Fehlers den Speicher wieder freigeben (ini.free)

ManuMF 24. Jan 2006 17:50

Re: ini.writestring abfangen möglich?
 
Ich meinte Try-except im try-finally. Der Finally-Block wird trotzdem auf jeden Fall ausgeführt, soweit ich weiß.

Gruß,
ManuMF

[edit]vertippt[/edit]

marabu 24. Jan 2006 19:15

Re: ini.writestring abfangen möglich?
 
Hallo Ajintaro,

du arbeitest hoffentlich mit TMemIniFile. Den Schreibschutz beim Zurückschreiben mit .UpdateFile() kannst du leicht mit der Funktion FileIsReadOnly() feststellen - es muss nicht erst knallen.

Grüße vom marabu

Ajintaro 25. Jan 2006 12:04

Re: ini.writestring abfangen möglich?
 
Zitat:

Zitat von marabu
Hallo Ajintaro,
du arbeitest hoffentlich mit TMemIniFile.

Hmm eigentlich arbeite ich mit TIniFile. Ich muss mal nachschlagen was genau bzw worin der Unterschied zum TMemIniFile ist.


Alle Zeitangaben in WEZ +1. Es ist jetzt 10:18 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 by Thomas Breitkreuz