Hab mal ne Deutsche Version von „PureZIP_AsciiDosLatinUS_To_AsciiWinLatin1“ erstellt.
Wenn noch jemand Fehler entdeckt bitte melden.
Gegebenenfalls den ASCII Wert Posten, eventuell auch den ersatzwert wenn erforderlich.
Code: Alles auswählen
Procedure AsciiDosUS_To_AsciiWinWestern(StringPointer.l)
; Transforms a string from ASCII DOS Latin US to "Westeuropa" oder "Western") ISO 8859-1
! LEA Ebx, [TableConversion]
MOV Ecx, StringPointer ; --> INLINE ASM !
! Boucle :
! MOV al, byte [Ecx]
! TEST al, al
! JZ FinChaine
! CMP al, $80
! JNA CarSuivant
! ADD al, -$80
! XLATB
! MOV byte[Ecx], al
! CarSuivant:
! INC Ecx
! JMP Boucle
! TableConversion:
! DB $80, $FC, $82, $83, $E4, $85, $86, $87, $88, $89, $8A, $8B, $8C, $8D, $C4, $8F
! DB $90, $91, $92, $93, $F6, $95, $96, $97, $98, $D6, $DC, $9B, $9C, $9D, $9E, $9F
! DB $A0, $A1, $A2, $A3, $A4, $A5, $A6, $A7, $A8, $A9, $AA, $AB, $AC, $AD, $AE, $AF
! DB $B0, $B1, $B2, $B3, $B4, $B5, $B6, $B7, $B8, $B9, $BA, $BB, $BC, $BD, $BE, $BF
! DB $C0, $C1, $C2, $C3, $8E, $C5, $C6, $C7, $C8, $C9, $CA, $CB, $CC, $CD, $CE, $CF
! DB $D0, $D1, $D2, $D3, $D4, $D5, $99, $D7, $D8, $D9, $DA, $DB, $9A, $DD, $DE, $E1
! DB $E0, $DF, $E2, $E3, $84, $E5, $E6, $E7, $E8, $E9, $EA, $EB, $EC, $ED, $EE, $EF
! DB $F0, $F1, $F2, $F3, $F4, $F5, $94, $F7, $F8, $F9, $FA, $FB, $81, $FD, $FE, $FF
! FinChaine:
EndProcedure
gASCII.s = " Ä_ä_Ö_ö_Ü_ü_ß_ "
Debug ""
Debug gASCII + " <- Original"
Debug ""
AsciiDosUS_To_AsciiWinWestern(@gASCII)
Debug gASCII + " <- konvertiert"
Debug ""
AsciiDosUS_To_AsciiWinWestern(@gASCII)
Debug gASCII + " <- und zurück"
Debug ""
Debug ""