AGB  ·  Datenschutz  ·  Impressum  







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

Dateirechte ermittlen

Ein Thema von olee · begonnen am 1. Aug 2008 · letzter Beitrag vom 1. Aug 2008
Antwort Antwort
Benutzerbild von olee
olee

Registriert seit: 16. Feb 2008
Ort: Boppard
540 Beiträge
 
Turbo Delphi für Win32
 
#1

Dateirechte ermittlen

  Alt 1. Aug 2008, 17:15
Hi ich hab ein kleines Problem:

Dazu erst mal ein kleiner Codeschnipsel:
Delphi-Quellcode:
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;
Dieser Code soll in verschiedenen Dateien nach einem Text suchen.

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
Björn Zeutzheim
  Mit Zitat antworten Zitat
Darkface

Registriert seit: 18. Apr 2008
89 Beiträge
 
Delphi XE Professional
 
#2

Re: Dateirechte ermittlen

  Alt 1. Aug 2008, 17:22
Villeicht hilft dir da Try Except.
Alexander
  Mit Zitat antworten Zitat
Benutzerbild von olee
olee

Registriert seit: 16. Feb 2008
Ort: Boppard
540 Beiträge
 
Turbo Delphi für Win32
 
#3

Re: Dateirechte ermittlen

  Alt 1. Aug 2008, 17:30
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.
Björn Zeutzheim
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.063 Beiträge
 
Delphi 12 Athens
 
#4

Re: Dateirechte ermittlen

  Alt 1. Aug 2008, 17:53
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:
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;
[/quote]
Neuste Erkenntnis:
Seit Pos einen dritten Parameter hat,
wird PoSex im Delphi viel seltener praktiziert.
  Mit Zitat antworten Zitat
Benutzerbild von p80286
p80286

Registriert seit: 28. Apr 2008
Ort: Stolberg (Rhl)
6.659 Beiträge
 
FreePascal / Lazarus
 
#5

Re: Dateirechte ermittlen

  Alt 1. Aug 2008, 18:00
Hallo olee,

bevor Du Die Datei öffnest machs Du folgendes:
Delphi-Quellcode:
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;
mußt Du aber noch testen sollte aber funktionieren.
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
  Mit Zitat antworten Zitat
Benutzerbild von olee
olee

Registriert seit: 16. Feb 2008
Ort: Boppard
540 Beiträge
 
Turbo Delphi für Win32
 
#6

Re: Dateirechte ermittlen

  Alt 1. Aug 2008, 18:00
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*
Björn Zeutzheim
  Mit Zitat antworten Zitat
Benutzerbild von olee
olee

Registriert seit: 16. Feb 2008
Ort: Boppard
540 Beiträge
 
Turbo Delphi für Win32
 
#7

Re: Dateirechte ermittlen

  Alt 1. Aug 2008, 18:02
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
Björn Zeutzheim
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.063 Beiträge
 
Delphi 12 Athens
 
#8

Re: Dateirechte ermittlen

  Alt 1. Aug 2008, 19:48
Zitat:
muß Du nach JEDER I/O-Operation IORESULT abfragen
muß man nicht, den der wert wird nur bei einem Fehler gesetzt
und zurückgesetzt wird er bei Abruf von IORESULT.
Neuste Erkenntnis:
Seit Pos einen dritten Parameter hat,
wird PoSex im Delphi viel seltener praktiziert.
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#9

Re: Dateirechte ermittlen

  Alt 1. Aug 2008, 21:37
Zitat von olee:
Ich habe nicht gewusst, dass ein try..finally block die exeptions anders abfängt als ein try..except block
finally fängt keine Fehler ab, es stellt nur sicher, dass der Code im finally-Abschnit auch bei einem Ausnahemefehler ausgeführt wird.
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
Antwort Antwort


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 06:45 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