Scheiben auf Disk funktioniert nicht mehr in Win7

Für Fragen von Einsteigern und Programmieranfängern...
Antworten
Marc
Lazarusforum e. V.
Beiträge: 208
Registriert: Fr 11. Nov 2016, 14:09
OS, Lazarus, FPC: Linux Mint 20 (WinXP VBox)
CPU-Target: 64Bit
Wohnort: Schweiz

Scheiben auf Disk funktioniert nicht mehr in Win7

Beitrag von Marc »

Ich habe grade keine Ahnung was los ist. Mein Programm sollte an verschiedenen Stellen Dateien auf die Disk schreiben.
Aber plötzlich funktioniert nichts mehr. Sind gänzlich normale Schreibzugriffe. Die haben vorher alle funktioniert.

Code: Alles auswählen

 
 Try
  AssignFile(fDefaultsDatei, 'defaults.dat');
 // {$I-}
  ReWrite(fDefaultsDatei); {open file to write}
  Write(fDefaultsDatei,DefaultsData);   {saves the data}
  CloseFile(fDefaultsDatei); {close the file}
 // {$I+}
    except
    // If there was an error the reason can be found here
    on E: EInOutError do
    Memo1.Lines.Add('File error : '+ E.Message);
  end;


Wenn ich so // die Schalter wegmache kriege ich RunError(2)
Wenn die Schalter an sind kriege ich keine gar keine Fehlermeldung.
Das 'e.Message ' scheint so nicht zu funktionieren.
Hab ich was in der IDE vertan? Kennt das jemand?
Hab bei Projekteinstellung mal als Zielsystem win64 angegeben, und win32 GUI Anwendung abgewählt.
Hab auch das Projekt mal umbenannt, hilft alles nichts.
Die Disk ist auch nicht voll oder sowas.
Good code comes from experience, experience comes from bad code.

Benutzeravatar
theo
Beiträge: 10467
Registriert: Mo 11. Sep 2006, 19:01

Re: Scheiben auf Disk funktioniert nicht mehr in Win7

Beitrag von theo »

Schon mal mit einem absoluten Pfad probiert?
Ggf auch in diesem Verzeichnis: http://lazarus-ccr.sourceforge.net/docs ... igdir.html

EInOutError wird afaik nur ausgelöst, wenn I/O checking eingeschaltet ist. Das wird das Problem aber auch nicht lösen, da RunError(2) einfach "File not found ist".
https://www.freepascal.org/docs-html/user/userap4.html

Mathias
Beiträge: 6162
Registriert: Do 2. Jan 2014, 17:21
OS, Lazarus, FPC: Linux (die neusten Trunk)
CPU-Target: 64Bit
Wohnort: Schweiz

Re: Scheiben auf Disk funktioniert nicht mehr in Win7

Beitrag von Mathias »

Eine andere Variante ist, die Fehler auf die Klassische Art abzufragen.

Folgender Code gibt bei mir unter Linux ein "Access denied." .
Weil nur den Benutzer Root auf / zugreifen kann.

Code: Alles auswählen

rocedure TForm1.Button1Click(Sender: TObject);
type
  TTest = array[0..4] of byte;
var
  DefaultsData: TTest;
  fDefaultsDatei: file of TTest;
  io: word;
begin
  AssignFile(fDefaultsDatei, '/defaults.dat');
 {$I-}
  ReWrite(fDefaultsDatei); {open file to write}
  Write(fDefaultsDatei, DefaultsData);   {saves the data}
  CloseFile(fDefaultsDatei); {close the file}
 {$I+}
  io := IOResult;
  if io <> 0 then begin
    ShowMessage('File error : ' + IntToStr(io));
  end;
end;

Hier ist der Schlüssel für die Fehlermeldung: https://www.freepascal.org/docs-html/rt ... esult.html

Das wird das Problem aber auch nicht lösen, da RunError(2) einfach "File not found ist".

Ein "File not found" sollte es eigentlich nicht geben, da man eine neue Datei erzeugen will. :roll:
Mit Lazarus sehe ich grün
Mit Java und C/C++ sehe ich rot

Marc
Lazarusforum e. V.
Beiträge: 208
Registriert: Fr 11. Nov 2016, 14:09
OS, Lazarus, FPC: Linux Mint 20 (WinXP VBox)
CPU-Target: 64Bit
Wohnort: Schweiz

Re: Scheiben auf Disk funktioniert nicht mehr in Win7

Beitrag von Marc »

Danke für die Antworten. Hab heute erst mal Frust geschoben.
Habe das ganze in einer Virtual box (unter Linux) am laufen. Vieleicht ist das das Problem.
Ich versuch das jetzt mal in einer richtigen Windows installation.
Good code comes from experience, experience comes from bad code.

Marc
Lazarusforum e. V.
Beiträge: 208
Registriert: Fr 11. Nov 2016, 14:09
OS, Lazarus, FPC: Linux Mint 20 (WinXP VBox)
CPU-Target: 64Bit
Wohnort: Schweiz

Re: Scheiben auf Disk funktioniert nicht mehr in Win7

Beitrag von Marc »

Ich muss da irgendwie was grausam verhauen haben. Unter Windows habe ich denselben Fehler.
Eigenartigerweise kann mein Programm noch Directories erzeugen. Aber keine Files schreiben.
Ich nehm jetzt eine Vorgängerversion (die läuft) und mach einen Timer der alle paar Min ein File schreibt. Nur zum sehen ob es noch geht.
Zuletzt geändert von Marc am Fr 4. Aug 2017, 21:50, insgesamt 1-mal geändert.
Good code comes from experience, experience comes from bad code.

Mathias
Beiträge: 6162
Registriert: Do 2. Jan 2014, 17:21
OS, Lazarus, FPC: Linux (die neusten Trunk)
CPU-Target: 64Bit
Wohnort: Schweiz

Re: Scheiben auf Disk funktioniert nicht mehr in Win7

Beitrag von Mathias »

Ich versuch das jetzt mal in einer richtigen Windows installation.

Das kann ich mir schlecht vorstellen, da du die Datei im Ordner erzeugst, in dem auch dein Programm befindet.
Oder hast du bei den Pfaden bei den Project-Einstellungen rum geschraubt ?
Mit Lazarus sehe ich grün
Mit Java und C/C++ sehe ich rot

Marc
Lazarusforum e. V.
Beiträge: 208
Registriert: Fr 11. Nov 2016, 14:09
OS, Lazarus, FPC: Linux Mint 20 (WinXP VBox)
CPU-Target: 64Bit
Wohnort: Schweiz

Re: Scheiben auf Disk funktioniert nicht mehr in Win7

Beitrag von Marc »

An den Pfaden habe ich nichts verändert. Ich habe versucht das Projekt mit einem anderen Namen zu speichern. Ausserdem hab ich versucht das Icon (diese Tatze) zu ändern.
Aber alles rückgängig gemacht. Ich vermute jetzt mal einen Fehler in meinem Code. Irgendwo in den Variablen die habe ich in einer separaten Unit.
Wahrscheinlich ist mein Program ungewöhlich, desshalb kriege ich ungewöhnliche Fehlermeldungen.
Ich programmiere einfach von der alten Version aus Schritt für Schritt zur Neuen. Dann sollte ich eigentlich sehen ab wann ich Probleme kriege.
Good code comes from experience, experience comes from bad code.

Mathias
Beiträge: 6162
Registriert: Do 2. Jan 2014, 17:21
OS, Lazarus, FPC: Linux (die neusten Trunk)
CPU-Target: 64Bit
Wohnort: Schweiz

Re: Scheiben auf Disk funktioniert nicht mehr in Win7

Beitrag von Mathias »

Habe das ganze in einer Virtual box (unter Linux) am laufen. Vieleicht ist das das Problem.

Sowas könnte das Problem sein. Wie hast du es gelöst, das Windows und Linux gleichzeitig auf dein Projekt zugreifen kann. Evtl. eine NAS ?
Mit Lazarus sehe ich grün
Mit Java und C/C++ sehe ich rot

Marc
Lazarusforum e. V.
Beiträge: 208
Registriert: Fr 11. Nov 2016, 14:09
OS, Lazarus, FPC: Linux Mint 20 (WinXP VBox)
CPU-Target: 64Bit
Wohnort: Schweiz

Re: Scheiben auf Disk funktioniert nicht mehr in Win7

Beitrag von Marc »

Das ganze ist ein Notebook, XP und Win7 laufen in einer Virtual Box und haben je eine externe Harddisk zugewiesen, die effektiv eine Freigabe ist von Linux.
Aber eben in einer realen Windows7 installation habe ich dasselbe Problem gehabt. Liegt wohl schon eher an meinem Code.
Good code comes from experience, experience comes from bad code.

Mathias
Beiträge: 6162
Registriert: Do 2. Jan 2014, 17:21
OS, Lazarus, FPC: Linux (die neusten Trunk)
CPU-Target: 64Bit
Wohnort: Schweiz

Re: Scheiben auf Disk funktioniert nicht mehr in Win7

Beitrag von Mathias »

Aber eben in einer realen Windows7 installation habe ich dasselbe Problem gehabt. Liegt wohl schon eher an meinem Code.

In dem Fall schon.
Mit Lazarus sehe ich grün
Mit Java und C/C++ sehe ich rot

Antworten