[..] Detection Ansi ou Unicode

Aide et conseils concernant AutoIt et ses outils.
Règles du forum
.
Répondre
ani
Niveau 11
Niveau 11
Messages : 1826
Enregistré le : lun. 23 juil. 2007 12:31
Localisation : Bureau
Status : Hors ligne

[..] Detection Ansi ou Unicode

#1

Message par ani »

Bijour,
je recherche un moyen simple pour vérifier une stucture de type ansi ou unicode
je crée quelque structure de type ANSI et en faisant appel au fonction (non modifié) d'autoit qui sont la plupart en UNICODE çà bug (normal).
Au debut j'utilisait la macro unicode, dans les fonctions mais çà va pas non plus.

Y a une soluce ?
Avatar du membre
jchd
AutoIt MVPs (MVP)
AutoIt MVPs (MVP)
Messages : 2284
Enregistré le : lun. 30 mars 2009 22:57
Localisation : Sud-Ouest de la France (43.622788,-1.260864)
Status : Hors ligne

Re: [..] Detection Ansi ou Unicode

#2

Message par jchd »

Qu'appelles-tu "structure" ? Peux-tu poster un exemple concret ?

S'il s'agit de déterminer si une chaîne ou un fichier texte est en ANSI ou en Unicode (UTF8) il n'y a pas de solution en général, car tout fichier ou chaîne UTF8 est une chaîne ANSI valide (l'inverse n'est pas vrai) indépendemment de la page de code (codepage) en vigueur.

Si tu imposes des conditions particulières sur le contenu, il y a peut-être une possibilité.
La cryptographie d'aujourd'hui c'est le taquin plus l'électricité.
ani
Niveau 11
Niveau 11
Messages : 1826
Enregistré le : lun. 23 juil. 2007 12:31
Localisation : Bureau
Status : Hors ligne

Re: [..] Detection Ansi ou Unicode

#3

Message par ani »

Un exemple

Code : Tout sélectionner

$iMsg = "Bijour Ani"
$Len = StringLen($iMsg) + 1
$tA = DllStructCreate("char msg[" & $Len & "]")
DllStructSetData($tA,"msg",$iMsg)
$pA = DllStructGetPtr($tA)
consolewrite($pA)
$tA = 0
comment puis-je savoir si la structure est de type ANSI ou UNICODE.
Sachant qu'ici c'est de l'ANSI

et aussi pourquoi le ptr de la structure n'est pas static sous seven ? y a t'il une autre methode ?

merci
Avatar du membre
jchd
AutoIt MVPs (MVP)
AutoIt MVPs (MVP)
Messages : 2284
Enregistré le : lun. 30 mars 2009 22:57
Localisation : Sud-Ouest de la France (43.622788,-1.260864)
Status : Hors ligne

Re: [..] Detection Ansi ou Unicode

#4

Message par jchd »

Tu peux t'inspirer de ce que j'utilise pour faire un dump d'une variable :

Code : Tout sélectionner

#include "..\include\dump.au3"
#include <string.au3>

Local $t = DllStructCreate("char[15];wchar[15]")
DllStructSetData($t, 1, "Chaîne ANSI")
DllStructSetData($t, 2, "Chaîne UCS2")
ConsoleWrite(_VarDump($t) & @LF)
avec l'include :
► Afficher le texte
L'idée est de sauvegarder le premier caractère de l'élément considéré, d'y écrire un caractère qui ne figure dans aucun jeu ANSI et voir si on relit le caractère Unicode écrit (dans ce cas c'est du wchar[xxx]) ou si on relit ? ce qui veut dire qu'on a affaire à du char[xxx].

Je fais de même pour différencier les champs byte, short, ushort, int, uint, int64.

Mais je ne comprends pas la partie "pointeur statique". L'adresse (figée) de la structure est affichée par mon dump et elle ne change pas spontanément (encore heureux !).
La cryptographie d'aujourd'hui c'est le taquin plus l'électricité.
ani
Niveau 11
Niveau 11
Messages : 1826
Enregistré le : lun. 23 juil. 2007 12:31
Localisation : Bureau
Status : Hors ligne

Re: [..] Detection Ansi ou Unicode

#5

Message par ani »

Pour la partie static, sous xp avec le code du dessus il me renvoie un pointeur (ex:0x01C41590 ~ 9015C401), que je peut inserer directement elle ne change pas, mais sous Seven elle deviend dynamique et là je comprend pas (3.3.6.x)
Avatar du membre
jchd
AutoIt MVPs (MVP)
AutoIt MVPs (MVP)
Messages : 2284
Enregistré le : lun. 30 mars 2009 22:57
Localisation : Sud-Ouest de la France (43.622788,-1.260864)
Status : Hors ligne

Re: [..] Detection Ansi ou Unicode

#6

Message par jchd »

Tu veux dire que l'adresse change à chaque lancement ? Bah, c'est normal et inévitable.
La cryptographie d'aujourd'hui c'est le taquin plus l'électricité.
Répondre