2017-10-18 4 views
-1

Passé 2 heures à regarder des problèmes similaires et utilisé IsFileInUse, et bien sûr, il est utilisé. Il charge une image jpg en utilisant MapObjectsLt et bien que je comprenne un peu le verrouillage des fichiers, ce logiciel fonctionne parfaitement sous Windows 7, que nous avons utilisé au travail. Maintenant, j'ai déménagé à Windows 10 sur un nouvel ordinateur portable, et il ne fait que donner une erreur. Moi-même et Windows Explorer sont les seuls utilisateurs que je connais, donc personne d'autre n'a ce petit fichier texte qui positionne l'image quand elle est ouverte. Je pense que la différence réside dans Windows. J'ai utilisé ProcExp.exe pour regarder les processus qui pourraient verrouiller/utiliser ce fichier et il n'a pas pu trouver ce petit fichier de 6 lignes. J'ai changé mon code et j'ai d'abord déchargé l'image avant de changer le fichier jgw/text, après quoi il se recharge et est repositionné. Si MapObjectsLt a verrouillé le fichier et Windows 7 a permis le changement ?? Est-ce que je change cela en code d'une manière ou d'une autre, c'est-à-dire que je force l'enlèvement d'une poignée en sachant que personne ne compte utiliser le fichier?Programmation des erreurs d'accès aux fichiers dans Delphi 7 en utilisant ReWrite (f)

procedure SaveWorldFile(FileName:TFileName); 
    var f:TextFile; i:Integer; Ext:String[4]; ImageFile:TFileName; 
    begin 
     ImageFile:=FileName; 
     if Pos('.SID',UpperCase(FileName))<>0 then Ext:='.sdw' else 
     if Pos('.JPG',UpperCase(FileName))<>0 then Ext:='.jgw' else Ext:='.tfw'; 
     FileName:=ChangeFileExt(FileName,Ext); 

     //tried to close the handle in this function..because 
     //I believe at this point I am the only one using this file. 
     //Did not work but was part of my hunt for a solution 
     //I used for a different reason but found on this site 
     IsFileInUse(FileName); 

     //This section worked before and last line reloads the image 
     //The image is "untouched" only its position changes 
     //This worked under Windows 7 now Windows 10 does not 
     AssignFile(f,FileName); 
     ReWrite(f); //error under Windows 10 
     for i:=1 to 6 do WriteLn(f,P[i]:0:8); 
     CloseFile(f); 

     //Now reload the image 
     frmWRM.AddImageLayer(ImageFile); 
    end; 
+0

Bienvenue dans Stack Overflow! Veuillez décrire votre problème de façon plus concise afin que les autres puissent comprendre ce que vous avez déjà fait et quel est exactement votre problème. Voir https://stackoverflow.com/help/how-to-ask pour savoir comment améliorer votre question. –

+0

il serait utile si vous postez le code et l'exception que vous obtenez – GuidoG

Répondre

0

J'ai trouvé la solution sur votre site, des heures suivant l'apparition de ce que je pensais avoir été une erreur de Windows 10. Ce sont les autorisations sur les fichiers copiés sur un disque dur. Une fois modifié, mon logiciel fonctionnait normalement. Merci pour l'indice de votre site.