Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Win32/Win64 API (native code) (https://www.delphipraxis.net/17-win32-win64-api-native-code/)
-   -   Delphi IOResult ohne Schreibrechte auf EXE Pfad??? (https://www.delphipraxis.net/40815-ioresult-ohne-schreibrechte-auf-exe-pfad.html)

mrose 21. Feb 2005 14:54


IOResult ohne Schreibrechte auf EXE Pfad???
 
Hallo!

In einer Routine versuche ich ein RichEdit nicht über die Methode LoadFromFile mit den Inhalten einer Textdatei zu laden, da ich ständig große Dateien hatte und mir diese Methode dann immer einfach die Datei abgeschnitten hat. Nun habe ich eine eigene Routie in dem Stil (bei mir macht sie noch etwas mehr) geschrieben:


Delphi-Quellcode:
  procedure LoadRichEdit(var RichEdit:TRichEdit; FileNameRich:String);

  begin
    {$I-}
    // clear richedit
    Richedit.Lines.Clear;
    // open file to load
    AssignFile(xTmpFile,FileNameRich);
    Reset(xTmpFile);
    if IOResult = 0 then
    begin
      while not(eof(xTmpFile)) do
      begin
        // read one line
        readln(xTmpFile,sTempLine);
        RichEdit.Lines.Add(sTempLine);
      end;
      CloseFile(xTmpFile);
    end;
    RichEdit1.SelStart := 0;
    RichEdit1.Sellength := 0;
    {$I+}
  end;
Das funktioniert auch hervorragend, solange der eingeloggte Benutzer Schreibrechte auf die Directory hat, in welcher sich meine Programmexe befindet. Das zu lesende File befindet sich aber NICHT an diesem Platz. Gehe ich mit dem Debugger schrittweise durch das Programm, dann scheint es, das das IOResult immer <> 0 ist, sobald die Schreibrechte auf die Programmexe Directory abgeschaltet sind.

Kann mir bitte jemand erklären, was ich falsch mache??? Vielleicht bin ich ja auch nur zu blind.... Vielen Dank schon mal!

Matthias.

Luckie 21. Feb 2005 15:06

Re: IOResult ohne Schreibrechte auf EXE Pfad???
 
Delphi-Referenz durchsuchenReset öffnet die Datei immer mit Lese- und Schreibrechten. Setze vor die Variable Delphi-Referenz durchsuchenFileMode entsprechend.

BTW kann ich dein Problem micht nachvollziehen. Und wenn dann würde ich es mit Delphi-Referenz durchsuchenLoadFromStream probieren, anstatt dieser veralteten Pascal Methode.

Muetze1 21. Feb 2005 17:37

Re: IOResult ohne Schreibrechte auf EXE Pfad???
 
Moin!

Und beachten das bei eingeschalteter IO Überprüfung er eine Exception schmeisst anstatt IOResult zu setzen!

/EDIT: Sehe gerade das du es für die gesamte Routine abgeschaltet hast.

MfG
Muetze1

mrose 23. Feb 2005 20:29

Re: IOResult ohne Schreibrechte auf EXE Pfad???
 
Sorry, ich bin doch blind. Naürlich funktioniert der Code richtig. Mein Problem lag an einer ganz anderen Stelle. Das IOResult ist global und eine andere Routine in einer anderen Unit der Application erzeugt, leider so ziemlich zur selben Zeit, ein IO Problem und damit wird mir das IOResult verbogen..... Nachdem ich das identifiziert und gefixt hatte lief alles...
Danke auf jeden Fall für die Hilfe!

Matthias.

P.S.:
Buy a computer today and get the thrill of making your own errors - electronically...

Luckie 24. Feb 2005 14:20

Re: IOResult ohne Schreibrechte auf EXE Pfad???
 
Zitat:

Zitat von mrose
Das IOResult ist global und eine andere Routine in einer anderen Unit der Application erzeugt, leider so ziemlich zur selben Zeit, ein IO Problem und damit wird mir das IOResult verbogen

Nach dem du gesehen hast, was solche gloabalen Deklarationen anrichten können, hoffe ich, dass du das ganz fix geändert hast.


Alle Zeitangaben in WEZ +1. Es ist jetzt 17:55 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