Supprimer des Include extraits à la fermeture du programme

Vous débutez et vous avez besoin d'aide ? N'hésitez pas à poser vos questions
Marc56
Messages : 2198
Inscription : sam. 08/févr./2014 15:19

Re: Supprimer des Include extraits à la fermeture du program

Message par Marc56 »

#PB_FileSystem_Force ne concerne que l'attribut lecture seule
http://www.purebasic.com/french/documen ... efile.html

Code : Tout sélectionner

Test_File$ = GetTemporaryDirectory() + "Test.tmp"

If CreateFile(0, Test_File$)
     Debug "Fichier créé"
     OpenFile(0, Test_File$)
     WriteString(0, "Hello world")
     
     ; Le fichier est bloqué par windows car toujours ouvert
     If DeleteFile(Test_File$, #PB_FileSystem_Force)
          Debug "Fichier effacé"
     Else
          Debug "Ne peut effacer le fichier (non fermé)"
     EndIf
     
     ; On ferme le fichier
     CloseFile(0)
     
     ; Windows libère le verrou (qui n'a pas de rapport avec l'attribut +R)
     ; Donc on peut maintenant l'effacer
     If DeleteFile(Test_File$, #PB_FileSystem_Force)
          Debug "Fichier effacé (car fermé)"
     Else
          Debug "Ne peut effacer le fichier"
     EndIf    
EndIf
Il arrive parfois qu'un programme principal se plante, laissant ainsi des fichiers "bloqués" qui ne peuvent souvent être libérés et donc effacés qu'en redémarrant le système (ou par d'autres manip plus ou moins efficaces)
Avatar de l’utilisateur
Ar-S
Messages : 9540
Inscription : dim. 09/oct./2005 16:51
Contact :

Re: Supprimer des Include extraits à la fermeture du program

Message par Ar-S »

Si les autres solutions ne fonctionnent pas...
Inclure un exe dédié à l'effacement de tes .bin
A la fin de ton prog
=> extraction de l'exe d'effacement
=> lancement de cet exe via runprogram
=> l'exe d'effacement tue ton prog principal
=> il efface les .bin s'ils sont présent
=> il se ferme.
Lorsque tu reouvres ton soft principale, il vérifie et efface l'exe d'effacement s'il est la.
~~~~Règles du forum ~~~~
⋅.˳˳.⋅ॱ˙˙ॱ⋅.˳Ar-S ˳.⋅ॱ˙˙ॱ⋅.˳˳.⋅
W11x64 PB 6.x
Section HORS SUJET : ICI
LDV MULTIMEDIA : Dépannage informatique & mes Logiciels PB
UPLOAD D'IMAGES : Uploader des images de vos logiciels
Ollivier
Messages : 4197
Inscription : ven. 29/juin/2007 17:50
Localisation : Encore ?
Contact :

Re: Supprimer des Include extraits à la fermeture du program

Message par Ollivier »

Moi, j'ai eu plus fort que le déjà fort une fois :
création, modification, lecture et suppression de fichier : tout fonctionnait, sauf qu'en réalité, rien ne fonctionnait !!!!

C'était strictement virtuel. J'ai changé de clé USB, et c'était bon. Impossible de savoir pourquoi cette foutue clé se mettait en lecture seule systématiquement quand je la branchais sur un autre ordi que le mien.

Cette clé c'était celle que j'ai intégré dans une souris il y a sept ans. Mais le plus dingue, c'est qu'elle se coupe quand il y a un téléphone portable allumé à côté. Résultat : pour écrire sur cette souris, il faut être sur un seul ordinateur, le mien, et sans détenir un téléphone portable allumé.

Pratique, mais je ne sais pas pourquoi...
Avatar de l’utilisateur
blendman
Messages : 2017
Inscription : sam. 19/févr./2011 12:46

Re: Supprimer des Include extraits à la fermeture du program

Message par blendman »

salut

je ne connaissais pas moi non plus le coup du :

Code : Tout sélectionner

end Finish()
Je ne savais pas qu'après un end, le programme pouvait faire encore quelque chose.

Merci du tuyau, Falsam ;)

DAns la doc, on trouve :

Code : Tout sélectionner

Syntax

End [ExitCode]

Description

Ends the program execution correctly. The 'ExitCode' optional parameter can be specified if the program need to returns an error code (widely used in console programs). 

The 'ExitCode' can be further used e.g. with the ProgramExitCode() command. 
Avatar de l’utilisateur
Zorro
Messages : 2186
Inscription : mar. 31/mai/2016 9:06

Re: Supprimer des Include extraits à la fermeture du program

Message par Zorro »

blendman a écrit :salut

je ne connaissais pas moi non plus le coup du :

Code : Tout sélectionner

end Finish()
Je ne savais pas qu'après un end, le programme pouvait faire encore quelque chose.

Merci du tuyau, Falsam ;)
ha oui,mais non ! 8O 8O 8O 8O
je regrette , mais apres un End , ben rien ne devrai fonctionner !
surtout pas l'appel d'une procedure (je vois mal l'ajout dans la pile alors que le prg se termine .. )....

pour moi c'est un bug !
d'ailleurs, jamais j'aurai pensé a faire un truc pareil , faut etre quand meme borderline pour penser a faire ça :mrgreen: :lol:

exemple :

Code : Tout sélectionner


Declare proc_sense_sexecuter_apres_le_end()

calldebugger

; un prg bidon
For i=1 to 5
		debug "i="+str(i)
Next i

End proc_sense_sexecuter_apres_le_end() ; << ici il devrai y avoir une erreur de syntaxe (manque le ":" )




Procedure proc_sense_sexecuter_apres_le_end()
		debug "ceci ne devrai pas s'afficher !! c'est pas logique !" ; et pourtant ça s'affiche !!
EndProcedure

[reedit]
je pose la question sur le forum anglais ici :
http://forums.purebasic.com/english/vie ... c125611879

on verra bien
Avatar de l’utilisateur
Micoute
Messages : 2584
Inscription : dim. 02/oct./2011 16:17
Localisation : 35520 La Mézière

Re: Supprimer des Include extraits à la fermeture du program

Message par Micoute »

Je crois bien que c'est tout vu !
Microsoft Windows 10 Famille 64 bits : Carte mère : ASRock 970 Extreme3 R2.0 : Carte Graphique NVIDIA GeForce RTX 3080 : Processeur AMD FX 6300 6 cœurs 12 threads 3,50 GHz PB 6.20 LTS (x64)
Un homme doit être poli, mais il doit aussi être libre !
Avatar de l’utilisateur
Zorro
Messages : 2186
Inscription : mar. 31/mai/2016 9:06

Re: Supprimer des Include extraits à la fermeture du program

Message par Zorro »

oui Fred a répondu que tout va bien
alors tout va bien :roll: :)


mais il n'empeche que c'est pas tres logique ...
d'autant que la doc parle de valeur littérale genre End 3
il faudrait préciser cette possibilité d'appel d'une procedure dans la doc , ça s'rai pas mal :)

on dira que c'est une particularité de Purebasic
je suis peut etre trop dans la logique "Basic" ... (trop vieux pour ces co***ries :lol: )
Avatar de l’utilisateur
Ar-S
Messages : 9540
Inscription : dim. 09/oct./2005 16:51
Contact :

Re: Supprimer des Include extraits à la fermeture du program

Message par Ar-S »

Je trouve ça illogique au possible mais au moins j'aurai appris encore quelque chose :D

Code : Tout sélectionner

Procedure Coucou()
MessageRequester("coucou","Merci de m'avoir greffé après le End",0)  
EndProcedure

End coucou()
~~~~Règles du forum ~~~~
⋅.˳˳.⋅ॱ˙˙ॱ⋅.˳Ar-S ˳.⋅ॱ˙˙ॱ⋅.˳˳.⋅
W11x64 PB 6.x
Section HORS SUJET : ICI
LDV MULTIMEDIA : Dépannage informatique & mes Logiciels PB
UPLOAD D'IMAGES : Uploader des images de vos logiciels
Avatar de l’utilisateur
Zorro
Messages : 2186
Inscription : mar. 31/mai/2016 9:06

Re: Supprimer des Include extraits à la fermeture du program

Message par Zorro »

Ar-S a écrit :Je trouve ça illogique au possible mais au moins j'aurai appris encore quelque chose :D
oui d'autant qu'on peut quand meme faire :

Code : Tout sélectionner

Procedure Coucou()
		MessageRequester("coucou","Merci de m'avoir greffé après le End",0)  
EndProcedure

coucou()
End
ce qui me permet de pouvoir dormir tranquille :)

parceque quand meme , "End" ça veux dire "Fin" ... mais pas en Purebasic
en Purebasic, ça veux dire "meme pas mal ! " :lol:
Avatar de l’utilisateur
falsam
Messages : 7324
Inscription : dim. 22/août/2010 15:24
Localisation : IDF (Yvelines)
Contact :

Re: Supprimer des Include extraits à la fermeture du program

Message par falsam »

Zorro a écrit :faut etre quand meme borderline pour penser a faire ça
ou être curieux.
Configuration : Windows 11 Famille 64-bit - PB 6.20 x64 - AMD Ryzen 7 - 16 GO RAM
Vidéo NVIDIA GeForce GTX 1650 Ti - Résolution 1920x1080 - Mise à l'échelle 125%
Avatar de l’utilisateur
JohnJohnsonSHERMAN
Messages : 648
Inscription : dim. 13/déc./2015 11:05
Localisation : Allez, cherche...
Contact :

Re: Supprimer des Include extraits à la fermeture du program

Message par JohnJohnsonSHERMAN »

Ca me parait bizarre, mais somme toute assez utile...
Aprés tout en C on peut bien faire

Code : Tout sélectionner

#include <stdio.h>

int Truc()
{
printf("Hello World\n");
return 0;
}

int main() 
{
//truc pas trés utile mais possible
return Truc();
}
"Le bug se situe entre la chaise et le clavier"
Votre expert national en bogage et segfaults.

CPU : AMD A8 Quad core - RAM 8Gb - HDD 2To
  • Windows 10 x64 - PB 5.61 x64
  • Linux Ubuntu 16.04 LTS x64 (dual boot) - PB pas encore réinstallé
Répondre