@Progi1984
Tu n'aurais pas un schéma fonctionnel de ton programme? ça serait plus cool en fait!
Sinon, pour rendre compatible le truc voici l'extrait essentiel à la modification.
Code : Tout sélectionner
! mov eax, 13 ; MODIFICATION 1/2
! mov edi, [p.p_SeqBegin]
! mov ebp, [p.p_SeqEnd]
! mov edx, [p.p_TextLine]
! mov ecx, ebp ; ecx = EndSeq
! sub ecx, edi ; - BeginSeq
! inc ecx ; + 1
LoadStringArrayLoop:
! mov ebx, edi ; Retient le début de la chaîne
! cld ; Fixe le sens croissant (convention)
! repne scasb ; Recherche le 13
! mov byte [edi - 1], 0 ; Remplace le 13 par le 0
! inc edi ; Passe le 10 ; MODIFICATION 2/2
Il y a uniquement 2 modifs à faire. J'ai commenté les deux seules lignes à modifier.
ça c'est l'endroit où l'on indique le numéro ASCII du premier caractères de fin de ligne. (ici, ça signifie que eax = 13)
Par exemple:
13, 10 on mettra 13
13 tout seul, on mettra 13
10 tout seul, on mettra 10
10, 13, on mettra 10
42, 20, on mettra 42, etc...
ça c'est la deuxième modif. Ici, ça signifie que edi = edi + 1
Si tu as deux caractères de fin, ben c'est bien, ça ne change pas. Si tu n'as qu'un caractère de fin (13 tout seul ou 10 tout seul), ben il faut supprimer cette ligne!!!
Par contre, cette procédure ne fonctionne qu'en ASCII 8 bits. Je ne sais pas ce qu'il en est pour les autres OS: sont-ils forcément en 8bits par caractère?
Ollivier
PS: Désolé pour le retard.