AGB  ·  Datenschutz  ·  Impressum  







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

Explorer stürzt ab

Ein Thema von Amateurprofi · begonnen am 19. Apr 2006 · letzter Beitrag vom 19. Apr 2006
Antwort Antwort
Amateurprofi

Registriert seit: 17. Nov 2005
Ort: Hamburg
1.077 Beiträge
 
Delphi XE2 Professional
 
#1

Explorer stürzt ab

  Alt 19. Apr 2006, 04:23
Ich habe ein eigenartiges Problem mit dem Windows-Explorer.
Ich erstelle eine Datei mit FileCreate (bzw. öffne sie mit FileOpen, wenn sie schon existiert), fülle sie mit FileWrite und schließe sie mit FileClose.
Wenn ich dann im Explorer die Datei rechtsklicke (um über Eigenschaften die exakte Größe zu sehen) oder linksklicke, z.b. um sie zu löschen, stürzt der Explorer ab.

Im Programm läuft das so, daß ein Datenpuffer (ca. 16 Mb) gefüllt wird, und dann, wenn seine Kapazität erschöpft ist auf die Platte geschrieben wird. Es ist sichergestellt, daß die Datei unmittelbar vor dem Schreiben geöffnet wird und unmittelbar danach wieder geschlossen wird. Es ist auch sichergestellt, daß während dieser Zeit keine anderen Dateien gelesen oder geschrieben werden oder auch nur geöffnet sind.

Wenn ich das ganze wie unten simuliere, tritt das Problem nicht auf.

Hat jemand eine Idee, was solche Probleme verursachen könnte?

Danke.

Delphi-Quellcode:
PROCEDURE TMain.Test;
const
   buffersize=16800000; // ca. 16 Mb und durch 2..8 teilbar
   maxfilesize=22000000000; // min High(cardinal)*5 wird benötigt
   filename='Test.dat';
type
   TData=Array[0..maxint div 8-1] of int64;
   TPData=^TData;
var
   pdata:TPData;
   fh,buffercount:integer;
   fsize,freesize,freecount:int64;
   dsn:string;
begin
   GetMem(pdata,buffersize);
   // Hier wird pdata mit Daten gefüllt, die Anzahl der zu sichernden
   // Int64 Werte steht dann in buffercount
   // Zur Vereinfachung hier auf 2 Mio gesetzt
   buffercount:=2000000;
   dsn:=ExtractFilePath(paramstr(0))+filename;
   if FileExists(dsn) then begin
      fh:=FileOpen(dsn,fmOpenWrite);
   end else begin
      fh:=FileCreate(dsn);
   end;
   if fh>=0 then begin
      fsize:=FileSeek(fh,Int64(0),2); // Dateizeiger ans Ende
      freesize:=maxfilesize-fsize;
      if freesize>0 then begin
         freecount:=freesize div 8;
         if buffercount>freecount then buffercount:=freecount;
         FileWrite(fh,pdata[0],buffercount*8);
      end;
   end;
   FileClose(fh);
   FreeMem(pdata);
end;
Gruß, Klaus
Die Titanic wurde von Profis gebaut,
die Arche Noah von einem Amateur.
... Und dieser Beitrag vom Amateurprofi....
  Mit Zitat antworten Zitat
marabu

Registriert seit: 6. Apr 2005
10.109 Beiträge
 
#2

Re: Explorer stürzt ab

  Alt 19. Apr 2006, 09:09
Hallo Klaus,

tritt das Problem auch noch auf, wenn du beim Öffnen der Datei einen passenden Share-Modus angibst?

Grüße vom marabu
  Mit Zitat antworten Zitat
Amateurprofi

Registriert seit: 17. Nov 2005
Ort: Hamburg
1.077 Beiträge
 
Delphi XE2 Professional
 
#3

Re: Explorer stürzt ab

  Alt 19. Apr 2006, 16:54
Danke, marabu

ich habs mit
 fh:=FileOpen(dsn,fmOpenWrite or fmShareDenyNone); versucht, ohne Erfolg - leider
Gruß, Klaus
Die Titanic wurde von Profis gebaut,
die Arche Noah von einem Amateur.
... Und dieser Beitrag vom Amateurprofi....
  Mit Zitat antworten Zitat
Hawkeye219

Registriert seit: 18. Feb 2006
Ort: Stolberg
2.227 Beiträge
 
Delphi 2010 Professional
 
#4

Re: Explorer stürzt ab

  Alt 19. Apr 2006, 19:26
Hallo Klaus,

möglicherweise "erkennt" eine Explorererweiterung (ShellExtension) ja die Datei an ihrer Namenserweiterung ".dat" und versucht die darin enthaltenen Daten zu interpretieren. Bei Deinem Testprogramm ist die Datei mit 0-Bytes gefüllt, was offenbar keine Probleme verursacht.

Zu Testzwecken würde ich der Datei eine andere Namenserweiterung geben (z.B. ".klaus" ). Vielleicht tritt der Fehler dann nicht mehr auf.

Gruß Hawkeye
  Mit Zitat antworten Zitat
Amateurprofi

Registriert seit: 17. Nov 2005
Ort: Hamburg
1.077 Beiträge
 
Delphi XE2 Professional
 
#5

Re: Explorer stürzt ab

  Alt 19. Apr 2006, 22:10
Hallo Hawkeye,
Danke für den Tip. Das scheint es gewesen zu sein.
Als Defaultprogramm glaubt der Explorer (bei mir) den Editor verwenden zu müssen.
Und offensichtlich wird der bereits aufgerufen, wenn er noch gar nicht gefragt ist, und er scheint mit bestimmten Daten Probleme zu haben.
Gruß, Klaus
Die Titanic wurde von Profis gebaut,
die Arche Noah von einem Amateur.
... Und dieser Beitrag vom Amateurprofi....
  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 22:21 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