Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi Zugriff durch Programm von CD (auf Datei) funktioniert nicht (https://www.delphipraxis.net/65613-zugriff-durch-programm-von-cd-auf-datei-funktioniert-nicht.html)

fwsp 18. Mär 2006 20:37


Zugriff durch Programm von CD (auf Datei) funktioniert nicht
 
hallo

ich hab ein da ein projekt, welches ich mit jemanden zusammen entwickel. ich hab da also ein nicht selbst-geschriebenes modul. darin werden fragebögen geladen und dann die fragen gestellt. wenn ich das programm normal auf der festplatte ausführ, klappt es wunderbar. wenn ich das auf ne cd (.iso) mache, kann ich keine fragebögen-dateien mehr öffnen.

da ich das nicht durch debuggen kann, hat jemand ne idee wieso das auf der platte klappt und auf ner cd nicht? es wird beim lese-zugriff doch nicht geschrieben?

danke

der teil wo der öffnen-button geklickt wird.
Delphi-Quellcode:
  if OpenDialog1.Execute then
  begin

    try
      if ExtractFileExt(OpenDialog1.FileName) <> '.mcq' then
        raise EInvalidInsert.Create('Fehler beim Laden der Datei "' + OpenDialog1.FileName + '!');
      Fragebogen.OeffneFragebogen(OpenDialog1.FileName);
    except
      ShowMessage('Fehler beim Laden der Datei ' + OpenDialog1.FileName + '!');
      Exit;
    end;
öffnen prozedur der klasse
Delphi-Quellcode:
  procedure TMCQData.OeffneFragebogen(DateiName: string);
  var
    I: integer;
  begin
    Assign(Datei, DateiName);
    try
      Reset(Datei);
    except
      Rewrite(Datei);
    end;

    SetLength(Fragen, FileSize(Datei));

    I := 0;
    while not(Eof(Datei)) do
     begin
      Read(Datei, Fragen[I]);
      inc(I);
     end;

    Close(Datei);
  end;

m_junglas 18. Mär 2006 21:45

Re: Zugriff durch Programm von CD (auf Datei) funktioniert n
 
Namt,

ich hatte ein ähnliches Problem, ist aber sehr lange her.
Die Lösung war die globale Variable "FileMode".

Default ist hier "fmOpenReadWrite" (=2) und das löst auch bei einfachen Lesezugriffen einen Fehler bei schreibgeschützten Dateien aus.
Setze es vorher auf "fmOpenRead" (=0) und dann sollte es gehen.

Vielleicht hilft Dir das weiter.
Schau Dir das lieber erstmal nochmal in der Hilfe an.

Tschüss

/\/\arcus

Hepdepaddel 18. Mär 2006 21:50

Re: Zugriff durch Programm von CD (auf Datei) funktioniert n
 
Hi,

mal so aus der Delphi-hilfe zitiert:

---

In Delphi öffnet Reset die in F angegebene externe Datei in dem Modus, der in der globalen Variable FileMode festgelegt ist. Ist keine Datei mit diesem Namen vorhanden oder kann die Datei nicht im aktuellen Dateimodus geöffnet werden, tritt ein Fehler auf. Ist F bereits offen, wird sie zuerst geschlossen und dann erneut geöffnet. Nach dem Öffnen wird der Dateizeiger an den Anfang der Datei gesetzt.

Warnung: Der Standardwert von FileMode ist 2 (Lesen/Schreiben). Auch wenn die Datei nur gelesen werden soll, verursacht der Standardwert von FileMode (Schreib-/Lesezugriff), dass das Öffnen einer schreibgeschützten Datei fehlschlägt.

---

Da hier FileMode nicht gesetzt wurde, wird also ein Schreib-/Lesezugriff versucht, was fehlschlagen muss. Das sollte klappen:


try
FileMode:=fmOpenRead; // READONLY
Reset(Datei);
except
Rewrite(Datei); // DAS WIRD AUF CD IMMER SCHEITERN, LIEBER EINE MELDUNG "BOGEN FEHLT"
end;




Gruß

Mark

---
Zwei bis drei Stunden Trial-and-Error können locker 10 Minuten Handbuch-Studium einsparen

fwsp 19. Mär 2006 09:27

Re: Zugriff durch Programm von CD (auf Datei) funktioniert n
 
danke sehr, funktioniert wunderbar.


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