Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.184 Beiträge
Delphi 12 Athens
|
Re: Optimallösung gesucht: Little Endian <-> Big Endia
6. Mai 2008, 20:18
WideString+Ref: nein, denn Delphi leitet den Widestring an OleStr weiter und der kennt keine Refferenzzählung.
'ne "einfache" Lösung wäre:
Delphi-Quellcode:
procedure SwapString( Var S: WideString);
asm
mov eax, [eax]
test eax, eax
jz @exit
mov ecx, [eax - 4]
shr ecx, 1
@loop:
mov dx, [eax]
xchg dl, dh
mov [eax], dx
add eax, 2
dec ecx
jnz @loop
@exit:
end;
procedure SwapString( Var S: UCS4String);
asm
mov eax, [eax]
test eax, eax
jz @exit
mov ecx, [eax - 4]
@loop:
mov edx, [eax]
bswap edx
mov [eax], edx
add eax, 4
dec ecx
jnz @loop
@exit:
end;
$2B or not $2B
|
|
Zitat
|