Einzelnen Beitrag anzeigen

Benutzerbild von nicodex
nicodex

Registriert seit: 2. Jan 2008
Ort: Darmstadt
286 Beiträge
 
Delphi 2007 Professional
 
#21

Re: AnsiString mit fester Länge

  Alt 20. Apr 2009, 12:49
Zitat von GPRSNerd:
Ich habe an der Logik der Original-Funktion nix geändert [...]
Was nicht bedeutet, dass der Originalcode fehlerfrei sein muss

Zitat von GPRSNerd:
Es handelt sich laut Definition der Funktion um die Umwandlung von Unsigned 32bit Integers...
Es sieht so aus, als ob beabsichtigt wird, einen 4-Byte Integer in ein 4-Byte ACII-(Tag-)String zu konvertiren. Allerdings macht der Code nicht das, was beabsichtigt zu sein scheint (weil string[4] aus 5 Bytes besteht: Buffer[0] ist die Länge und Buffer[1..4] sind die Zeichen).

edit:
Delphi-Quellcode:
type
  TFourCC = record
    case Integer of
      1: (AsAnsi: array [0..3] of AnsiChar);
      4: (AsLong: LongInt);
  end;

function tEndInd.Put32s(AData: LongInt): AnsiString;
var
  FourCC: TFourCC;
begin
  FourCC.AsLong := AData;
  if MotorolaOrder then // SwapLong(AData)
    FourCC.AsLong := (Swap(LoWord(AData)) shl 16) or Swap(HiWord(AData))
  else
    FourCC.AsLong := AData;
  Result := FourCC.AsAnsi;
end;
  Mit Zitat antworten Zitat