GetClipboardText() bug

Archive.
ZapMan
Messages : 393
Inscription : ven. 13/févr./2004 23:14
Localisation : France
Contact :

GetClipboardText() bug

Message par ZapMan »

GetClipboardText() se plante quand le contenu du presse-papier fait plus de 60000 (et moins de 65000, je n'ai pas cherché la limite exacte).
Ca serait quand même plus propre s'il y avait au moins un message du genre "Contenu trop grand." au lieu d'un plantage.

J'ai aussi un bug trés étrange sur l'une de mes machines quand j'essaye de lancer GetClipboardText() avec comme contenu dans le presse-papier :

GetClipboardData_(LF)
*D = GlobalLock_(*hmem)

Ca le fait à chaque fois avec ce texte précis (il suffit que je change une lettre ou deux pour que ça ne le fasse plus). Mais sur mon deuxième poste, ça ne le fait pas (en tout cas pas avec ce texte là). Les deux postes sont sous XP.

Je pense qu'il serait interressant de faire une moulinette qui copie tout un tas de truc dans le presse-papier et qui essaye en suite de lancer cette fonction pour essayer de préciser ce qui la fait planter.

J'ai aussi un plantage avec la fonction GetClipBoardData quand les datas sont trop importants, alors que la fonction GetClipBoardData_ de l'API qui fait exactement la même chose ne plante pas.

C'est quand même fort de café !

Enfin et pour conclure, la fonction Mid sa vautre aussi quand on travaille sur une chaine trop longue (souvent mais pas toujours, c'est assez space (c'est le cas de le dire)).
Tout obstacle est un point d'appui potentiel.
Fred
Site Admin
Messages : 2652
Inscription : mer. 21/janv./2004 11:03

Message par Fred »

en fait, c'est la limitation des chaines de caratères qui fait ca. Tu peux utiliser la fonction: http://purebasic.myforums.net/viewtopic ... buffersize pour agrandir ce buffer. En tout cas, ca ne devrait pas planter, je vais corriger ca.
ZapMan
Messages : 393
Inscription : ven. 13/févr./2004 23:14
Localisation : France
Contact :

Message par ZapMan »

Merci beaucoup pour le tuyau, Fred. Mais ça n'explique pas pourquoi certains textes très courts comme mon
"GetClipboardData_(LF)
*D = GlobalLock_(*hmem)"
font parfois planter GetClipboardText !
Tout obstacle est un point d'appui potentiel.
ZapMan
Messages : 393
Inscription : ven. 13/févr./2004 23:14
Localisation : France
Contact :

Message par ZapMan »

Ok, j'ai pris le temps de bien tester. Résultat : Si on a saturé une fois la mémoire du buffer avec une chaine trop longue, le GetClipBoardText se met à planter sur certaines chaines courtes, bien particulières tant qu'on a pas relancé PureBasic.
Donc, pas de quoi se prendre le choux pour toi, Fred, à partir du moment ou tu bloque les chaines trop longues.
A ce sujet, et compte tenu de l'efficacité diabolique de ta bidouille pour augmenter la taille du buffer :
- plutôt que d'emettre un message quand la chaine dépasse la taille du buffer, pourquoi ne pas redimensionner le buffer à la volée ?
Tout obstacle est un point d'appui potentiel.
Répondre