JL35
Nombre de messages : 7112 Localisation : 77 Date d'inscription : 29/11/2007
| Sujet: Access violation après EXECUTE Mar 27 Oct 2009 - 14:52 | |
| Si je passe dans le sous-programme suivant: copie d'une valeur string dans le presse-papier de Windows (clip.exe est un petit utilitaire externe qui copie un fichier dans le presse-papier): - Code:
-
Clipd: v$ = vd$: Goto Clips Cliph: v$ = vh$ Clips: rem recopie du résultat v$ dans le presse-papier (forme décimale ou hexa) rem Item_Add 15, v$: Clipboard_Copy 15: Rem ne marche pas File_open_write 1, "Z:\Clip.txt": File_write 1, v$: File_Close 1 Execute "C:\Util\Clip.exe Z:\Clip.txt" Return j'ai systématiquement, au moment du Terminate, l'erreur suivante: que je n'ai pas si je ne passe jamais dans le S/P. Qu'est-ce que je fais de mal ? (Clipboard_Copy ne fonctionne que pour une valeur sélectionnée par l'opérateur dans le memo). PS: si j'appelle 4 fois le sous-programme, j'ai 4 fois l'erreur successivement au moment du Terminate. L'erreur est bien liée à la fonction Execute, mais je ne vois pas pourquoi. PS2: le programme appelé n'est pas en cause, j'ai essayé avec d'autres utilitaires, ou des fonctions MsDos (DIR), le phénomène est le même. | |
|
Jack Admin
Nombre de messages : 2394 Date d'inscription : 28/05/2007
| Sujet: Re: Access violation après EXECUTE Mar 27 Oct 2009 - 17:27 | |
| - Citation :
- j'ai systématiquement, au moment du Terminate, l'erreur suivante
Où est ta commande terminate ? A la lecture de ton post, je crois comprends que tu fais - Code:
-
gosub clips terminate et que cela provoque un plantage parce que clips a la structure suivante: - Code:
-
clips: execute "quelconque.exe" return Si j'exécute ce code minimal: - Code:
-
label clips gosub clips terminate end clips: execute "notepad.exe" return je n'ai pas de plantage. Ce code plante t'il chez toi? | |
|
JL35
Nombre de messages : 7112 Localisation : 77 Date d'inscription : 29/11/2007
| Sujet: Re: Access violation après EXECUTE Mar 27 Oct 2009 - 17:48 | |
| Non, effectivement, ton code ne plante pas non plus chez moi, mais je n'arrive pas à voir la différence de structure avec le mien. Je ne vais pas au Terminate après le Gosub, je me remets en attente d'événement dans la boucle. Le S/P est appelé par On_Click, voilà la fin du code adapté d'un exemple de Panoramic: FINAL_COLOR (13 et 14 sont des éléments du menu, ajoutés): - Code:
-
... On_Click 13, Clipd On_Click 14, Cliph
Memo 15: Left 15, 10: Top 15, 0: Width 15, 100: Height 15, 20: Hide 15
main_loop: red = position(2): d = red: GOSUB ConvHex: hr$ = h$ caption 8, str$(red) + " (h" + hr$ + ")" green = position(5): d = green: GOSUB ConvHex: hg$ = h$ caption 9, str$(green) + " (h" + hg$ + ")" blue = position(7): d = blue: GOSUB ConvHex: hb$ = h$ caption 10, str$(blue) + " (h" + hb$ + ")" if red<>sred or green<>sgreen or blue<>sblue color 1, red, green, blue sred = red: sgreen = green: sblue = blue vd$ = str$(red) + "," + str$(green) + "," + str$(blue) vh$ = "&h" + hr$ + hg$ + hb$ end_if wait 200 if clicked(12) = 1 then goto finished goto main_loop
finished: TERMINATE END
Clipd: v$ = vd$: GOTO Clips Cliph: v$ = vh$ Clips: rem recopie du résultat v$ dans le presse-papier (forme décimale ou hexa) rem Item_Add 15, v$: Clipboard_Copy 15: Rem ne marche pas (doit être sélectionné) FILE_OPEN_WRITE 1, "Z:\Clip.txt": FILE_WRITE 1, v$: FILE_CLOSE 1 EXECUTE "C:\Util\Clip.exe Z:\Clip.txt" RETURN
ConvHex: REM conversion décimal/hexa de d, résultat h$ sur 2 caractères h$="" REPEAT h$ = MID$("0123456789ABCDEF", 1+16*FRAC(d/16), 1) + h$ d = INT(d/16) UNTIL d <= 0 IF LEN(h$) < 2 THEN h$ = "0" + h$ RETURN D'ailleurs si je regarde ton post, je ne vois aucune différence entre ce que tu dis que je fais et ce que tu fais dans ton exemple (qui ne plante pas). Je précise bien que l'erreur se produit au moment du Terminate, uniquement si on est passé dans le s/p en cours d'exécution, donc l'erreur est différée, comme une ressource non rendue, un truc comme ça. | |
|
flowerkinzy
Nombre de messages : 100 Date d'inscription : 23/09/2009
| Sujet: Re: Access violation après EXECUTE Mer 28 Oct 2009 - 16:20 | |
| j'ai exactement le même problème avec le même type de programme! (exemple-type) - Code:
-
start: ... if clicked(...)=1 then goto fin goto start
fin: terminate end
Pour ce type de code, ça plante toujours mais pour ce qui suit, ça marche 2 fois sur 3 - Code:
-
start: ... if clicked(...)=1 terminate end end_if goto start
C'est pas si gênant que ça sauf pour l'utilisateur du programme bien sûr... | |
|
JL35
Nombre de messages : 7112 Localisation : 77 Date d'inscription : 29/11/2007
| Sujet: Re: Access violation après EXECUTE Mer 28 Oct 2009 - 17:24 | |
| Non, puisque ça ne se produit qu'au moment de quitter le programme, mais ça ne fait pas très propre. | |
|
Jean Claude
Nombre de messages : 5950 Age : 70 Localisation : 83 Var Date d'inscription : 07/05/2009
| Sujet: Re: Access violation après EXECUTE Mer 28 Oct 2009 - 18:00 | |
| D'accord avec JL35, Si on fait des programmes, c'est pour un utilisateur, donc il faut que çà soit Nickel. A+ | |
|
Contenu sponsorisé
| Sujet: Re: Access violation après EXECUTE | |
| |
|