Einzelnen Beitrag anzeigen

Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
43.196 Beiträge
 
Delphi 12 Athens
 
#10

Re: Optimallösung gesucht: Little Endian <-> Big Endia

  Alt 6. Mai 2008, 19: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;
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests
  Mit Zitat antworten Zitat