ISO 8859-1 Character Set ( Latin - 1) - Western / West European
C'est ce que je dis depuis le début, tu es sous Windows en Delphi7, par défaut en Français tu utilises du Window-1252 qui est un Latin1 modifié (œ ajouté par exemple)
oublie le "863 MS-DOS Canadian French", tu te mélanges les pinceaux !
Tu as un fichier dans un Charset inconnu mais tu le lit en Windows-1252, Delphi prend ce qu'il a ! Delphi 7 ne traduit rien tout seul !
Le problème c'est le Charset de ta liste, tu n'as toujours pas dit d'où ça vient, comment tu as obtenu cette liste, en plus, ne me dit pas que tu as des é ou ' qui passe bien !
Cela voudrait dire que tu as un mélange de CharSet au sein du même fichier ! La c'est mort !
Tu lit le fichier avec quoi ?
NotePad ? UltraEdit ? Word ?
Tu lit avec le fichier avec un TStream ? WriteBuffer ? un file of Rec ???
Tu as vérifié si le fichier avait un BOM ?
Avec un UltraEdit,
n'active
pas l'option "View | OEM Character Set" !
Veille à ce que ton fichier soit en ANSI (sous windows français, c'est le Windows-1252)
J'ai l'impression que tu génères toi même les erreurs lorsque tu manipules ton fichier d'index
Un Assembleur mal écrit peut-être plus lent qu'un code Delphi optimisé, fait moi confiance, je l'ai souvent vu !
Dans mon exemple, en utilisant du PAnsiChar, on pourrait améliorer les performances pour éviter que Delphi joue avec UniqueString
Sinon, une telle fonction sur 4285 fait moi rire, ça prendra pas plus de 10ms !
On écrit des codes sur le forum qui traitaient des listes d'un million de Strings en moins d'une seconde !
Tient toi traitement de conversion c'est proche (en plus SIMPLE) de
Y-a-t-il plus rapide pour enlever les accents ?
On avait fini avec un code Delphi à traiter 20 000 chaines en 13ms, et celui en ASM, environ 9ms (mais un code illisible, le gain vaut-il l'effort ?)
Surtout que le même code en D7 et D2007, serait plus rapide en 2007, car le SetLength de FastMM est 100 plus rapide que celui de BorlandMM
Dans ton code, la chaine ne changeant pas de taille, cela n'a pas d'importance !
Partager