Bonjour à tous,
Je converti l'application existante pour la rendre compatible unicode.
J'aurais besoin d'un petit coup de pouce sur la fonction suivante.
Pour des raisons de gains de temps, l'extraction de string (devenant des WideString) est effectuée par du code assembleur.
Ma question est donc : Est-ce que la fonction ci dessus permet l'utilisation de WideString ?
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44 function ASMParseStr(var P; const Sep :PChar) :ShortString; stdcall; var Count :byte; begin Count := Length(Sep)+1; Result := ''; asm PUSH EDI PUSH ESI MOV EAX, P MOV EBX, [EAX] @@1: MOV EDX, Sep MOV CL, Count MOV CH, byte ptr[EBX] @@2: CMP byte ptr[EDX], CH JZ @Found INC EDX DEC CL JNZ @@2 INC EBX JMP @@1 @Found:MOV ECX, EBX SUB ECX, [EAX] JZ @End MOV ESI, [EAX] MOV EDI, Result MOV byte ptr[EDI], CL INC EDI REP MOVSB @End: POP ESI POP EDI INC EBX MOV [EAX], EBX end; end;
J'ai essayé de modifier le type des paramètres, mais je n'obtiens pas le résultat escompté et il m'est difficile de savoir si le problème est dans cette fonction ou ailleurs...
Si quelqu'un a une idée...
Merci d'avance
Partager