![]() |
Dateirechte ermittlen
Hi ich hab ein kleines Problem:
Dazu erst mal ein kleiner Codeschnipsel:
Delphi-Quellcode:
Dieser Code soll in verschiedenen Dateien nach einem Text suchen.
Function SearchInFile(FileName: String; SearchOpts: TSearchOpts): Boolean;
Var TexFile: TStringList; Begin result := false; If (FileGetSize(FileName) > SearchOpts.MaxSInFileSize) And (SearchOpts.MaxSInFileSize > 0) Then exit; TexFile := TStringList.create; Try TexFile.LoadFromFile(FileName); If Pos(SearchOpts.seekStr, TexFile.CommaText) <> 0 Then result := true; Finally TexFile.Free; End; End; Mein Problem ist jetzt jedoch, dass es vorkommt, dass mein Programm keine Leserechte hat, was einen Fehler auslöst. Hat vllt. einer ne idee, wie ich das vorher prüfen kann? MFG Björn |
Re: Dateirechte ermittlen
Villeicht hilft dir da Try Except.
|
Re: Dateirechte ermittlen
schon probiert
dann kommt trotzdem ne Meldung: Datei <...> kann nicht geöffnet werden. Der Prozess kann nicht auf Die Datei zugreifen, da sie von einem anderen Prozess verwendet wird. |
Re: Dateirechte ermittlen
Such mal im Forum nach Except(ion) ... diese Meldung wird vom Debugger angezeigt und ist nicht im Programm sichtbar (heißt dann, wenn es nicht im Debugger ausgeführt wird)
Und in den Debuggeroptionen kannst du notfalls die Anzeige derartiger Meldungen steuern.
Delphi-Quellcode:
[/quote]
Function SearchInFile(FileName: String; SearchOpts: TSearchOpts): Boolean;
Var TexFile: TStringList; Begin Result := false; If (SearchOpts.MaxSInFileSize > 0) and (FileGetSize(FileName) > SearchOpts.MaxSInFileSize) Then Exit; Try TexFile := TStringList.create; Try TexFile.LoadFromFile(FileName); Result := Pos(SearchOpts.seekStr, TexFile.CommaText) <> 0; Finally TexFile.Free; End; Except //Result := false; {viele mögen e nicht, wenn die Exception nicht bearbeitet wird, aber Result ist ja schon False ^_^ } End; End; |
Re: Dateirechte ermittlen
Hallo olee,
bevor Du Die Datei öffnest machs Du folgendes:
Delphi-Quellcode:
mußt Du aber noch testen sollte aber funktionieren.
function ISFILEREADABLE(dateiname:string):boolean;
var edat textfile; dummy : string; amode : byte; begin amode:=filemode; filemode:=0; {readonly} assgnfile(edat,dateiname); {$I-} reset(edat); {$I+} if ioresult>0 then begin result:=false; exit; end; {$I-} readln(edat,dummy); cosefile; {$I+} if ioresult>0 then result:=false else result:=true; end; Mit $I fummelst Du an den Compilerschaltern herum die solltest Du zuerst checken. Wenn Du den IO-Check bglobal ausschaltest, muß Du nach JEDER I/O-Operation IORESULT abfragen! Gruß K-H |
Re: Dateirechte ermittlen
Ahh danke!
Ich habe nicht gewusst, dass ein try..finally block die exeptions anders abfängt als ein try..except block Habs geändert und jetzt klappt es thx. Das Ergebnis dieser Arbeit (und einiges mehr) ist als gemeinsames Projekt mit custom noch in Entwicklung und bald dürften die ersten Ergebnisse zu sehen sein *Spannung-mach* |
Re: Dateirechte ermittlen
Danke p80286 aber das problem hats scih gelöst.
Es ging ja nur darum dass meine (Such)-Prozedur nicht durch so eine kleine Exception verlassen wird. D.h. ich muss nicht unbedingt genau die Leserechte prüfen. Aber trotzdem DANKE für die Hilfe! MFG Björn |
Re: Dateirechte ermittlen
Zitat:
und zurückgesetzt wird er bei Abruf von IORESULT. |
Re: Dateirechte ermittlen
Zitat:
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 11:42 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