Page 2 sur 2
Re: Supprimer des Include extraits à la fermeture du program
Publié : mer. 02/nov./2016 12:51
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)
Re: Supprimer des Include extraits à la fermeture du program
Publié : mer. 02/nov./2016 14:23
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.
Re: Supprimer des Include extraits à la fermeture du program
Publié : sam. 05/nov./2016 14:30
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...
Re: Supprimer des Include extraits à la fermeture du program
Publié : lun. 07/nov./2016 8:40
par blendman
salut
je ne connaissais pas moi non plus le coup du :
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.
Re: Supprimer des Include extraits à la fermeture du program
Publié : lun. 07/nov./2016 9:27
par Zorro
blendman a écrit :salut
je ne connaissais pas moi non plus le coup du :
Je ne savais pas qu'après un end, le programme pouvait faire encore quelque chose.
Merci du tuyau, Falsam

ha oui,mais non !
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
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
Re: Supprimer des Include extraits à la fermeture du program
Publié : lun. 07/nov./2016 10:00
par Micoute
Je crois bien que c'est tout vu !
Re: Supprimer des Include extraits à la fermeture du program
Publié : lun. 07/nov./2016 10:02
par Zorro
oui Fred a répondu que tout va bien
alors tout va bien
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

)
Re: Supprimer des Include extraits à la fermeture du program
Publié : lun. 07/nov./2016 10:48
par Ar-S
Je trouve ça illogique au possible mais au moins j'aurai appris encore quelque chose
Code : Tout sélectionner
Procedure Coucou()
MessageRequester("coucou","Merci de m'avoir greffé après le End",0)
EndProcedure
End coucou()
Re: Supprimer des Include extraits à la fermeture du program
Publié : lun. 07/nov./2016 10:52
par Zorro
Ar-S a écrit :Je trouve ça illogique au possible mais au moins j'aurai appris encore quelque chose
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 ! "

Re: Supprimer des Include extraits à la fermeture du program
Publié : lun. 07/nov./2016 11:24
par falsam
Zorro a écrit :faut etre quand meme borderline pour penser a faire ça
ou être curieux.
Re: Supprimer des Include extraits à la fermeture du program
Publié : lun. 07/nov./2016 14:03
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();
}